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

 

2、创建 mongo-primary
注意/data/db的映射,/data/db是存放数据库的目录,要自己根据实际情况映射
 #docker run -itd --name mongo-primary --network=host mongo --bind_ip localhost,192.168.59.102,test2 --replSet mongo-rep

 

  3、创建mongo-secondary1 

#docker run -itd --name mongo-secondary1 --network=host mongo --bind_ip localhost,192.168.59.103,test3 --replSet mongo-rep
4、创建 mongo-secondary2
#docker run -itd --name mongo-secondary2 --network=host mongo --bind_ip localhost,192.168.59.104,test4 --replSet mongo-rep

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.103192.168.59.104都会自动创建数据库

192.168.59.102上数据库中插入一条数据,192.168.59.103192.168.59.104都会自动插入同样的数据

模拟关闭192.168.59.102192.168.59.103被选举为新的主,在192.168.59.103上数据库中插入一条数据,192.168.59.104都会自动插入同样的数据

模拟重启192.168.59.102192.168.59.102恢复为的主,2同步到关闭时间内在192.168.59.103为主的时间插入的数据(三台服务器数据一样),192.168.59.103恢复为从

只能192.168.59.102(主)可写入数据,192.168.59.103(从)和192.168.59.104(从)是不可以写入数据的,只能读数据

 

posted @ 2022-06-27 09:46  leihongnu  阅读(1711)  评论(0编辑  收藏  举报