私はDockerを使ってMongoDB Clusterをセットアップしています。新しいコンフィギュレーションで説明されているホストが1つもないレプリカセットmy-mongo-setはこのノードにマップされます
私はネットワークブリッジを共有する3つのコンテナを起動するbashスクリプトを持っています。私はネットワーク内のすべてのMongoDBデータベースに接続することができます。
NodeJSスクリプトは、クラスタのメンバーをネットワークに追加します。私は次のエラーを取得するaddMembers
を起動するたびに
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});
}
:
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スクリプト私の理解から
No host described in new configuration 1 for replica set my-mongo-set maps to this node
これは、MongoDBのは、特定のメンバーに接続できないことを意味します。しかし彼らはすべて自分の名前を持ち、ネットワークブリッジを共有しています。だから彼らはお互いに接続できるはずです。
この問題の原因は何ですか?
このコンテナの設定にコンテナはので、各ホストのための内部ポートを使用している、27017 – Matt
@Matt私はバカだよ、ありがとう!回答を作成する場合は、解決策として回答を受け入れることができます。 – Jamie
ポート内のポートを扱うときに心配する必要はありません。回答が追加されました。 – Matt