私が非常に大きくて人気のあるウェブサイトをホストしているふりをしましょう。また、世界中に多数のWebサーバーが分散していると仮定します。同一のファイルを含む各Webサーバー。
自分でDNSデーモンを作成する場合、ISPがレコードを要求することに応じて異なるレコードを提供できますか?
はい。これは、要求しているクライアントIPに基づいて最も近いWebサーバーIPを提供する機能がDNSデーモンにあれば可能です。確かな典型的なDNSデーモンの展開ではありません。
探しているものを達成するためのBINDの設定に関する2つのリンクを見つけました。
Akamaiなどの多くのコンテンツ配信ネットワーク(CDN)にはこの機能があります。さらに優れているのは、宛先サービスでヘルスチェックを実行することです。これにより、クライアントは利用可能で、最高のパフォーマンスを提供するサービスにリダイレクトされます。
DNSのみを使用してユーザーに最も近いサーバーにユーザーを誘導する場合は、さまざまな地理的場所で独自のDNSをホストするために使用できる安価なVPSをいくつかセットアップすることをお勧めします。
DNSラウンドロビンは、異なるIPアドレスを持つ複数のAレコードがある場合、DNSサーバーはネームサーバーが照会されるたびにアドレスレコードの順序を変更するだけであるため、地理的位置ベースの負荷分散を実行するための優れた方法ではありません。
したがって、北米のDNSサーバーにAレコードを北米のWebサーバーに解決させ、ヨーロッパのDNSサーバーにAレコードをヨーロッパのWebサーバーに解決させることができます。 (これらの場所は単なる例であり、ポイントはDNSサーバーにAレコードをその特定のDNSサーバーに最も近いWebサーバーに解決させることです)
これは、クライアントが最も近いDNSサーバーを使用する必要があるためです。クライアントが最も近い/最も速いネームサーバーを選択する方法について詳しく読むことができます。ここで使用- https://superuser.com/questions/527116/how-does-my-browser-locate-the-nearest-dns-root-servers
これにより、DNSサーバーのみを使用しているときに希望する結果が得られるはずですが、はるかにエレガントな負荷分散商用サービスが存在します。
DNSプロトコルを操作する必要はありません。異なるIPを持つ複数のAレコードを単純に追加できます。 DNSサーバーはさまざまなAレコードをランダムな順序で返すため、ユーザーはさまざまなIPアドレスにランダムに分散されます。
ラウンドロビンDNSまたはロードバランサーを使用します。