使用Docker方式部署Mongodb多副本集(replSet)


linux主機ip:192.168.0.253

1. 創建網絡與容器

docker pull mongo
docker network create mongo-rs
docker run --name mongo1 -p 27027:27027 --net mongo-rs -d mongo mongod --replSet "rs0" --port 27027
docker run --name mongo2 -p 27028:27028 --net mongo-rs -d mongo mongod --replSet "rs0" --port 27028
docker run --name mongo3 -p 27029:27029 --net mongo-rs -d mongo mongod --replSet "rs0" --port 27029

2. 分別進入每個容器執行

docker exec -it mongo1 /bin/bash
echo "127.0.0.1 mongo1 mongo2 mongo3" >> /etc/hosts

docker exec -it mongo2 /bin/bash
echo "127.0.0.1 mongo1 mongo2 mongo3" >> /etc/hosts

docker exec -it mongo3 /bin/bash
echo "127.0.0.1 mongo1 mongo2 mongo3" >> /etc/hosts

3. 重啟每個容器

docker restart mongo1 
docker restart mongo2
docker restart mongo3

4. 進入一個容器初始化副本集:

docker exec -it mongo1 mongo --port 27027
rs.initiate({"_id": "rs0", "members": [{"_id":0, "host":  "mongo1:27027"}, {"_id": 1, "host": "mongo2:27028"}, {"_id":2, "host":  "mongo3:27029"}]})

5. 添加本地環境hosts:

  • Linux用戶在本地/etc/hosts文件中添加 127.0.0.1 mongo1 mongo2 mongo3
  • Windows 用戶在hosts加一行:192.168.0.253 mongo1 mongo2 mongo3

6. Application連接

  • mongodb://127.0.0.1:27027,127.0.0.1:27028,127.0.0.1:27029/databaseName?slaveOk=true&replicaSet=rs0&write=1&connectTimeoutMS=30000&readPreference=primary
  • mongodb://192.168.0.253:27027,192.168.0.253:27028,192.168.0.253:27029/databaseName?slaveOk=true&replicaSet=rs0&write=1&connectTimeoutMS=30000&readPreference=primary

7. Navicat連接


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM