web-dev-qa-db-ja.com

FacebookまたはWikipediaのIPアドレスでリッスンしているハードウェアは何ですか?

私の知的好奇心のために、FacebookやWikipediaなどの大規模なサイトがどのように機能するかを理解しようとしています。私はスケーラブルなサイトを構築するためのさまざまな手法について読みましたが、1つの特定の詳細についてはまだ困惑しています。

私を混乱させる部分は、最終的に、DNSがドメイン全体を単一のIPアドレス、またはラウンドロビンDNSの場合は少数のIPアドレスにマッピングすることです。

たとえば、wikipedia.orgにはタイプAのDNSレコードが1つだけあります。したがって、ウィキペディアにアクセスする世界中の人々は、DNSで指定された1つのIPアドレスにリクエストを送信する必要があります。

大規模サイトのIPアドレスをリッスンするハードウェアは何ですか?また、世界中のユーザーの要求から生じるすべての負荷をどのように処理できるでしょうか?

編集1:すべての回答をありがとう!エニーキャストは実行可能な答えのようです...特定のIPアドレスがエニーキャストルーティングされているかどうかを確認する方法を誰かが知っているので、これが本当に大規模サイトで実際に使用されているトリックであることを確認できますか?

編集2:トピックをさらに読んだ後、エニーキャストは通常​​、動的Webコンテンツには使用されないようです。エニーキャストは通常​​、UDP(DNSルックアップなど)、または静的コンテンツに使用されます。

注目すべき1つの興味深い点は、Facebookがprofile.ak.fbcdn.netを使用して、スタイルシートやJavaScriptライブラリなどの静的コンテンツをホストしていることです。この名前をpingするたびに、異なるIPアドレスから応答が返されます。ただし、これがエニーキャストの動作なのか、まったく異なる手法なのかはわかりません。

元の質問に戻ります。私が知る限り、大規模なサイトでも、少数のパブリックIPアドレスでリッスンする負荷分散ハードウェアが1つだけ高価になります。

32
Igor Ostrovsky

これは必ずしもこれを行うハードウェアの一部ではなく、拡張するように設計された完全なシステムです。これには、ハードウェアだけでなく、より重要なことに、アプリケーション設計、データベース設計(リレーショナルまたはそれ以外)、ネットワーキング、ストレージ、およびそれらすべての組み合わせが含まれます。

大規模なサイトのスケールが 高いスケーラビリティ-ここから開始 および )ウィキメディアアーキテクチャでの高いスケーラビリティFacebook および Twitter 例として。

DNSと単一のIPアドレスおよびラウンドロビンに関する質問に関して、これらのタイプのサイトは、単一のIPアドレスを提示する方法として 負荷分散 を使用することがよくあります。これは、専用のハードウェアロードバランサーによって、または汎用サーバーで実行されるソフトウェアを介して実行できます。ロードバランサーによって管理されているIPへの着信要求は、エンドユーザーに対して透過的に一連のサーバーに分散されます。

ハードウェアとソフトウェアのロードバランサー/プロキシの比較やDNSラウンドロビンとの比較など、このトピックに関する適切な説明については、 Load Balancing Web Applications

9
Sim

IPアドレスがエニーキャストを使用しているかどうかを確認する最も簡単な方法は、別の場所からtracerouteを実行することです。以下を試すことができます。traceroute.orgに移動し、場所を選択して、IPアドレス8.8.8.8(エニーキャストを使用するGoogleパブリックDNS)へのtracerouteを実行してみてください。オーストラリアのサーバーから8.8.8.8へのtracerouteがオーストラリアに留まっていることがわかります。

Pingの代わりに、ホスト名を検索してみてください。例: http://network-tools.com/default.asp?prog=dnsrec&Host=profile.ak.fbcdn.net

その名前の後ろにIPアドレスのリストが表示されます。これらのIPアドレスは、サーバーにpingするときにラウンドロビン方式で使用されます。

3
Rianto Wahyudi

エニーキャストは、TCP接続にも使用できます。接続が短命であるため、接続の存続期間中にルートが変更されないことを想定しています。これは、HTTP接続の場合は特に適切です(特に、接続: -Aliveは短いタイムアウトになるか、無効にされます)。

多くのCDN(CacheFly、MaxCDN、そしておそらく他の多く)は、DNSだけでなく、TCP接続(HTTP))のエニーキャストを実際に使用します。CacheFlyでホスト名を解決すると、同じIPアドレスが取得されますここでは、「最も近い」CacheFlyクラスターにルーティングされるだけです。ここでの「最も近い」とは、BGPパスの長さとメトリックの観点からであり、通常、単純な地理的距離よりもネットワーク遅延を測定するための優れた方法です。

特にウィキペディアの場合: http://www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/

3
rmalayter

イゴール、あなたの質問は素晴らしいです。そして多くの無実の質問と同様に、詳細のさまざまなレベルで、多くの多くの答えがあります。

ハードウェアの一部はWebサーバーです。明らかに;-)

ハードウェアの一部は実際にはロードバランサーのクラスターであり、それらはすべて共有ストレージからプルするように構成されているため、すべて同じ素材で同じように構成されます。

ハードウェアの一部は、実際にはロードバランサーのいくつかのクラスターの1つであり、地理的に分散されており、最も近いクラスターに誘導され、DNSサーバーによって決定されました。

2
Matt Simmons

FacebookやWikipediaなどの大規模なサイトは、いくつかの異なるテクノロジーを使用してスケーラビリティを実現しています。

これらのテクノロジーの1つはDNSです。 Dnsは、ラウンドロビンで負荷分散するように構成されています。 DNS設定は、リクエストの送信元を特定し、自分に最も近いサイトのアドレスを返すのに十分なほどスマートです。したがって、Digを実行すると複数のレコードが表示されますが、pingを実行すると常に同じアドレスが返されます。

サイトで最初にヒットするハードウェアは、リバースプロキシまたはロードバランサープールです。プールは、すべてのマシンが同じIPに応答するように設定されていますが、セッションヘッダーで新しいIPを返します。以降のリクエストはすべて同じノードを経由します。

大規模なサイトで採用されているロードバランサーは、高価な大規模な機器ではなく、LVSを実行する汎用サーバーです。 http://www.linuxvirtualserver.org/

1
user67823

Googleは昨年、自社開発のハードウェアアーキテクチャを少しリリースしましたが、これは good read になります。

1
squillman

単一のIPアドレスは必ずしも単一のサーバーを意味するわけではありません: http://en.wikipedia.org/wiki/Anycast

1
Justin

大規模なサイトでは、いくつかの異なる手法を併用しています。あなたが言及したそれらのウェブサイトは、ほとんどすべての国でいくつかのサーバーを持っています。ウェブサイトの訪問者のIPアドレスに基づいて、DNSサーバーは訪問者に最も近いクラスターのIPアドレスを返します。 アカマイ はこのようなサービスを提供しています(詳細については、このWebサイトの写真をクリックしてください。)

このデータセンターのこれらの「クラスター」は、いくつかの異なるマシン(DBサーバー、Webサーバー、ロードバランサーなど)で構成されています。Webサイトで提供しているものに応じて、静的コンテンツ用のサーバーなどがあります。

1

Googleのような大規模なサイトは、ほぼ間違いなく独自のハードウェアを設計しています。大規模なサイトでは、おそらくマルチレイヤースイッチを使用して、複数の実際のサーバーへの接続の負荷を分散します。 http://en.wikipedia.org/wiki/Multilayer_switch

0
Chris S