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. node ->rman to RAC (迁移)

    版权声明:本文为博主原创文章.未经博主同意不得转载. https://blog.csdn.net/lmocm/article/details/34435699 *.audit_file_dest='/ ...

  2. c++简单的ATL COM开发和调用实例

    1.打开VS2010.新建ATL COM 项目.步骤:"文件" -->"新建" -->"项目",选择"Visual C ...

  3. 对象的释放Dispose和Close对比

    C#内存释放的几个方法对比: 而Close与Dispose这两种方法的区别在于,调用完了对象的Close方法后,此对象有可能被重新进行使用:而Dispose方法来说,此对象所占有的资源需要被标记为无用 ...

  4. NPOI之Excel——合并单元格、设置样式、输入公式、设置筛选等

    首先建立一个空白的工作簿用作测试,并在其中建立空白工作表,在表中建立空白行,在行中建立单元格,并填入内容: //建立空白工作簿 IWorkbook workbook = new HSSFWorkboo ...

  5. adb command

  6. Cobbler自动装机--1

    cobbler介绍 cobbler官网:http://cobbler.github.io/用个人的话来说就是cobbler就是一款通过网络快速安装Linux操作系统的产品.cobbler可以配置,管理 ...

  7. c#与C++类型转换网摘

    转载自 C++和C#转换 https://www.cnblogs.com/zjoch/p/4147182.html c#与C++类型转换,网摘 //c++:HANDLE(void   *)       ...

  8. oauth2 java 代码示例

    @RequestMapping("/oauth") @Controller public class OauthController { String clientId = &qu ...

  9. Java 解密错误InvalidKeyException: Illegal key size解决方法

    做解密操作,出现如下错误 java.security.InvalidKeyException: Illegal key size // 设置解密模式为AES的CBC模式 Cipher cipher = ...

  10. 《JavaScript设计模式与开发》笔记 1.面向对象的JavaScript

    多态 封装 原型模式 基于原型模式的继承javascript对象 1.多态 多态的实际含义是:同一操作作用于不同的对象上面,可以产生不同的解释和不同的执行结果.换句话说,给不同的对象发哦少年宫同一个消 ...