web-dev-qa-db-ja.com

Googleなどのサイトはどのようにして高可用性を実現しますか?

私が理解しているように、GoogleなどのWebサイトを開くと、ホスト名が検索され、ブラウザーは結果のIPアドレスを使用してサーバーに接続し、ページを取得します。

しかし、高可用性Webサイトは、この単一のIPアドレスに常に到達できるようにするにはどうすればよいでしょうか。それは単一障害点ではありませんか?

7
Chris

Webサイトの高可用性には、DNSラウンドロビンとIP負荷分散の2つの一般的なソリューションがあります。

DNSラウンドロビンとは、DNSサーバーにサイト名を照会するたびに異なるIPアドレスを取得することを意味します。これにより、複数のサーバーにリクエストを分散でき、指摘した単一障害点も回避できます。これはwww.google.comのDNS回答です(「google.com」ドメインの権威ネームサーバーの1つに尋ねられた場合):

> www.google.com
Server:  ns1.google.com
Address:  216.239.32.10

www.google.com  canonical name = www.l.google.com
www.l.google.com        internet address = 74.125.77.99
www.l.google.com        internet address = 74.125.77.104
www.l.google.com        internet address = 74.125.77.147

また同時に使用できる(そしてこの場合は非常に可能性が高い)別の一般的なソリューションは、IP負荷分散です。つまり、これらのIPアドレスは実際にはサーバーに割り当てられていませんが、代わりに負荷分散デバイス(またはリバースプロキシ、またはその他の同様のソリューション)に割り当てられ、複数のバックエンドサーバーの1つに要求を転送します。これらのサーバーの1つに障害が発生した場合、別のサーバーが使用されます。

詳細はこちら:

http://en.wikipedia.org/wiki/Round_robin_DNS
http://en.wikipedia.org/wiki/Load_balancing_(computing)

8
Massimo

Googleはおそらく同時に3つのアプローチを使用しています。

  • バックエンドには、リクエストを処理するためのサーバーがいくつかあります。彼らはすべて独自のIPアドレスを持っています。
  • それらの前には、背後のサーバーに要求を配布するハードウェアロードバランサーがあります。それぞれに1つのパブリックIPがありますが、30、60、またはそれ以上の物理サーバーをカバーする場合があります。それら自体は、大手メーカーからは冗長である可能性があります。
  • フロントでDNSラウンドロビンが使用される可能性があります。さらに多くの負荷バランダーへの負荷配分を可能にします。

実際、それはすべてうまく説明されています。

http://en.wikipedia.org/wiki/Google_platform

何百ものサーバーについて話していることに注意してください。ものでいっぱいの多くのデータセンター。

Googleは、サーバーがほとんど読み取り専用であるという点で非常に特別です。彼らはインデックスのコピーを取得し、新しい更新されたコピーで再イメージ化されるまでそれを提供します。応答クラスターに対して更新が行われることはありません。これはアプリケーションにとっては珍しいことですが、グーグルが賢いからではなく、要件が珍しいからです。

1
TomTom

IPアドレスは、それを保持している前のサーバーで問題が発生した場合に、正常なサーバーに動的に再影響(フェイルオーバー)する可能性があるため、必ずしもSPOFである必要はありません。

1
jlliagre

高可用性サイトは、DNSルートサーバーなどの多くのテクノロジーを使用して、いつでもアクセスできるようにしています。

実際、攻撃や失敗を防ぐために、次のように多くのソリューションを展開できます。

  • エニーキャストソリューション
  • DNSロードバランシング
  • 負荷分散とリバースプロキシ。
  • フェイルオーバーソリューション
0
Ali Mezgani