web-dev-qa-db-ja.com

Youtubeのような大企業が1つのIPだけでトラフィックを負荷分散する方法

youtube.comAレコードを調べると(たとえば)、IPアドレスが1つしか表示されません。

彼らが処理するトラフィックの量を考えると、これはどのように可能ですか?

彼らはエニーキャストをロードバランサーと一緒に使用していますか?

6
Victor Lft

あなたが見ているものにおそらく貢献するいくつかの機能があります:

  • anycastを使用すると、1つのIPを複数の場所にあるサーバーで処理できます。
  • ジオバランスは、現在のリージョンとデータセンターの負荷に応じて、異なるIPを提供します
  • ロードバランサーは通常、信頼性を向上させるために何らかの ホットIPフェイルオーバー を含みます

エニーキャストとジオバランシングは、ユーザーが複数のIPを目にすることなく負荷を分散するのに役立ちます。ロードバランサーは1つのデータセンター内の信頼性を向上させるため、これらの少数のIPが単一障害点になりにくいと期待されます。

現実は問題に適合しません

コメントの質問と確認にもかかわらず、YouTubeのIPがさらに表示されます。

$ Dig youtube.com A

; <<>> Dig 9.8.1-P1 <<>> youtube.com A
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 195
;; flags: qr rd ra; QUERY: 1, ANSWER: 11, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;youtube.com.           IN  A

;; ANSWER SECTION:
youtube.com.        300 IN  A   173.194.33.163
youtube.com.        300 IN  A   173.194.33.164
youtube.com.        300 IN  A   173.194.33.165
youtube.com.        300 IN  A   173.194.33.166
youtube.com.        300 IN  A   173.194.33.167
youtube.com.        300 IN  A   173.194.33.168
youtube.com.        300 IN  A   173.194.33.169
youtube.com.        300 IN  A   173.194.33.174
youtube.com.        300 IN  A   173.194.33.160
youtube.com.        300 IN  A   173.194.33.161
youtube.com.        300 IN  A   173.194.33.162

;; Query time: 14 msec
;; SERVER: 172.16.0.23#53(172.16.0.23)
;; WHEN: Wed Aug 26 23:45:18 2015
;; MSG SIZE  rcvd: 205
16
chicks

YouTubeのような大規模なサイトでは、いくつかの戦略が使われています。

  • 誰もが同じIPアドレスを取得するわけではありません。 DNSリクエストが異なると、返されるAレコードも異なります。時々、地理的指標に基づいて異なるIPアドレスが返され(「あなたに近い」IPを取得します)、一部のバリエーションはロードバランシングのみを目的としています。

  • 実際に「メイン」サイトに送られるリクエストはほとんどありません。 youtube.comからリクエストされたページのアセンブルに入るすべてのリクエストを調べると、それらの大部分が他のドメインに送られ、それらは個別に処理されていることがわかります。

  • たくさんのロードバランサー。リクエストが単一のIPアドレスに到達すると、非常に効率的で非常にスケーラブルなロードバランサーがリクエストを非常に多数のフロントエンドウェブサーバーに送信します。

  • 1つのリクエストを処理する多くのマシン。フロントエンドWebサーバーは、実際にリクエストを処理するために必要な作業をほとんど行いません。これらは主にHTTP解析とサーバーの層へのルーティング用ですmoreサーバーの各層は、各クラスターがページを生成する大規模なタスクの非常に小さく特殊な部分を実行します。私は手元にリファレンスはありませんが、数年前にGoogleのすべての検索リクエストにより、応答を生成するために100以上の個別のサーバーでコードが実行されるという記事を読んだことを覚えています。

少し問題が解決されることを願っています。他に質問がある場合は、コメントでの長いディスカッションではなく、厳密に指定された新しい質問を作成することをお勧めします。

11
womble

Google/Youtube(および他の多くの企業、特にCDN)は、多くのISPとサーバーを同じ場所に配置し、DNSはそれらのサーバーのIPアドレスを返します。そのため、一部の人には1つのIPしか表示されず、他の人には12のIPが表示される場合があります。

そのため、表示されるサーバーは、実際にはGoogleデータセンターにあるのではなく、ISPのヘッドエンドがどこにあっても、自宅/オフィスから数マイルにある可能性があります。 tracerouteユーティリティ(WindowsではTracert)やリバースDNSを使用して、サーバーがどこにあるのかがわかる場合があります。

したがって、これらのサーバーは、世界中のすべてのトラフィックを処理するのではなく、1つの都市からのトラフィックだけを処理します。時には、その都市内の1つのISPからのみのトラフィックを処理します。

もちろん、それらのサーバーはall Googleの知識を保持していません。それらはフロントエンドであり、おそらくかなりのキャッシングなども持っています。 Wombleが説明したように、彼らが知らないことは何でも、Googleのデータセンターに転送されます。

3
Kevin Keane