私はEC2上に3つのインスタンスを持っています。各インスタンスはサービスmongoを持ち、レプリカセット、つまりプライマリ(192.168.1.1)、セカンダリ(192.168.1.2 )およびアービタ(192.168.1.3)を含む。mongoに新しいメンバを追加し、アプリケーションでエラー例外を防ぐ
私はmongoに接続するいくつかのアプリケーションを持っています。
次のように私の質問は:
私はレプリカで他のメンバーを追加した場合、私は新しいメンバーを含めるように接続設定内のすべてのアプリケーションを変更する必要がありますか?
お願いします。
最後の.1がプライマリ、.2がセカンダリであると仮定し、最後に新しいメンバーを追加します.4。また、この新しいメンバーをアプリケーションデータベースの設定に含めません。プライマリが落ちましたが、アービタは.4を新しいプライマリにするようにipを選択します。すべてのアプリケーションが例外をスローし始めます。
私はどのように新しいアプリケーションを追加する必要があるのか、アプリケーションデータベースの構成を変更する必要はありません。 'n'のメンバーを追加しなければならないと想像してください。
私のアプリケーションがPHPであることを知って、ホスト構成を追加せずにプライマリだけを識別する方法はありますか?
難しいです。最初のホストセットがレプリカセットに永遠に残っていて、常に有効で利用可能なものが少なくとも1つある場合を除いて、アプリケーションの設定を最終的に変更する必要があります。この問題のさまざまな解決策は[tag:service-discovery]と呼ばれ、3番目のシステムに接続してアプリケーションがレプリカセットに接続できる場所を確認する必要があります。 –