docker 搭建mongodb集群(多机)
至少需要3个节点,可以是1主1丛1仲裁节点,也可以是1主2从(但不能是1主2仲裁,仲裁节点不备份数据,无法升为主节点)。
一主一从的Replica Set也可以部署,但是效果等同于Master/Slave集群,主节点挂掉后,从节点无法自动提升为主节点。
192.168.59.102:mongo-primary(主)
192.168.59.103:mongo-primary1(从)
192.168.59.102:mongo-primary2(从)
1、编辑三台服务器的/etc/hosts
3、创建mongo-secondary1
4、进入mongo客户端mongo-primary,进行集群配置
#docker exec -it mongo-client bash
#mongo
>config = {_id:"mongo-rep", version:1, members:[{_id:0, host:"192.168.59.102:27017", priority:6}, {_id:1, host:"192.168.59.103:27017", priority:3}, {_id:2, host:"192.168.59.104:27017", priority:2}]}
激活配置
>rs.initiate(config)
登录
mongo-secondary1 和 mongo-secondary2
5、验证
关闭mongo-primary
#docker stop mongo-primary
192.168.59.103被选举为新的primary
重新启动mongo-primary后
#docker stop mongo-primary
192.168.59.102恢复primary,192.168.59.103恢复secondary
数据验证:
在192.168.59.102上新建数据数据库,192.168.59.103和192.168.59.104都会自动创建数据库
在192.168.59.102上数据库中插入一条数据,192.168.59.103和192.168.59.104都会自动插入同样的数据
模拟关闭192.168.59.102,192.168.59.103被选举为新的主,在192.168.59.103上数据库中插入一条数据,192.168.59.104都会自动插入同样的数据
模拟重启192.168.59.102,192.168.59.102恢复为的主,2同步到关闭时间内在192.168.59.103为主的时间插入的数据(三台服务器数据一样),192.168.59.103恢复为从