web-dev-qa-db-ja.com

Microsoft Network LoadBalancerに対するMicrosoftClusterの利点

最近まで、MicrosoftNLBはアプリケーションレベルではなくOS /マシンレベルで機能すると想定していました。つまり、NLBはマシンのハートビートを監視して、マシンが稼働しているかどうかを確認し、特定のノードがダウンしている場合はオフにします。

しかし、私はこれを見つけました コメント 異なる主張をするサーバー障害の質問で。コメントによると

NLBは、開いているTCPポートに接続をルーティングするだけです。アプリケーションがポートを閉じると、ポートが再び開かれるまで、NLBは接続をそのポートにルーティングしなくなります。

  1. 上記は本当ですか? NLBはポートレベルでアプリケーションを監視しますか?
  2. (1)の答えが「はい」の場合、サービスがダウンしている場合とサービスがハングしている場合の両方に切り替わりますか、それともこれらのケースの1つだけに切り替わりますか?
  3. NLBが実際に上記のすべてを実行する場合、クラスタリングを使用する場合はどうなりますか?唯一の利点は、クラスタリングの場合、複製されたデータが必要ないことです。しかし、全体的なクラスタリングは、より高価なソリューションになります。
  4. 上記の質問に対する答えは、MS SQL Serverのような標準製品と私自身のサービスでは異なりますか、それとも同じですか?
  5. NLBが上記を実行せず、OS /マシンレベルのハートビートを実行するだけの場合、クラスタリング以外に、自分のサービスにHAとスイッチオーバーを提供する別の方法はありますか?
1
user93353

それはNLBがどのように機能するかではありません。 NLBポートルールは、NLBホスト間で負荷分散されるポートを決定します。 NLBポートルールに「バインド」されていないトラフィックは、NLBホスト間で負荷分散されません。 NLB しませんポートルールに関連付けられたポート/ポートを監視し、その/それらのポート/ポートのクローズまたはその/それらでサービスを提供するアプリケーションのクラッシュ時にそのホストへのNLBクラスタートラフィックを無効にします特定のホスト上のポート/ポート。 NLBは、レイヤー2の「ハートビート」を使用して、クラスター内のホストの可用性を判別します。ホストがハートビートメカニズムに失敗した場合、他のすべてのホストが「収束」(または再収束)して、応答しないホストをクラスターから削除し、クラスタートラフィック(ポートルールに基づく)が非応答ホストに送信されないようにします。応答するホスト。 NLBは、厳密にはレイヤー3(ネットワークレイヤー)の負荷分散メカニズムです。これは、レイヤー7(アプリケーションレイヤー)の負荷分散メカニズムではありません。

NLBポートルールで定義されたNLBホスト(HTTPやRDPなど)でハングしたアプリケーションが、アプリケーションがそのトラフィックを受け入れることができない場合でも、引き続きNLBトラフィックを受信することは完全に正常です。これは、NLBがレイヤー3より上の層を認識していないためです。

2
joeqwerty