web-dev-qa-db-ja.com

高可用性を実現するためにバックアップサーバーへのTCP接続をフェイルオーバーするために仮想IPはどのように機能しますか?

フェイルオーバーの実装で仮想IPがどのように機能するかについていくつか質問があります。目標は、TCPサーバーで実行されているサービスの高可用性を実現することです。

問題は簡単に説明できます。

enter image description here

質問:

  1. プライマリサーバーを実行しているマシンAが停止したとします。マシン1の仮想IPソフトウェアはどのように機能しますか?マシンBのバックアップサーバーにリダイレクトするには、クライアントを再接続する必要がありますか?このマシン/接続スイッチは透過的に発生しますか?

  2. 仮想IPはソフトウェアまたはハードウェアを介して実装されていますか?使用/テストできるソフトウェアソリューションの例を教えてください。

  3. 仮想IPソフトウェアが単一障害点であるのはどうですか?マシン1が死んだ場合はどうなりますか?仮想IPソフトウェア自体に、ある種のフェイルオーバー/高可用性機能がありますか?

1
David

いくつかの用語と技術を明確にする必要があります。

表示されている画像は「ロードバランサー」の画像です。技術的には、ロードバランサーには通常、1つ以上の「バックエンド」サーバーに接続する1つ以上の「フロントエンド」IPアドレスがあります。これらのフロントエンドIPアドレスは「仮想IP」ではありません。

仮想IPについて話すときは、サーバークラスタリングについて話します。サーバークラスタリングでは、ロードバランサーはありません。代わりに、クラスター内のすべてのサーバーが同じIPアドレスを想定します。彼らはハートビートでお互いを監視し、共有するIPアドレスの要求にどのサーバーが応答するかを決定します。

これで、明らかに、1つ以上のIPアドレスを共有するクラスター化されたロードバランサーを作成できます。

だからここにいくつかの答えがあります:

1)マシン1は「仮想IP」ソフトウェアを実行していません。 「負荷分散」ソフトウェアを実行します。サーバーがダウンしたときにクライアントに何が起こるかは、ロードバランサーの構成とバックエンドアプリケーションの機能に完全に依存します。ステートレスバックエンド、または状態共有をもたらす共有ストレージがある場合、一方のサーバーに障害が発生すると、ユーザーは通常、セッションを中断することなく、もう一方のサーバーにシームレスに接続します。実際、このシナリオでは、クライアントが行う各要求は、同じセッション中であっても、実際には両方のサーバー間で負荷分散を行う可能性があります。その他の場合、ステートフルネスは共有されず、ユーザーは他のサーバーへの新しいセッションを開始する必要があります。

2)繰り返しますが、これは仮想IPではありません。仮想IPはクラスタリングテクノロジーです。ロードバランサーは、実際の物理的な設定に応じて、複数の公開IPアドレスを持つことができます。これは、ハードウェアまたはソフトウェアの両方で実行できます。ソフトウェアまたはハードウェアに関する特定の推奨事項は、ServerFaultの範囲外です。あなたはそのためにグーグルを使うことができます。

3)はい、ロードバランサーは単一障害点になる可能性があります。ロードバランサーがダウンすると、すべてがダウンします。真の高可用性を実装するには、多くのお金と技術的なノウハウが必要です。今日のクラウドコンピューティングの世界では、これはMicrosoftAzureやAmazonAWSなどのプロに任せるのが最善です。それらは、高可用性の冗長システムを実装しており、汚れを安くリースすることができます。

高可用性に関しては、すべての障害点を考慮する必要があります。

これには以下が含まれますが、おそらくこれらに限定されません。

  1. インターネット
  2. ルーター
  3. スイッチ
  4. ネットワークケーブル
  5. サーバー障害(電源、マザーボード、CPU、ディスクドライブ)
  6. ソフトウェアがクラッシュする
  7. DDoSおよびその他の過剰使用の問題

だから、長い話は短い。図面で説明されているシナリオは、高可用性環境を提供することに遠くはありません。

4
Appleoddity