通过Docker用两台主机配置并测试一下MongoDB复制集,比较详细
1. 建立Swarm集群 - 连接两台服务器
-
第一台主机设置为集群manager
docker swarm init -
查找Swarm Manager的token
docker swarm join-token worker -q得到token:
SWMTKN-1-226ce73rn808wmcy91zg68qfn6jq021rrh385e8nuyal0cz51g-bgy5jkn6tt606u209n1nd9i0f -
查找Swarm Manager的ip / port
docker node inspect self得到信息:
"ManagerStatus": { "Leader": true, "Reachability": "reachable", "Addr": "172.18.7.130:2377" } -
建立集群Overlay网络
docker network create --driver=overlay --atachable my-overlay-network -
第二台主机加入Swarm网络
docker swarm join --token 得到的token 得到的ip:得到的port
2. 两台主机上分别创建Container
-
创建Container
docker run \ -dit \ --name mongo1 \ --net my-overlay-network \ mongo mongod --replSet rs0 -
进入container
docker run -dit --name mongo1 --net my-overlay-network mongo mongod --replSet rs0docker exec -it mongo1 mongoshrs.initiate({_id: "rs0", members: [{_id: 0, host: "mongo1:27017"}, {_id: 1, host: "mongo2:27017"}]}) -
验证
rs.status()members: [ { _id: 0, name: 'mongo1:27017', health: 1, state: 1, stateStr: 'PRIMARY', uptime: 470, optime: { ts: Timestamp({ t: 1682403381, i: 7 }), t: Long("1") }, optimeDate: ISODate("2023-04-25T06:16:21.000Z"), lastAppliedWallTime: ISODate("2023-04-25T06:16:21.304Z"), lastDurableWallTime: ISODate("2023-04-25T06:16:21.304Z"), syncSourceHost: '', syncSourceId: -1, infoMessage: 'Could not find member to sync from', electionTime: Timestamp({ t: 1682403379, i: 1 }), electionDate: ISODate("2023-04-25T06:16:19.000Z"), configVersion: 1, configTerm: 1, self: true, lastHeartbeatMessage: '' }, { _id: 1, name: 'mongo2:27017', health: 1, state: 2, stateStr: 'SECONDARY', uptime: 18, optime: { ts: Timestamp({ t: 1682403381, i: 7 }), t: Long("1") }, optimeDurable: { ts: Timestamp({ t: 1682403381, i: 7 }), t: Long("1") }, optimeDate: ISODate("2023-04-25T06:16:21.000Z"), optimeDurableDate: ISODate("2023-04-25T06:16:21.000Z"), lastAppliedWallTime: ISODate("2023-04-25T06:16:21.304Z"), lastDurableWallTime: ISODate("2023-04-25T06:16:21.304Z"), lastHeartbeat: ISODate("2023-04-25T06:16:25.966Z"), lastHeartbeatRecv: ISODate("2023-04-25T06:16:25.467Z"), pingMs: Long("0"), lastHeartbeatMessage: '', syncSourceHost: 'mongo1:27017', syncSourceId: 0, infoMessage: '', configVersion: 1, configTerm: 1 } ],测试一下,大功告成