web-dev-qa-db-ja.com

マルチサイトの高可用性

高可用性が必要なSaaSアプリケーションがあります。すでに高価でよく管理されているHyper-Vフェイルオーバークラスターがありますが、現在、このクラスターをホストするデータセンターには5つの完全にオフラインになった1時間の停電です。ですから、2つの別個のデータセンターでサーバーを使用する方がより良いアプローチであるかどうか疑問に思っています。これら2つのサイト間ですべてのバックエンドファイルレプリケーションとデータレプリケーションが機能していると仮定すると、フロントエンドルーティングの処理方法について疑問に思います。この問題にどのように対処するのかは不思議ではありません。ロードバランサーが単一障害点になると、常に問題が発生します。

したがって、問題は...ロードバランサーが単一障害点にならないように、2つのホスティングサイト間に負荷分散をどのように設定できるでしょうか。各サイトに1つずつ、2つの個別のロードバランサーを使用する方法はありますか?ラウンドロビンDNSを検討すべきですか?

15
Mike

これを正しく行うには、次のものが必要です。

  • 2つのデータセンターにある2つの独立したインスタンス(既に決定済み)
  • 2つのデータセンター間の同期(既に決定済み)
  • 障害発生時にクライアントを一方から他方にリダイレクトする方法

これを行うには、2つの一般的な方法があります。単純なもの、そうでないもの。

DNS

すべての要求がプライマリDCに行き、2番目のDCは、最初のダウンタイム中にのみ使用されます。

あなたができることがDNSに非常に低いTTLが設定されている(たとえば、30秒、または5分)。は、DCがダウンした場合でも、DNSを更新するだけで5分以内に、すべてのクライアントが他のDCを指すようになります。

つまり、2つのDCのIPレイアウトが異なるため、データセンターのセットアップでこれを調整する必要があります。

BGP

基本的に、あなたがこの質問をしているなら、これはあなたの手の届かないところにあります。つまり、IPアドレスは同じままですが、データセンター間で「移動」されます。これには、高価なルーター、高価なIP範囲、およびAS番号とIP範囲のローカルレジストリへの高価なサブスクリプションが含まれます。

BGPルーターは、プライマリデータセンターでの広告を停止し、セカンダリデータセンターでの広告を開始します。次に、インターネットはオフラインのデータセンターを迂回し、トラフィックを新しいDCに送信します。


ESXiとvSphereを使用して仮想化されている場合、VMWareにはかなり以前から試してみた VMWare Site Recovery Manager と呼ばれる非常に優れた製品があります。 VM構成の同期を維持し、1番目のサイトがオフラインになったときに2番目のサイトでそれらを起動します。それは大金ですが。

14
Mark Henderson

ロードバランサーを負荷分散する必要があります。

DNSラウンドロビンでこれを行うことができますが、そのアプローチには多くの問題があります。エントリを必要以上にキャッシュするクライアントを制御したり、トラフィックを特定の場所に強制的に移動したりすることはできません。

これは、グローバルサーバーロードバランシング(GSLB)でも実行できます。これは、DNSを利用してインターネットから複数のデータセンターを可視化するより高度な方法です。つまり、トラフィックをスライスに分割するメカニズムをセットアップし、DNSを使用してスライスを選択します。クライアントのルックアップを行うように構成されたDNSリゾルバーのハッシュを使用します。他の人々は地理を使用して「最も近い」データセンターにルーティングします。そのデータセンターまたはクラスターの単一障害点がダウンした場合に、GSLBからIPをすばやく削除するためのメカニズムを追加する必要があります。

http://www.eukhost.com/web-hosting/kb/global-server-load-balancing/

最後に、一部の本当に高度な人々は、エニーキャストDNSでこの問題に取り組んでいます。これも、「最も近い」データセンターのアプローチを活用しようとしています。サービスをエニーキャストすることは、「ステートフルネス」を排除する必要があることを意味します。これは難しいかもしれません。

1
dmourati

数年後…しかしまだ探している人にとって、これらはDNSフェイルオーバーのための最も手頃な/シンプルなソリューションのようです:

1
Subimage