1

2 つのレプリカ セットを持つシャードを作成しました。各レプリカ セットには 3 つのmongodサーバーがあり、正常に動作します。また、mongosサーバーは動作しているようです。これがそのステータスです:

mongos> sh.status()
--- Sharding Status ---
  sharding version: {
        "_id" : 1,
        "version" : 3,
        "minCompatibleVersion" : 3,
        "currentVersion" : 4,
        "clusterId" : ObjectId("51c5be46dda9b0a5cd83ad64")
}
  shards:
        {  "_id" : "s1",  "host" : "s1/RemotePC_1:27017,RemotePC_1:27018,RemotePC_1:27019" }
        {  "_id" : "s2",  "host" : "s2/RemotePC_2:27017,RemotePC_2:27018,RemotePC_2:27019" }
  databases:
        {  "_id" : "admin",  "partitioned" : false,  "primary" : "config" }
        {  "_id" : "student",  "partitioned" : true,  "primary" : "s1" }
                student.grades
                        shard key: { "_id" : 1 }
                        chunks:
                                s1      1
                        { "_id" : { "$minKey" : 1 } } -->> { "_id" : { "$maxKey" : 1 } } on : s1 { "t" : 1, "i" : 0 }

しかし、コレクションに対してコマンド (insert、find、count、mongoimport) を実行すると、次のstudent.gradesエラーが返されます。

mongos> db.grades.count()
Sat Jun 22 20:07:00.968 JavaScript execution failed: count failed: {
        "code" : 10429,
        "ok" : 0,
        "errmsg" : "exception: setShardVersion failed host: RemotePC_2:27017 { oldVersion: Timestamp 0|0, oldVersionEpoch: ObjectId
        ('000000000000000000000000'), errmsg: \"exception: all servers down/unreachable when querying: My-PC:57017,My-PC:57018,My-PC:57019\", code: 8002, ok: 0.0 }"
} at src/mongo/shell/query.js:L180

なんで?何か不足していますか?

4

1 に答える 1

2

分割クラスターのすべてのメンバーは、他のすべてのメンバーに到達できる必要があります。

ローカル マシンで実行mongosしていると、ローカル マシンでも実行されている構成サーバーに到達でき、リモート マシンで実行されているシャードに到達できます。

ただし、リモート マシンのシャードがローカル マシンの構成サーバーに到達できない場合、クラスター内で適切に動作することはできません(これが表示されるエラー メッセージです)。

これに対する解決策は、"remote-PC" からルーティング可能な (別名、検索可能な) ホスト名として指定された構成mongosサーバー引数 ( ) で再起動することです。--configdb複数のmongosプロセスを実行している場合は、それらすべてに対してそれを行う必要があります。

于 2013-06-23T23:45:21.360 に答える