Windows Server 2003 の時からあまり機能変化がないNLBですが、最近気が付いたことがあります。
今まで、NLBにおいては強い推奨としてネットワークカードは2枚にしましょうということでした。その理由は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アドレスを回答する仕組みになりました。
ここに、2ノードのNLBクラスターがあります。アドレスはそれぞれ、「10.10.0.38」と「10.10.0.39」というのがわかります。
そして、クラスターMACは「02-BF-0A-0A-00-64」になっています。
この状態でノード間でPingを行うと、Ping通信が可能になっています。
それぞれのノードのARPキャッシュをみると・・・
ここには初めて見るMACアドレス「03-bf-・・・・・」が存在しているのがわかります。この、MACを使用して通信を行うようです。
ちなみに、Windows Server 2008 以降はデフォルトでレジストリ設定がONになっているのでNLBノード間通信が可能です。
う~ん。盲点でした・・・
ということは、バックエンドにDBサーバーなどが存在しないときは、必ずしもネットワークカードは2枚必要ではないということになりますね。