Mongodb 新配置1中描述的复制集my mongo set的主机没有映射到此节点
我正在使用Docker设置MongoDB集群 我有一个bash脚本,它启动了三个共享网桥的容器,以便它们可以相互通信。我可以连接到网络中的所有MongoDB数据库Mongodb 新配置1中描述的复制集my mongo set的主机没有映射到此节点,mongodb,docker,Mongodb,Docker,我正在使用Docker设置MongoDB集群 我有一个bash脚本,它启动了三个共享网桥的容器,以便它们可以相互通信。我可以连接到网络中的所有MongoDB数据库 docker rm -v -f mongo0 docker rm -v -f mongo1 docker rm -v -f mongo2 docker network create my-mongo-cluster docker run -d \ -p 30002:27017 \ --name mongo0 \ --net my-
docker rm -v -f mongo0
docker rm -v -f mongo1
docker rm -v -f mongo2
docker network create my-mongo-cluster
docker run -d \
-p 30002:27017 \
--name mongo0 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
docker run -d \
-p 30003:27017 \
--name mongo1 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
docker run -d \
-p 30004:27017 \
--name mongo2 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
node setupDatabase.js
NodeJS脚本将集群的成员添加到网络中
docker rm -v -f mongo0
docker rm -v -f mongo1
docker rm -v -f mongo2
docker network create my-mongo-cluster
docker run -d \
-p 30002:27017 \
--name mongo0 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
docker run -d \
-p 30003:27017 \
--name mongo1 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
docker run -d \
-p 30004:27017 \
--name mongo2 \
--net my-mongo-cluster \
mongo mongod --replSet my-mongo-set
node setupDatabase.js
NodeJS脚本:
async function configure() {
let database = await connect();
let adminDb = database.admin();
await addMembers(adminDb);
await returnStatus(adminDb);
}
async function connect() {
return await MongoClient.connect("mongodb://localhost:30002/test");
}
async function addMembers(admin) {
var config = {
"_id" : "my-mongo-set",
"members" : [
{
"_id" : 0,
"host" : "mongo0:30002"
},
{
"_id" : 1,
"host" : "mongo1:30003"
},
{
"_id" : 2,
"host" : "mongo2:30004"
}
]};
return admin.command({replSetInitiate : config});
}
async function returnStatus(admin) {
return admin.command({replSetGetStatus : 1});
}
每当我调用addMembers
时,都会出现以下错误:
新配置1中描述的复制集my mongo set的主机没有映射到此节点
据我所知,这意味着MongoDB无法连接到给定的成员。但他们都有自己的名字,共享一个网桥。因此,它们应该能够相互连接
知道是什么导致了这个问题吗?复制集配置为容器到容器,因此需要内部容器地址和端口
容器名称:27017
var config = {
"_id" : "my-mongo-set",
"members" : [
{
"_id" : 0,
"host" : "mongo0:27017"
},
{
"_id" : 1,
"host" : "mongo1:27017"
},
{
"_id" : 2,
"host" : "mongo2:27017"
}
]};
可以通过Docker映射端口进行连接,但是需要使用Docker主机可以响应的主机名/地址。它还将包括不必要的网络跃点,以便进出容器。这是容器到容器的配置,因此使用每个主机的内部端口,27017@Matt我是个白痴,谢谢!如果您创建一个答案,我可以接受您的答案作为解决方案。不用担心,在端口中处理端口很容易。回答已添加。这有助于我,我正在使用自定义端口,但不知道必须在主机字段中添加该自定义端口。