NLB(ユニキャストモード)のノード間通信について

Windows Server 2003 の時からあまり機能変化がないNLBですが、最近気が付いたことがあります。

今まで、NLBにおいては強い推奨としてネットワークカードは2枚にしましょうということでした。その理由はNLBの実装にありました。

NLBの動作

NLBクラスターを構成すると、仮想IPと仮想MACが作られます。

その仮想MACは参加しているノードのMACアドレスを仮想MACに置き換えます。

ということは、ノード間での通信を行おうとしても同一のMACなので通信できないということになります。

そのため、別のネットワークカードを用意してノード間での通信ができるようにしましょうということでした。

実は、Windows Server 2003 SP1 からNLBクラスターノード間での通信が可能になっていました。ただし、自分でレジストリの編集を行う必要があります。

Windows Server 2003 では、NLB が有効なネットワーク アダプター経由で通信できないユニキャスト NLB ノード
http://support.microsoft.com/kb/898867/ja

ではどのような仕組みで通信しているかというと、ノード間でのARP応答に対してのみ、個別の通常のMACアドレスを回答する仕組みになりました。

WS000004

WS000006

ここに、2ノードのNLBクラスターがあります。アドレスはそれぞれ、「10.10.0.38」と「10.10.0.39」というのがわかります。

そして、クラスターMACは「02-BF-0A-0A-00-64」になっています。

この状態でノード間でPingを行うと、Ping通信が可能になっています。

それぞれのノードのARPキャッシュをみると・・・

WS000005

WS000007

ここには初めて見るMACアドレス「03-bf-・・・・・」が存在しているのがわかります。この、MACを使用して通信を行うようです。

ちなみに、Windows Server 2008 以降はデフォルトでレジストリ設定がONになっているのでNLBノード間通信が可能です。

WS000003

う~ん。盲点でした・・・

ということは、バックエンドにDBサーバーなどが存在しないときは、必ずしもネットワークカードは2枚必要ではないということになりますね。

スポンサーリンク
レクタングル(大)広告
レクタングル(大)広告
  • このエントリーをはてなブックマークに追加

コメントをどうぞ

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

*

このサイトはスパムを低減するために Akismet を使っています。コメントデータの処理方法の詳細はこちらをご覧ください