は環境です:私が達成したい何複数のデータセンターにMongoDBをセットアップするには?ここ
[ Data Center 1 ]
[ load balancer, ip: 45.45.45.45]
[ Server 1-A, internal ip: 10.0.0.1, external ip: 200.0.0.1 ]
[ Server 1-B, internal ip: 10.0.0.2, external ip: 200.0.0.2 ]
[ Server 1-C, internal ip: 10.0.0.3, external ip: 200.0.0.3 ]
[ Data Center 2 ]
[ load balancer, ip: 90.90.90.90]
[ Server 2-A, internal ip: 10.0.0.1, external ip: 201.0.0.1 ]
[ Server 2-B, internal ip: 10.0.0.2, external ip: 201.0.0.2 ]
[ Server 2-C, internal ip: 10.0.0.3, external ip: 201.0.0.3 ]
[ Data Center 3 ]
[ load balancer, ip: 88.88.88.88]
[ Server 3-A, internal ip: 10.0.0.1, external ip: 221.0.0.1 ]
[ Server 3-B, internal ip: 10.0.0.2, external ip: 221.0.0.2 ]
[ Server 3-C, internal ip: 10.0.0.3, external ip: 221.0.0.3 ]
は、各サーバが1台のMongoのサーバーをインストールすることで、唯一のデータセンター1台のサーバー(1-A、1-B、及び1- C)はプライマリにすることができます。データセンター2とデータセンター3のMongoDBサーバーはセカンダリのみです。アプリケーションは、Data Center 2と同じネットワーク上にあるため、Data Cetner 1に接続するよりも高速にアクセスできます。そのため、サーバーはレプリケートセットを使用しています。シャーディングはありません。
がレプリケート・セットを設定し、私はデータセンター2と3からホストを指定するには、外部の実際のIPアドレスを使用する必要があります:
ここに私の質問はありますか?例えば
config = { _id: 'foo', members: [ // data center 1 {_id: 0, host: '10.0.0.1:27017'}, {_id: 1, host: '10.0.0.2:27017'}, {_id: 2, host: '10.0.0.3:27017'}, // data center 2 {_id: 3, host: '201.0.0.1:27017'}, {_id: 4, host: '201.0.0.2:27017'}, {_id: 5, host: '201.0.0.3:27017'}, // data center 3 {_id: 6, host: '221.0.0.1:27017'}, {_id: 7, host: '221.0.0.2:27017'}, {_id: 8, host: '221.0.0.3:27017'} ] }
2意志ロードバランサとファイアウォールの背後にあるデータセンター内のサーバーので、IPアドレスは、外の世界に爆発することができない場合があります。ロードバランサのIPアドレスを使用することはできますか?もしそうなら、それをどうやるの?
データセンター2のサーバーを&にするには、priorty = 0を使用する必要があります。
他のアプリケーションがデータセンター2と3のMongoDBにどのように接続しているか(読み取り専用)?たとえば、アプリケーション(サーバー側のアプリケーション)はデータセンター2のネットワークにもあります。アプリケーションがDC2のMongoDBに接続するために使用するIPアドレスは何ですか?内部IPまたは外部IPを使用すべきですか?アプリケーションがDB内部ネットワークの外部にあり、DC2のMongoDBに接続してデータのみを読み込みたい場合は、ロードバランサIPまたは外部IPを使用する必要がありますか?
DC2とDC3のサーバーでデータを読み取ることができるようにするため、slaveOkの設定方法を教えてください。私はそれをプライマリの "slaveOK"に設定すべきですか、それともDC2とDC3の各サーバーに設定する必要がありますか?
DC1、DC2およびDC3がすべて個別の複製セットであるとします。例えばDC 1には唯一のプライマリとセカンダリがあります。 DC2には独自のプライマリとセカンダリのDC3があります。 DC1に変更(新しいレコードまたは更新)がある場合、DC2とDC3を簡単かつリアルタイムで更新する方法はありますか?
ありがとうございます。2)理由は私が欲しいからではありません。私はそれに縛られているからです。外部リクエストは内部サーバーに直接アクセスすることはできません。マッピングを実行するには、ファイアウォールまたはロードバランサを通過する必要があります。 – murvinlai
2)私はそれぞれの内部サーバー(ip1:27017、ip2:27018、ip3:27019)にポート27017,27018,27019を指しているかもしれません。 – murvinlai
アドバイスをいただきありがとうございます。 :) – murvinlai