3 つの完全なインスタンスの Mongo レプリカ セットがあり、3 つの個別の AWS EC2 Linux インスタンス (すべて同じアベイラビリティ ゾーンですが異なるサブネット) にセットアップされています。同じアベイラビリティ ゾーン内の別の EC2 ボックスからレプリカ セットを読み書きできますが、リモート マシン (ローカル ボックス) からは読み取りしかできません。挿入または検索と変更を試みると、「プライマリの読み取り設定に一致するレプリカ セットのメンバーに接続できません」というエラーが返されます。
プライマリにのみ接続するように接続文字列を変更すると、書き込みは正常に行われますが、明らかに他のボックスには複製されません。
ローカル ボックスと 3 つの Mongo ボックス間のすべてのトラフィックを許可しようとしましたが、変化はありませんでした。また、他のボックスの dns の解決に問題がある可能性があることも読んだので、ホスト エントリを追加しましたが、これも役に立ちませんでした。すべてのトラフィックを開くと、3 つのボックスすべてに問題なく ping を実行できます。
ドライバーとレプリカ ボックスの間に必要なその他の構成はありますか?
私は c# Mongo 1.8.1 ドライバーを使用しています。私の接続文字列は次のようになります
mongodb://mongobox1,mongobox2,mongobox3/dbname?replicaSet=replicasetname&readpreference=primaryPreferred
アップデート:
また、ときどき (条件がわからない)、マスターを停止すると、ローカルから正常に書き込むことができ、マシンを元に戻すと、適切に同期されることもわかりました。しかし、マシンを元に戻すとすぐに、ローカルから書き込むことができなくなります。
ありがとう、
マット