VMware ESXiの標準仮想スイッチ(VSS)でNIC冗長化を実現する方法をまとめます。さらに、トラブルに発展しやすい(宗教戦争になりやすい)ロードバランシングアルゴリズムのメリット・デメリットを整理します。
冗長化設定まとめ
最小限設定
ESXiの管理画面にて、「ネットワーク」「標準スイッチ」の順に押下し、冗長化したいスイッチをさらに選びます。
初期状態ではアップリンクが1つしかなく、NICやネットワーク機器の障害によって疎通不能になりうる事に着目してください。この画面で「アップリンクの追加」を押下すると、NICの冗長化が可能です。
冗長化するNICを選びます。もし、予算が許すならば、カード単位での障害を考慮し、冗長化するアップリンクは別のカードになるように設定すると良いでしょう(例:vmnic0とvmnic2で冗長化)。
リンク検出
標準仮想スイッチ(VSS)はCDP(Cisco Discovery Protocol)を用いた障害の検出が可能です。レアケースではありますが、リンクアップしているものの疎通不能になるような特殊な壊れ方をした場合の障害を検知できます。
標準仮想スイッチ(VSS)はCDPのみ選択可能のためCisco機器以外では障害を検知できませんが、分散仮想スイッチ(VDS)ではCDPとLLDPの選択が可能でCisco機以外でも障害の検出が可能です。
モードは「待機」「アドバタイズ」「両方」「なし」のいずれかを選択し、VMware ESXi自身がCDPを発信するか否かを選択できます。
デフォルト設定の「待機」では、ESXiに接続されたCisco機はESXiを認識していません。
Switch#show cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID Switch#
これを以下スクリーンショットのように「両方」に変更すると、VMware ESXiもCDPを発信している事が分かり、Cisco機器はESXiを認識するようになります。
Switch#show cdp neighbors Capability Codes: R - Router, T - Trans Bridge, B - Source Route Bridge S - Switch, H - Host, I - IGMP, r - Repeater, P - Phone, D - Remote, C - CVTA, M - Two-port Mac Relay Device ID Local Intrfce Holdtme Capability Platform Port ID esxi01.gokatei.go Fas 0/4 172 S VMware ES vmnic2 esxi01.gokatei.go Fas 0/3 172 S VMware ES vmnic3 Switch#
ロードバランシング
ロードバランシングアルゴリズムはデフォルト設定は「送信元ポートID」に基づいたルートです。
ポートIDとは各仮想スイッチのポート番号のようなもので、以下コマンドで出力される「PortNum」の値です。
最も仮想スイッチの負荷が少ないロードバランス方式でヴイエムウェア コンサルの方々はこの方式を勧める事が多い傾向が見られます。業務要件を加味すると他のロードバランス方式の方が望ましい事もありますが、コンサルの方々を説得するのは非常に骨の折れる作業です。もし、コンサルが入る案件ならば、コンサルへの説明コストも加味した上で方式を決定しましょう。
[root@esxi01:~] net-stats -l PortNum Type SubType SwitchName MACAddress ClientName 33554434 4 0 vSwitch0 18:e7:28:b6:a5:20 vmnic0 33554436 3 0 vSwitch0 18:e7:28:b6:a5:20 vmk0 33554438 5 9 vSwitch0 00:0c:29:00:95:c1 193-vcenter 33554439 5 9 vSwitch0 00:0c:29:f6:2b:d5 142-esxi 33554440 5 9 vSwitch0 00:0c:29:f6:2b:cb 142-esxi 33554441 5 9 vSwitch0 00:0c:29:f6:2b:c1 142-esxi 33554442 5 9 vSwitch0 00:0c:29:f6:2b:b7 142-esxi 33554443 5 9 vSwitch0 00:0c:29:bc:10:62 143-esxi 33554444 5 9 vSwitch0 00:0c:29:bc:10:58 143-esxi 33554445 5 9 vSwitch0 00:0c:29:bc:10:4e 143-esxi 33554446 5 9 vSwitch0 00:0c:29:bc:10:44 143-esxi 33554447 5 9 vSwitch0 00:50:56:80:9d:64 144-esxi 33554448 5 9 vSwitch0 00:50:56:80:15:35 144-esxi 83886087 11 0 DvsPortset-0 00:00:00:00:00:00 lag1 83886092 4 0 DvsPortset-0 00:0a:f7:03:14:1c vmnic2 83886094 4 0 DvsPortset-0 00:0a:f7:03:14:1e vmnic3 83886096 5 9 DvsPortset-0 00:50:56:b7:b6:30 013-sandbox.eth0 83886097 5 9 DvsPortset-0 00:50:56:b9:f7:77 014-sandbox.eth0
ロードバランシング 補足説明
明示的なフェイルオーバー順序を使用
ロードバランシングアルゴリズムを「明示的なフェイルオーバー順序を使用」とする場合は、どのNICがスタンバイになるかを明示指定して下さい。スタンバイとするNICを選択した状態で「スタンバイとしてマーク」を押下します。
vmnic3が「スタンバイ」との表示に変わった事を確認します。
「フェイルバック」はアクティブのvmnicが復旧した時に戻るか否かの設定です。ネットワーク機器で言う「preempt」「no preempt」相当の設定です。vmnicの切り替わりは十分高速であるので「フェイルバック」を「いいえ」にするのは過剰な冗長化のような気もしますが、フラッピングを極度に恐る宗教もありますので、政治色の強いプロジェクトでは十分警戒すべきパラメタの1つです。
IP ハッシュに基づいたルート
送信元IPアドレスや宛先IPアドレスに基づいたハッシュ値によって負荷分散する方式です。スイッチ側のMACアドレステーブルがフラップしないよう、スイッチ側はEtherchannelを構成する必要があります。なお、標準仮想スイッチ(VSS)はLACPをサポートしないため、スイッチ側はstatic LAGの設定しか選べません。以下に設定例を載せます。
標準仮想スイッチ(VSS)はLACPをサポートしませんが、分散仮想スイッチ(VDS)ではLACPをサポートします。
Switch(config)#interface range FastEthernet 0/3 - 4 Switch(config-if-range)#channel-group 1 mode on Creating a port-channel interface Port-channel 1 Switch(config-if-range)#end Switch# Switch# Switch#show etherchannel summary Flags: D - down P - bundled in port-channel I - stand-alone s - suspended H - Hot-standby (LACP only) R - Layer3 S - Layer2 U - in use f - failed to allocate aggregator M - not in use, minimum links not met u - unsuitable for bundling w - waiting to be aggregated d - default port Number of channel-groups in use: 1 Number of aggregators: 1 Group Port-channel Protocol Ports ------+-------------+-----------+----------------------------------------------- 1 Po1(SU) - Fa0/3(P) Fa0/4(P) Switch#
トラブル事例が多いのかVMware製品のみで完結しない設定であるためなのか理由は定かではありませんが、ヴイエムウェア コンサルの方々はこの設定を嫌う傾向があります。
ロードバランシングアルゴリズム まとめ
ロードバランシングアルゴリズムのメリット・デメリットは以下の公式ドキュメントにもまとめられています。
まずは公式のメリット・デメリットに沿った考え方で方式設計ができるかどうかを考えましょう。考えた結果、上記デメリット・メリットに当てはまらないプロジェクト固有の要件があると判明した場合は、それなりに説明の手間がかかります。説明コストを十分に考慮してプロジェクト推進しましょう。
以下に公式見解を転記します。
発信元の仮想ポートに基づいたルート
「発信元の仮想ポートに基づいたルート」を使用するメリットは以下の通りです。
- 仮想 NIC の数がチームの物理 NIC の数より多い場合に、トラフィックを均等に配分できます。
- ほとんどの場合、仮想スイッチは仮想マシンのアップリンクを 1 回のみ計算するため、リソースの消費量が少なくなります。
- 物理スイッチに変更を加える必要がありません。
「発信元の仮想ポートに基づいたルート」を使用するデメリットは以下の通りです。
- 仮想スイッチではアップリンク上のトラフィック負荷を認識せず、使用頻度の低いアップリンクへのトラフィックのロード バランシングが行われません。
- 仮想マシンで使用可能なバンド幅は、仮想マシンで複数の仮想 NIC を使用しない限り、関連 ポート ID に関連付けられているアップリンクの速度までに制限されます。
発信元 MAC ハッシュに基づいたルート
「発信元 MAC ハッシュに基づいたルート」を使用するメリットは以下の通りです。
- 仮想スイッチはパケットごとにアップリンクを計算するため、発信元の仮想ポートに基づいたルートよりも平等にトラフィックを分散できます。
- MAC アドレスは固定されているため、仮想マシンでは同じアップリンクが使用されます。仮想マシンをパワーオンまたはパワーオフしても、仮想マシンで使用されるアップリンクは変わりません。
- 物理スイッチに変更を加える必要がありません。
「発信元 MAC ハッシュに基づいたルート」を使用するデメリットは以下の通りです。
- 仮想マシンで複数の発信元 MAC アドレスを使用している場合を除き、仮想マシンで使用できるバンド幅は、関連するポート ID に関連付けられているアップリンクの速度に制限されます。
- 仮想スイッチはパケットごとにアップリンクを計算するため、発信元の仮想ポートに基づいたルートよりもリソース消費量が多くなります。
- アップリンクの負荷が仮想スイッチで認識されないため、アップリンクが過負荷になる可能性があります。
IP ハッシュに基づいたルート
「IP ハッシュに基づいたルート」を使用するメリットは以下の通りです。
- 仮想スイッチはパケットごとにアップリンクを計算するため、発信元の仮想ポートに基づいたルートや発信元 MAC ハッシュに基づいたルートよりも平等に負荷を分散できます。
- 複数の IP アドレスと通信する仮想マシンのスループットが高くなる可能性があります。
「IP ハッシュに基づいたルート」を使用するデメリットは以下の通りです。
- 他のロード バランシング アルゴリズムと比べてリソース消費量が最も高くなります。
- 実際のアップリンクの負荷が仮想スイッチで認識されません。
- 物理ネットワークの変更が必要です。
- トラブルシューティングが複雑になります。