docker环境下mongo配合keepalived实现双机热备功能
主服务器172.17.1.35
从服务器172.17.1.37
VIP 172.17.1.38
高可用搭建参考:
https://blog.csdn.net/qq_35719977/article/details/109199144
一、启动容器
主
docker run -d -p 27017:27017 --name="mongo_master" hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs
docker run -d -p 27018:27017 --name="mongo_arbiter" hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs
从
docker run -d -p 27017:27017 --name="mongo_slave" hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs
docker run -d -p 27018:27017 --name="mongo_arbiter" hub.c.163.com/library/mongo --noprealloc --smallfiles --replSet rs
二、配置主服务器
登陆
docker exec -it mongo_master bash
mongo --port 27017
初始化配置文件
myconf = {"_id":"rs","members":[{"_id":0,"host":"172.17.1.35:27017",priority:99},{"_id":1,"host":"172.17.1.37:27017",priority:1},{"_id":2,"host":"172.17.1.38:27018",arbiterOnly:true}]}
执行初始化配置
rs.initiate(myconf)
三、设置从服务器节点
docker exec -it mongo_slave bash
mongo --port 27017
rs.slaveOk(); //承认自己是Secondary
四、看主节点状态
rs.isMaster(); //查看主节点配置信息
rs.status(); //查看状态
rs.conf(); //查看配置
六、测试
七、其他说明
当集群中的断开个数大于等于1/2时,整个集群都不可写
参考:
https://blog.csdn.net/luoni186/article/details/77369293
https://blog.csdn.net/jacson_bai/article/details/41941885