私が抱えている問題は次のとおりです。分散アプリケーション (地理的に分散した 3 つのノード) があり、リクエストに応じて大きなデータ セットを返します。ネットワーク トラフィックを削減するには、クライアント リクエストを分散アプリケーションの最も近いインスタンスに転送する必要があります。いくつかのオプションを検討しましたが、それぞれについて疑問があります。ご意見をお聞かせください。
オプション 1: DNS を使用して複数の IP アドレスに解決します。例: - 英国のマシンから server.copmany.com に電話をかける場合 - DNS はこれを問題のシステムの英国の IP アドレスに解決します。 - 米国のマシンから server.copmany.com に電話をかける場合 - DNS はこれを問題のシステムの米国の IP アドレスに解決します。
質問: このような目的で DNS を構成することは可能ですか?
オプション 2: IP アドレスを最も近いサーバーに解決できるロード バランサーを使用します。
質問: これは可能だと思いますが、応答がロード バランサ経由で返されるのではなく、呼び出し元のシステムに直接返されるということはできません。
オプション 3: この種の問題に対する他の解決策を思いつきましたか?
ありがとう、マイク
答え1
私はオプション1を選択します。
どの DNS サーバーを使用しているかはわかりませんが、これは GeoIP をサポートする BIND で実行でき、さまざまな国のさまざまなユーザーに対して複数のビューを表示できます。「BIND GeoIP」を Google で検索すると、設定方法に関するチュートリアルが多数見つかります。
あるいは、このサービスを提供するサードパーティのサービス (キーワード: 「マネージド DNS、地理位置情報」) もあります。
答え2
HTTP だけであれば、geo-DNS を実行する代わりに、適切なサイトに 301 を提供できます。これはおそらくより簡単です。
おそらくうまく機能しないものの一つはエニーキャストです。これは見た目は良いかもしれませんが、クライアントがノード間を切り替えるケースを(かなりの支援なしでは)処理できません。
答え3
DNS経由
Bind がビューをサポートしていることは、以前使用したことがあるため、確実に知っています。他のサーバーも同様です。ビューを使用すると、要求元の IP アドレスに基づいて、任意のゾーン情報を提供できます。http://www.zytrax.com/books/dns/ch7/view.html
ラウンドロビンDNSを使用して3つのIPSのうちの1つを解決します。ただし、リクエストの送信元は関係ありません。
グーグルで見つけたの(http://www.dnsmadeeasy.com/services/global-traffic-director/) - 面白いと思うかもしれない