web-dev-qa-db-ja.com

MongoDbのレプリカセットにメンバーを追加する

MongoDbでレプリカセットを作成しようとしています。サーバーのホスト名は次のとおりです。

ホスト名ホスト名-1ホスト名-2

これらはそれぞれ、/ etc/hostsファイルに詳細な関連するすべてのホスト名があります(すべてUbuntu 10.04 64ビットを実行しています)

1つのノードでrs.initiateを実行すると、すべてが正常に開始されるようです。 rs.status();の実行ショー:

{
    "set" : "vega",
    "date" : ISODate("2012-01-22T19:15:55Z"),
    "myState" : 1,
    "members" : [
        {
            "_id" : 0,
            "name" : "hostname:27017",
            "health" : 1,
            "state" : 1,
            "stateStr" : "PRIMARY",
            "optime" : {
                "t" : 1327254848000,
                "i" : 1
            },
            "optimeDate" : ISODate("2012-01-22T17:54:08Z"),
            "self" : true
        }
    ],
    "ok" : 1
}

レプリカセットに新しいメンバーを追加しようとすると、問題が発生します。コマンドrs.add(hostname-1);を使用します。次のエラーが発生します。

{
    "assertion" : "need most members up to reconfigure, not ok : vega-1:27017",
    "assertionCode" : 13144,
    "errmsg" : "db assertion failure",
    "ok" : 0
}

ポート番号の有無にかかわらず、ホスト名、IPアドレスを使用する多くの組み合わせを試しましたが、常に同じ問題が発生します。ホスト名が解決されています。ホスト名-1にpingを実行しましたが、正常に動作します。

何がこの問題を引き起こしているのかについて誰かが何か考えを持っていますか?

残念ながら、Mongoのドキュメントには、実際のシナリオでレプリカセットを設定する例はなく、同じマシン上で3つのインスタンスを使用するだけで、明らかに役に立たない。

助けてくれてありがとう!

20
sicr

構成でこれを削除します。

bind_ip = 127.0.0.1

このオプションは現在、mongodbレプリカセットと互換性がありません。

14

このエラーは、(まだ)「稼働中」ではないノードを追加しているときに発生します。 「hostname-1」に到達できない(/ etc/hostsにない、DNSがない)か、到達可能であるがreplSet構成パラメーターが設定されたmongodbを実行していないようです。

10
phatduckk
 {
 "errmsg": "例外:再構成するにはほとんどのメンバーが必要ですが、問題ありません:server2:27017"、
 "code":13144、
 " ok ":0 
} 

Mongo2.4.9で上記のエラーが発生しました。ここでの私の間違いは、新しいレプリカメンバーのmongo構成でreplSetを指定しなかったことです。 rs.add("server2:27017")はその後うまく機能しました。

3
user241

残念ながら、Mongoのドキュメントには、実際のシナリオでレプリカセットを設定する例はなく、同じマシン上で3つのインスタンスを使用するだけで、明らかに役に立たない。

同意しました、それはかなり貧弱です。その例は、ドキュメントから完全に削除する必要があります。

レプリカセットを開始する別の方法があります。それは、rs.configure()コマンドを使用することです。 3つのノードすべてを一度に指定してから、rs.inititiate()を発行することもできます。

ここを参照 開始する前にすべてのノードを指定する例。

ここを参照 さまざまなコマンドの詳細については。

2
Gates VP

私が持っていた同様の問題、解決策はキーファイルを持つことでした。 http://docs.mongodb.org/manual/tutorial/deploy-replica-set-with-auth/#create-the-key-file-to-be-used-by-each-member-of -レプリカセット

2
Shimon Doodkin

2番目のノードをノード1に追加する前に、mongodbが2番目のノードで実行されていることを確認する必要がある場合があります。rs.add()を実行している場合は、rs.status()を確認します。

0
user3375540