我一整天都在嘗試為 Docker Compose 自動化的 MongoDB 事務設定副本集,但到目前為止沒有成功。不斷遇到錯誤 where mongo1(connected from mongo-setup) can't connect to mongo2andmongo3容器,說connection refused。
我得到的錯誤資訊:
{
"ok" : 0,
"errmsg" : "replSetInitiate quorum check failed because not all proposed set members responded affirmatively: mongo2:27018 failed with Error connecting to mongo2:27018 (172.30.0.5:27018) :: caused by :: Connection refused, mongo3:27019 failed with Error connecting to mongo3:27019 (172.30.0.4:27019) :: caused by :: Connection refused",
"code" : 74,
"codeName" : "NodeNotFound"
}
uncaught exception: ReferenceError: EOF is not defined :
@(shell):1:1
uncaught exception: SyntaxError: unexpected token: string literal :
@(shell):1:5
我的 Docker Compose:
mongo3:
hostname: mongo3
image: mongo:5.0.5-focal
networks:
- shopnetwork
volumes:
- ./data/mongo3:/data/db
ports:
- 27019:27019
restart: always
entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "shop-mongo-set" ]
mongo2:
hostname: mongo2
image: mongo:5.0.5-focal
networks:
- shopnetwork
volumes:
- ./data/mongo2:/data/db
ports:
- 27018:27018
restart: always
entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "shop-mongo-set" ]
mongo1:
hostname: mongo1
image: mongo:5.0.5-focal
networks:
- shopnetwork
volumes:
- ./data/mongo1:/data/db
ports:
- 27017:27017
depends_on:
- mongo2
- mongo3
restart: always
entrypoint: [ "/usr/bin/mongod", "--bind_ip_all", "--replSet", "shop-mongo-set" ]
mongo-setup:
image: mongo:5.0.5-focal
networks:
- shopnetwork
volumes:
- ./script:/script
depends_on:
- mongo1
- mongo2
- mongo3
entrypoint: ["/script/setup.sh"]
我的 setup.sh 初始化副本集:
#!/bin/bash
echo "Starting replica set initialize"
until mongo --host mongo1 --eval "print(\"waited for connection\")"
do
sleep 2
done
echo "Connection finished"
echo "Creating replica set"
mongo --host mongo1 <<EOF
config = {
"_id" : "shop-mongo-set",
"members" : [
{
"_id" : 0,
"host" : "mongo1:27017"
},
{
"_id" : 1,
"host" : "mongo2:27018"
},
{
"_id" : 2,
"host" : "mongo3:27019"
}
]
}
rs.initiate(config)
EOF
echo "Replica set created"
uj5u.com熱心網友回復:
因此,在使用 OP 進行測驗時,組合和主機網路中的網路配置存在混淆。
當在 docker-compose 中使用多個服務時,每個服務在 compose 網路中都是不同的主機,因此例如,如果我們有多個服務使用相同的埠,這不會成為問題,因為每個服務都有不同的主機名和 IP。
當ports從使用配接器映射docker network到host network使用bridge配接器時,通常service每個埠只能使用一個,出于安全和兼容性原因,最好使用大于 1024 的埠。
想要連接到不同的服務在同時compose file從但沒有外部連接WAN到compose network需要的ports撰寫檔案或部分-p在選項docker run命令不需要
修復所述錯誤配置后,該主題應該沒有任何問題
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/397267.html
