1.本例使用1台Linux主机,通过Docker 启动三个容器 IP地址如下:

docker run -d -v `pwd`/data/master:/mongodb -p 27017:27017 docker.io/mongodb:3.6.3 /usr/sbin/init
docker run -d -v `pwd`/data/slaver:/mongodb -p 27018:27017 docker.io/mongodb:3.6.3 /usr/sbin/init
docker run -d -v `pwd`/data/arbiter:/mongodb -p 27019:27017 docker.io/mongodb:3.6.3 /usr/sbin/init

Server A: 172.17.0.2
Server B: 172.17.0.3
Server C: 172.17.0.4

2.搭建分布式集群

运用MongoDB的复制集(Replica Sets)+分片(Sharding)就能实现MongoDB分布式高可用的集群。

分片(sharding)能够增加更多的机器来应对不断增加的负载和数据,也不影响应用。

复制集(Replica Sets)能确保每个分片节点都具有自动备份、自动故障恢复能力。

1.集群的环境

架构图:

主机设计:

2.配置shard1的Replica Sets
./mongod -shardsvr -replSet shard1 -port 27017 -dbpath /mongodb/mongodb/bin/datas/shard11 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard11.log -bind_ip 172.17.0.2 -logappend -fork
./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /mongodb/mongodb/bin/datas/shard12 --oplogSize 100 --logpath /mongodb/mongodb/bin/logs/shard12.log -bind_ip 172.17.0.3  --logappend --fork
./mongod --shardsvr --replSet shard1 --port 27017 --dbpath /mongodb/mongodb/bin/datas/shard13 --oplogSize 100 --logpath /mongodb/mongodb/bin/logs/shard13.log -bind_ip 172.17.0.4  --logappend --fork
############################################################################################################
./mongo 172.17.0.2:27017
 config = {_id: 'shard1', members: [{_id: 0, host: '172.17.0.2:27017'},{_id: 1, host: '172.17.0.3:27017'},{_id: 2, host: '172.17.0.4:27017'}]}
 rs.initiate(config);
-----------------------------------------------------------------------------------------------------------------------------------
3.配置shard2的Replica Sets
./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard21 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard21.log -bind_ip 172.17.0.2 -logappend -fork
./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard22 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard22.log -bind_ip 172.17.0.3  -logappend -fork
./mongod -shardsvr -replSet shard2 -port 27018 -dbpath /mongodb/mongodb/bin/datas/shard23 -oplogSize 100 -logpath /mongodb/mongodb/bin/logs/shard23.log -bind_ip 172.17.0.4  -logappend -fork
############################################################################################################
 ./mongo 172.17.0.2:27017
 config = {_id: 'shard2', members: [{_id: 0, host: '172.17.0.2:27018'},{_id: 1, host: '172.17.0.3:27018'},{_id: 2, host: '172.17.0.4:27018'}]}
 rs.initiate(config);
-----------------------------------------------------------------------------------------------------------------------------------
4.配置config server
./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.2 -logappend -fork   #config server也需要dbpath
./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.3 -logappend -fork 
./mongod -configsvr -dbpath /mongodb/mongodb/bin/config -port 20000 -logpath /mongodb/mongodb/bin/logs/config.log -replSet configdb -bind_ip 172.17.0.4 -logappend -fork 
############################################################################################################
./mongo --host 172.17.0.2 --port 20000
configdb1={_id:'configdb',members:[{_id:0,host:'172.17.0.2:20000',priority:3},{_id:1,host:'172.17.0.3:20000',priority:1},{_id:2,host:'172.17.0.4:20000',priority:2}]}
rs.initiate(configdb1)
-----------------------------------------------------------------------------------------------------------------------------------
5.配置router server
在3台主机中分别运行mongos服务:
./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.2 -logappend -fork
./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.3 -logappend -fork
./mongos -configdb configdb/172.17.0.2:20000,172.17.0.3:20000,172.17.0.4:20000 -port 27020 -logpath /mongodb/mongodb/bin/logs/mongos.log -bind_ip 172.17.0.4 -logappend -fork
-----------------------------------------------------------------------------------------------------------------------------------
6.配置分片(shard cluster)
#连接到其中一台机器的端口27017的mongos进程,并切换到admin数据库添加分片shard1和shard2:
 ./mongo 172.17.0.2:27020
use admin
db.runCommand({addshard:"shard1/172.17.0.2:27017,172.17.0.3:27017,172.17.0.4:27017"})
db.runCommand({addshard:"shard2/172.17.0.2:27018,172.17.0.3:27018,172.17.0.4:27018"})
db.runCommand({enablesharding:"work"})
db.runCommand({shardcollection:"work.status",key:{_id:1}})
-----------------------------------------------------------------------------------------------------------------------------------
7.验证
其它命令:
db.dropDatabase() --删除db

