1、创建network bridge
docker network create mongors-net
2、创建数据卷
docker volume create mongors1_data
docker volume create mongors2_data
docker volume create mongors3_data
3、创建3个mongodb
#没有开启身份验证--auth,集群里开启需要keyfile
docker run -itd --name mongors1 --network mongors-net -v mongors1_data:/data/db -p 27217:27017 -e LANG=C.UTF-8 --restart=always mongo --replSet mongors
docker run -itd --name mongors2 --network mongors-net -v mongors2_data:/data/db -p 27218:27017 -e LANG=C.UTF-8 --restart=always mongo --replSet mongors
docker run -itd --name mongors3 --network mongors-net -v mongors3_data:/data/db -p 27219:27017 -e LANG=C.UTF-8 --restart=always mongo --replSet mongors
4、初始化集群
推荐用IP+端口 来初始化集群
rs.initiate({
_id:"mongors",
members:[
{_id:0,host:"172.16.110.34:27217",priority:3},
{_id:1,host:"172.16.110.34:27218",priority:2},
{_id:2,host:"172.16.110.34:27219",priority:1}
]
});
最开始使用docker的network bridge来初始化的,结果发现注册的集群信息里,也是mongors1,mongors2这些节点信息。这些信息在这个network bridge以外是识别不了的
#登录主节点
docker exec -it mongors1 bash
#进入mongo
mongosh
#初始化,需要在primary节点执行
use admin
rs.initiate();
#添加secondary节点
rs.add('mongors2:27017');
#继续
rs.add('mongors3:27017');
rs.status();