web-dev-qa-db-ja.com

mongodbは、セットの読み取り設定{モード:\ "primary \"}に一致するホストを見つけることができませんでしたか?

私はmonodbシャーディングをデプロイしています。3つのマシンにレプリカセットをデプロイしています。

dev41:27017,dev42:27017,dev193:27017

およびconfigsvrは3つのマシンで:

dev41:27019,dev42:27019,dev193:27019

マシンのモンゴ:

dev41:28000

最後に、レプリカをmongosに追加しようとします。

mongo dev41:28000/admin
sh.addShard('rs0/dev41,dev42,dev193')

次にエラーが発生しました:

{
    "ok" : 0,
    "errmsg" : "could not find Host matching read preference { mode: \"primary\" } for set rs0",
    "code" : 133
}
4
roger

私は同じ問題に直面し、Mongosログファイルを調べたところ、

内部ユーザーとしてホスト名を認証できません。エラー:認証に失敗しました。

ここを参照してください:内部ユーザー認証。SecKeyファイルとauth- Enabledで発生します。

解決

私はmongod.confファイルを開き、

security: authorization: enabled    
keyFile: /var/run/mongodb/secKey.key

行方不明だったので、それを追加してmongodを再起動しました。その後、Mongosからシャードを再度作成し、現在は機能しています。

2
Pravin Dwiwedi

同じ問題があり、レプリカセットの名前がaddShardコマンドで間違っているだけであることがわかりました。

1

これは@Miroslavの回答に追加されますが、/ etc/hostnameにあるホスト名は/ etc/hostsにあるホスト名と一致しなければなりませんでした(変更時に再起動することを忘れないでください)。

すべてのサーバーに共通の/ etc/hostsファイルを使用していましたが、一致するように/ etc/hostnameファイルを更新していませんでした。

幸運を

1
JerradPatch

同じ問題がありましたが、sh.addShard()を呼び出す前に、新しいシャードサーバー(mongosではない)にログインし、次のコマンドを呼び出す必要があるという問題がありました。

_rs.initiate({ _id : "REPLICA_SET_NAME", members: [ { _id : 0, Host : "HOSTNAME:27017" } ] })
_

その後、sh.addShard()を問題なく呼び出すことができました。

これは、私のmongo.confで_security: authorization: enabled_なしでも機能することに注意してください。

乾杯、

1
mils

同じ症状がありましたが、mongodbと設定ノード間でキーファイルに一貫性がないという問題がありました。

1

同じ問題がありました。私の構成の問題は、構成サーバーを実行するように設定したホストの/ etc/hostsに、新しいシャードとして追加しようとしている各シャードメンバーがないことでした。/etc/hostsに欠落しているシャードメンバーを追加したときに問題が修正されました。

1
Miroslav

このエラーは、addShard()コマンドで指定されているシャードホストに到達できない場合にも発生します。 mongosを終了し、telnetしてみます。

telnet dev42 27017 

Telnetが機能しなかった場合は、最初に修正する必要があります。

0
user2654744
  1. レプリカセット名が正しいことを確認する必要があります。
  2. 少なくともレプリカセットにマスターのIPまたはホスト名を追加してください。
  3. レプリカセットにマスターノードの正しいポートを追加してください。
  4. Mongosとrsで定義された正しいキーファイルを使用していることを確認してください。

その後、あなたはただ使う必要があります:

sh.addShard("your_rs_name/rs_master_ip_or_hostname:port")

モンゴスはあなたが追加したrsのすべてのメンバーを取得します。幸運を

0
Carlos

私には同じ問題であると思われるものがありました。

私の場合、問題は2つのシャードサーバーがダウンしたことでした。私は単にそれらを再び起動しただけで、コマンドが反映されるまでに少し時間がかかりました(削除を行ったが、一部のドキュメントがコレクションにまだ表示されていた)。

0
esca2791

アービターノードでmongodbサービスが実行されているかどうかを確認してください、これで問題が解決しました

0
Omkar