ARR をアクティブ/パッシブ (別名フェイルオーバー) モードで設定するにはどうすればよいですか?

ARR をアクティブ/パッシブ (別名フェイルオーバー) モードで設定するにはどうすればよいですか?

問題

私はいくつかのウェブファーム(異なるサイト用)を設定しようとしています。NLB+ARR アーキテクチャ6 台の VM があるとします。

  1. 2 台の VM の ARR+NLB クラスター。トラフィックを受信して​​コンテンツ サーバーに転送します。HTTP ホスト ヘッダー条件を含む URL 書き換えルールを使用して、要求を正しいコンテンツ サーバーにルーティングします。
  2. サイト 1 コンテンツ サーバー: 2 台の VM。ホスティングhttp://www.mysite1.com/
  3. サイト 2 コンテンツ サーバー: 2 台の VM。ホスティングhttp://www.mysite2.com/

すべて正常に動作し、両方の層で高可用性があることをテストしました。

さて、何らかの理由で、サイト 2 はアクティブ/パッシブ モードで動作する必要があります。これにより、1 つの VM のみがトラフィックを受信し、もう 1 つはフェイルオーバー用になります。ある意味では、NLB のシングル ホスト モードに似たものを ARR 用にしたいのです。

これを実現するにはどうすればよいでしょうか?

回避策

望ましい動作を実現するために、いくつかの間接的なアプローチを試しました。

  1. 負荷分散アルゴリズム。ラウンド アンド ロビンの重みを 1/0 に設定しようとしました。問題は、0 を設定できないことです。少なくとも 1 である必要があります。40 億 + smth / 1 を設定できますが、これによってランダムな要求が 2 番目のノードに送信されないことが保証されるかどうかはわかりません。
  2. ホスト名とサーバーの親和性。ホスト名アフィニティの詳細設定では、サイト 2 に割り当てるサーバーを 1 台だけ構成できます。これは機能しますが、問題は、2 つの ARR VM 間でルーティング テーブルが同期されていないことです。そのため、ARR1 はトラフィックを 1 つのノードにアフィニティ化し、ARR2 はアクティブ/パッシブではない別のノードにアフィニティ化することがあります。
  3. ホスト名アフィニティ + NLB 単一ホスト。前のアプローチの修正として、NLB をシングル ホスト モードに切り替えて、ルーティング テーブルの同期の問題を解決することもできます。この場合の問題は、サイト 1 の ARR ロード バランシングもオフにしていることです。
  4. ホスト名アフィニティ + NLB 単一ホスト + 2 つの IP アドレス。前のソリューションに 2 番目の IP アドレスを追加し、異なるモードで動作する 2 つの NLB クラスターを作成すると、すべて正常に動作するはずです。問題は、2 番目のパブリック IP に対して料金を支払いたくないことです。

どの解決策も完璧ではありません。

理想的な解決策のイメージ

NLB の場合と同じように、ARR をシングル ホスト モードにする方法を知りたいです。また、ノード間のルーティングを同期させる方法も知りたいです。

誰かそのやり方を知っていますか? または、別の方法を知っていますか?

答え1

完全にではないものの、効果があると思われる方法を1つ見つけました。ここアイデアは、「サーバー変数ハッシュ」負荷分散アルゴリズムと「HTTP_HOST」を変数として使用することです。この方法では、ARR のすべてのインスタンスが特定のホストを同じコンテンツ サーバーにマップします。マップされたサーバーが動作していない場合は、使用可能な別のサーバーにフォールバックすることをテストしました。

ただし、このソリューションの問題は、ホストがどのコンテンツ サーバーにマップされるかを制御できないことです。これはハッシュ関数によって決定されます。しかし、ある意味では正しいです。いずれかのノードをアクティブにすることに不安がある場合、信頼性の高いフェイルオーバーを期待できるでしょうか。すべてのコンテンツ サーバーを同時に確認する必要があります。

もう 1 つの問題は、サイトごとに複数のホスト名を使用できないことです。ホスト名が異なるサーバーにマッピングされる可能性が高いためです。

関連情報