1 MongoDB集群方式
1.1 Master-Slave模式
1.2 Sharding方式
1.3 Replica-Set方式
2 Replica Set模式原理
副本集的方式也很容易理解,这里需要一个主节点,一个副节点,一个仲裁节点,如果主节点发生故障,那么会启用副节点,当主节点修复之后,主节点再次恢复为主节点,副节点不再是主节点的角色。副本集的方式还需要一个角色,那就是仲裁节点,它不存储数据,他的作用就是当主节点出现故障,选举出备节点作为主节点,继续保证集群可用。客户端连接时只连接主节点或者备节点,不用连接仲裁节点。
3 CentOS7上使用docker配置RS集群流程
3.1 准备机器
最好是三台机器,以便分配各自角色为:主,副,仲裁,假设IP如下:
192.168.0.3 ;192.168.0.4 ;192.168.0.5
3.2 各自安装Mongo镜像
3.3 各自启动mongo
以下按照角色主,副,仲裁各台机器各自进行启动
docker run -d —rm —name mongo-master -v /data/mongo/db/:/data/db -v /data/mongo/configdb/:/data/configdb -p 27017:27017 mongo:latest mongod —dbpath /data/db —replSet mongoreplset —oplogSize 128
docker run -d —rm —name mongo-salve -v /data/mongo-salve/db/:/data/db -v /data/mongo-salve/configdb/:/data/configdb -p 27017:27017 mongo:latest mongod —dbpath /data/db —replSet mongoreplset —oplogSize 128
docker run -d —rm —name mongo-arbiter -v /data/mongo-arbiter/db/:/data/db -v /data/mongo-arbiter/configdb/:/data/configdb -p 27017:27017 mongo:latest mongod —dbpath /data/db —replSet mongoreplset —oplogSize 128
3.4 切换到主节点进行角色配置
通过 docker exec -it mongo-master mongo指令进入主节点shell命令模式
3.5 创建配置文件并初始化
config = {_id:”mongoreplset”, version:1, members:[{_id:0, host:”192.168.0.3:27017”, priority:5}, {_id:1, host:”192.168.0.4:27017”, priority:2}, {_id:2, host:”192.168.0.5:27017”, arbiterOnly:true}]}
rs.initiate(config)
此时通过 rs.config() 命令就可以看到集群运行的状态了
4 RS模式下修改各节点角色
配置文件一旦通过rs.initiate进行初始化就不再在二次初始化,想要修改必须按照rs模式下指定shell命令进行,具体命令有哪些可以通过rs.help()查看
4.1 进入主节点
4.2 修改配置文件
4.2.1 拿到现有配置
4.2.2 让出主节点角色
cfg.members[0].priority=1 降低自己的优先级,此时父节点会自动成为主节点
4.2.3 切换到新的主节点修改配置
①在新主节点上,删除其余两个节点:rs.remove(“host:port”)
②重新加入之前的仲裁节点 rs.add(“host:port”),此时这个节点默认已经是副节点了
③通过指定shell命令addArb加入新的仲裁节点,也就是之前的旧主节点:rs.addArb(“host:port”)
