URL はどのようにして特定のサーバーの IP アドレスに解決されるのでしょうか?

URL はどのようにして特定のサーバーの IP アドレスに解決されるのでしょうか?

DNS が URL 名を IP アドレスに解決することは理解していますが、Google などの一部の Web サイトには 200,000 台を超えるサーバーを備えたデータ センターがあるのに、DNS がどのようにして 1 つの特定のサーバーの IP アドレスを生成するのか理解できません。

答え1

あなたが説明しているのは、ロードバランシングDNSと呼ばれるものです。ロードバランサーにはさまざまな種類がありますが、最も単純なのはラウンドロビンロードバランシングです。このリンクには、ラウンドロビン DNSこの方法は、1 つのサーバーやネットワークだけでは処理できないほどの大きな負荷や大量のトラフィックがある場合によく使用されます。

ラウンドロビン負荷分散は、クライアント要求をサーバー グループに分散する最も簡単な方法の 1 つです。ラウンドロビン ロード バランサは、グループ内のサーバーのリストを順にたどり、クライアント要求を各サーバーに順番に転送します。リストの最後に到達すると、ロード バランサはループバックして、再びリストをたどります (次の要求をリストの最初のサーバーに送信し、その次の要求を 2 番目のサーバーに送信するなど)。

ラウンドロビン ロード バランシングの主な利点は、実装が非常に簡単なことです。ただし、多くのラウンドロビン ロード バランサでは、すべてのサーバーが同じ (現在稼働中、現在同じ負荷を処理している、同じストレージ容量とコンピューティング容量を持つ) であると想定しているため、必ずしも最も正確で効率的なトラフィック分散が実現されるわけではありません。ラウンドロビン アルゴリズムの次のバリエーションでは、追加の要素が考慮され、より優れたロード バランシングが実現されます。

加重ラウンドロビン— サイト管理者が選択した基準に基づいて各サーバーに重みが割り当てられます。最も一般的に使用される基準は、サーバーのトラフィック処理能力です。重みが高いほど、サーバーが受信するクライアント要求の割合が大きくなります。たとえば、サーバー A に重み 3 が割り当てられ、サーバー B に重み 1 が割り当てられている場合、ロード バランサーはサーバー B に送信する要求 1 つにつき、サーバー A に 3 つの要求を転送します。

ダイナミックラウンドロビン— サーバーの現在の負荷とアイドル容量に関するリアルタイム データに基づいて、各サーバーに重みが動的に割り当てられます。

他にも方法はありますが、これで内部で何が起こっているのかを十分理解できると思います。

答え2

それは違います。

ウェブ ブラウザが IP アドレスに複数のリクエストを送信する場合、各接続で同じサーバーと通信しているという保証はありません。実際、そうではない可能性が高いです。ネットワーク トポロジ内の位置に応じて、単一の IP アドレスが異なるホストにルーティングされる可能性があります。 エニーキャスティングは、ネットワーク上でどのサーバーが「より近い」かに応じて、多数のサーバーにルーティングする 1 つの IP アドレスをアドバタイズする一般的な方法です。簡単に言うと、ネットワーク上に散在する境界ルーターは、IP アドレス ABCD に到達できることをアドバタイズし、ISP はリクエストを最も近いルーターにルーティングし、そのルーターはリクエストをホストに転送します。その IP アドレスの背後にあるホストは、着信リクエストをサーバー ファームに分配するロード バランサーである可能性があります。ネットワーク アドレス変換により、サーバーから返される応答は、同じ 1 つの IP アドレスから返されたように見えます。

関連情報