VMwareでNLBを使う

以前の投稿「VMwareがすごいです」で、VMware社の株価の話を取り上げたら、
「VMware 株価」みたいな感じでアクセスしてくる人が多くてびっくりしました。
VMware社の株価って注目されているのですね。

あるお客さんのところで、諸事情でHyper-Vが使えず、VMwareを使っているのですが、
そこである問題にぶち当たりました。それは、VMwareでNLB(ネットワーク負荷分散)が使えないってことです。
ネットで調べれば、さらっと出てくるだろうと(しかも日本語で)思っていたら、これが意外に多くないのですね。
なので、備忘録代わりに、ここに書き留めておきます。

■Microsoft NLB not working property in Unicast Mode
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1556

上記のサイトはVMware社のKnowledge Base(KB)なのですが、
そこでは、VMwareでNLBを利用する方法について書いてあります。
そして、結論を言ってしまえば、NLBのマルチキャストモードを使うことを推奨しています。

NLBの[クラスター操作モード]には、ユニキャストとマルチキャストがあるけれど、
デフォルトではユニキャストを選択するため、何も考えずにNLBを実装すると、トラブルになるのですね。

NLB01

ユニキャストモードは、MACアドレスをNLB用のMACアドレスに書き換えてしまうモードで、
マルチキャストモードは、MACアドレスを自身のものとは別に、NLB用のMACアドレスを割り当てるモードです。

ちなみに、ユニキャストモードの場合、RARPのパケットを送信することが原因で構成に失敗する(とKBに書いてあります)ので、
ESXのチーミングの設定で、RARPパケットを送信しないように設定しておくことが必要だそうです。
(私自身は試せてないのですが)前述のKBでは、RARPパケットを送信しない方法について、
手順が書いてあるので参考にしてください。
また、ESXの場合はチーミングの設定項目がありますけど、VMware WorkstationやPlayerには
チーミングの設定項目がないので、マルチキャストを使うことになりそうですね。
それとも、メモ帳からvmxファイルを直接編集することでRARPを送信しないように構成できるのかな?

2010年11月30日追記
Hyper-VでNLBを実装する場合、Hyper-V2.0から[MACアドレスのスプーフィングを有効にする]を
有効にしておくことで実装が可能になります。

NLBonHyperV

■参考資料
http://kb.vmware.com/selfservice/microsites/search.do?language=en_US&cmd=displayKC&externalId=1006778
http://www.cisco.com/JP/support/public/mt/tac/106/1065366/microsoft_nlb.shtml