最近、私たちがすでに実装していたシャーディングに加えて、MongoDBデータベースクラスタをSSLとレプリカセットを使用するように再設計しました。 SSLが機能するにはそれほど難しくありませんでした。私たちは秘密鍵と証明書を分割するだけでした。しかし、両方のmongosインスタンスに接続するためにNode.jsアプリケーションを取得することは、予想以上に困難であることが判明しています。mongooseを使用してnode.jsをMongoDBの断片化されたレプリカクラスタに接続する方法
我々はレプリカセットを実装する前に、私達はちょうど2個の破片、mongosルータを実行しているそれらのそれぞれを持っていた、とマングースで、私はそれを次の接続文字列を与えたが:
mongodb://Host1:27017,Host2:27017/DatabaseName
その後、オプションでは、に反対します接続、私は以下を渡した:
{mongos: true}
これはうまくいくようです。しかし、レプリカセットが実装された後、mongosオプションを渡すたびに、アプリケーションは決して接続されません。私たちのクラスタは、それぞれ2台のサーバからなる2つのレプリカセットに4つのMongoDBサーバが存在するように設定されています。各レプリカセットのマスターは、mongosルーターインスタンスも実行しています。以前と同じ方法で接続できるはずだと思っていましたが、決して接続しません。オプションなしでシャードを1つだけ使用して接続を作成すると、アプリケーションは正常に接続します。ただし、ルータインスタンス間に冗長性を持たせることがポイントであるため、これは理想的ではありません。誰かここにいくつかの洞察力を提供できますか?ここで
)は(sh.statusの出力です:
--- Sharding Status ---
sharding version: {
"_id" : 1,
"minCompatibleVersion" : 5,
"currentVersion" : 6,
"clusterId" : ObjectId("57571fc5bfe098f05bbbe370")
}
shards:
{ "_id" : "rs0", "host" : "rs0/mongodb-2:27018,mongodb-3:27018" }
{ "_id" : "rs1", "host" : "rs1/mongodb-4:27018,mongodb-5:27018" }
active mongoses:
"3.2.7" : 4
balancer:
Currently enabled: yes
Currently running: no
Failed balancer rounds in last 5 attempts: 0
Migration Results for the last 24 hours:
No recent migrations
databases:
{ "_id" : "Demo", "primary" : "rs0", "partitioned" : true }
私は(出力rs.configをするように頼まれた)、ここでは第一マスターノードから次のとおりです。
{
"_id" : "rs0",
"version" : 1,
"protocolVersion" : NumberLong(1),
"members" : [
{
"_id" : 0,
"host" : "mongodb-2:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
},
{
"_id" : 1,
"host" : "mongodb-3:27018",
"arbiterOnly" : false,
"buildIndexes" : true,
"hidden" : false,
"priority" : 1,
"tags" : {
},
"slaveDelay" : NumberLong(0),
"votes" : 1
}
],
"settings" : {
"chainingAllowed" : true,
"heartbeatIntervalMillis" : 2000,
"heartbeatTimeoutSecs" : 10,
"electionTimeoutMillis" : 10000,
"getLastErrorModes" : {
},
"getLastErrorDefaults" : {
"w" : 1,
"wtimeout" : 0
},
"replicaSetId" : ObjectId("57571692c490a699f61e3784")
}
}
あなたがrs.configを()の出力をダンプするだろうか? – profesor79
mongosシェルからrs.config()を実行しようとしましたが、これが表示されます: '2016-06-13T15:15:23.893 + 0000 E QUERY [thread1]エラー:エラー:{" $ err ":" 20}: ' –
apologies - rsはレプリカセットです.....' sh.status() 'を実行することができます – profesor79