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


32

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

私を混乱させる部分は、最終的に、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アドレスでリッスンする負荷分散ハードウェアの単一の高価な部分があります。


素晴らしい質問ですが、ほとんどの人はそれを理解していません。誰かが詳細を答えてくれることを願っています。約5,000万ドルのCisco量子コンピューティングパワードロードバランサーかもしれません。
オリバー

回答:


9

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

いくつかの大規模なサイトがどのようにスケールするかを知りたいという好奇心の良い出発点は、高いスケーラビリティ-ここから始め、ウィキメディアアーキテクチャFacebookTwitterの高いスケーラビリティです。

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

ハードウェアとソフトウェアのロードバランサー/プロキシの比較や、DNSラウンドロビンとの比較など、このトピックに関する適切な説明については、「ロードバランシングWebアプリケーション」を参照してください


ありがとう、シム。質問をする前にこれらの記事のほとんどを読みましたが、具体的な答えは見つかりませんでした。だから、実際に誰かがウィキペディアのページを表示するたびにヒットする単一のハードウェアロードバランサー(または負荷分散ソフトウェアを実行している単一のマシン)がありますか?または、ボトルネックを回避する別のトリックがどこかにありますか?
イゴールオストロフスキー

私は確かにウィキペディアが今やっていることはないんだが、イカのシリーズを使用して、それらについて2008の会談から、この記事では、プロキシサーバーのリバースblogs.sun.com/WebScale/entry/scaling_wikipedia_with_lamp_7
シム

2
1つのIPアドレスをpingするエニーキャストアドレスもありますが、それらは「実際の」エンドポイントの範囲の1つに(ランダムに\任意に\意図的に)配布されます。Wikipedia \ Googleがこれを使用しているかどうかはわかりませんが、一部のルートDNSサーバーがこれを使用していると確信しています。ウィキペディアへの私のpingはあなたのものと一致します(そして私はアイルランドにいます)ので、彼らはそれを使用しているのではないかと疑っています。
ヘルビック

1
エニーキャストはDNSクエリで使用され、最も近いIPアドレスを取得します。次に、ロードバランサーがそのIPアドレスをリッスンし、要求をバッキングサーバーに分散します。
アンディシェラム

2
ウィキペディアはまた、多くの負荷分散のためにpdnのgeoipバックエンドを使用しています。詳細はこちら:wikitech.wikimedia.org/view/PowerDNSおよびこちら:wikitech.wikimedia.org/view/DNS
faultyserver

3

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

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

Wikipediaの場合:http : //www.datacenterknowledge.com/archives/2008/06/24/a-look-inside-wikipedias-infrastructure/


3

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するときにラウンドロビン方式で使用されます。



2

イゴール、あなたの質問は素晴らしく、多くの罪のない質問のように、多くの多くの答えがあり、すべて詳細のレベルが異なります。

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

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

ハードウェアは、実際には地理的に分散した複数のロードバランサーのクラスターの1つであり、DNSサーバーが決定した最も近いものに導かれました。


1

Googleは昨年、自社製のハードウェア・アーキテクチャ上のビットをリリースし、それがためになります良い読み取り


これは興味深い読み物ですが、私の特定の質問には答えません。私は特に、4つのGoogleのパブリックIPアドレスをリッスンし、何千ものサーバーに負荷を分散するハードウェアの部分に興味がありますか?
イゴールオストロフスキー

1

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


1
エニーキャストは、いくつかの中央同期(Facebookなど)がある場合、維持が難しいセットアップです。インスタンスがあまり通信を必要としないDNSサーバーや、静的コンテンツを備えたWebサーバーなどで非常にうまく機能します。

1
単一のIPは単一のサーバーを意味するわけではありませんが、DNSクエリではエニーキャストが使用されます。 DNSが使用します。TCP(HTTPで使用)を使用すると、応答するサーバーが明確に要求したサーバーであることを確認する必要があります。
アンディシェラム


1

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

このデータセンターのこれらの「クラスター」は、いくつかの異なるマシン(DBサーバー、Webサーバー、ロードバランサーなど)で構成されています。


1

FacebookやWikipediaなどの大規模なサイトは、スケーラビリティを実現するためにいくつかの異なる技術に依存しています。

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

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

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


0

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.