Mongodb集群搭建之 Sharding+ Replica Sets集群架构的更多相关文章

  1. Mongodb集群搭建之 Sharding+ Replica Sets集群架构(2)

    参考http://blog.51cto.com/kaliarch/2047358 一.概述 1.1 背景 为解决mongodb在replica set每个从节点上面的数据库均是对数据库的全量拷贝,从节 ...

  2. windows+mysql集群搭建-三分钟搞定集群

    注:本文来源:  陈晓婵   <  windows+mysql集群搭建-三分钟搞定集群   > 一:mysql集群搭建教程-基础篇 计算机一级考试系统要用集群,目标是把集群搭建起来,保证一 ...

  3. 学习MongoDB(Troubleshoot Replica Sets) 集群排除故障

    Test Connections Between all Members(集群中节点网络测试) 在进行Mongodb集群时,每个节点的网络都需要互动,假设有3个服务器节点. m1.example.ne ...

  4. MongoDB集群搭建---副本和分片(伪集群)

    参考地址:https://blog.csdn.net/weixin_43622131/article/details/105984032 已配置好的所有的配置文件下载地址:https://files. ...

  5. MongoDB分布式集群搭建(分片加副本集)

    # 环境准备 服务器 # 环境搭建 文件配置和目录添加 新建目录的操作要在三台机器中进行,为配置服务器新建数据目录和日志目录 mkdir -p $MONGODB_HOME/config/data mk ...

  6. 学习MongoDB(三) Add an Arbiter to Replica Set 集群中加入仲裁节点

    Add an Arbiter to Replica Set 在集群中加入仲裁节点,当集群中主节点挂掉后负责选出新的主节点,仲裁节点也是一个mongo实力,但是它不存储数据. 1.仲裁节点消耗很小的资源 ...

  7. k8s集群搭建之二:etcd集群的搭建

    一 介绍 Etcd是一个高可用的 Key/Value 存储系统,主要用于分享配置和服务发现. 简单:支持 curl 方式的用户 API (HTTP+JSON) 安全:可选 SSL 客户端证书认证 快速 ...

  8. redis集群主从集群搭建、sentinel(哨兵集群)配置以及Jedis 哨兵模式简要配置

    前端时间项目上为了提高平台性能,为应用添加了redis缓存,为了提高服务的可靠性,redis部署了高可用的主从缓存,主从切换使用的redis自带的sentinel集群.现在权作记录.

  9. hbase 集群搭建(公司内部测试集群)

    我用的是cdh4.5版本:配置文件:$HBASE_HOME/conf/hbase-env.shexport JAVA_HOME=$JAVA_HOMEexport JAVA_HOME=/home/had ...

随机推荐

  1. Jmeter分离登录事务的另一种方式

    最近,遇到了一个困扰很多人的问题. 情景如下: 业务流程:登录一个网站,反复进行充值. 通常的做法是使用jmeter对登录和充值的接口进行反复的执行: 但是实现的方法却不能完美的贴合业务流程. 并且, ...

  2. ThinkPHP3 和 ThinkPHP5 不是一个团队做的

    ThinkPHP3 和 ThinkPHP5 不是一个团队做的 发现流年好幽默. 这个帖子源于一个 ThinkPHP 用户被客户投诉,然后反过来骂 ThinkPHP 垃圾. 不过最后想通了道歉. 开源需 ...

  3. mongodb之 3.4.0 mongodb sharing 副本集群搭建

    系统系统 centos6.5三台服务器:10.100.25.42/43/44安装包: mongodb-linux-x86_64-rhel62-3.4.0.tgz 服务器规划:mongos mongos ...

  4. laravel 打印完整sql语句

    laravel5 用DB自带的getQueryLog方法直接打印: DB::connection()->enableQueryLog(); // 开启QueryLog \App\User::fi ...

  5. jmeter之Throughput Controller

    jmeter之Throughput Controller Throughput Controller 这个控制器的命名不准确,因为它不是用来控制吞吐量的.吞吐量控制器允许用户控制执行频率,jmeter ...

  6. pyhanlp 停用词与用户自定义词典功能详解

    hanlp的词典模式 之前我们看了hanlp的词性标注,现在我们就要使用自定义词典与停用词功能了,首先关于HanLP的词性标注方式具体请看HanLP词性标注集. 其核心词典形式如下: 自定义词典 自定 ...

  7. tomcat中catalina是什么

    catalina 就是Tomcat服务器使用的 Apache实现的servlet容器的 名字. Tomcat的核心分为3个部分: (1)Web容器---处理静态页面: (2)catalina --- ...

  8. mwan3多wan叠加成功

    参考: http://www.right.com.cn/forum/forum.php?mod=viewthread&tid=147109&highlight=mwan3 wan口为路 ...

  9. Cygwin使用2-心得

    引用:http://www.jb51.net/article/6236.htm 1.在cygwin里访问Windows盘 cd /cygdrive/c cd c: 2.整合cygwin命令到Windo ...

  10. Delphi调用DLL中的接口

    问题描述: 具体问题就是在隐式使用接口变量后,在FreeLibrary执行后,就会出现一个非法访址的错误. 这个错误的原因就是在FreeLibrary后,DLL以的代码均为不可用状态,而在代码执行完整 ...