VMware ESXiの分散仮想スイッチ(VDS)でNIC冗長化を実現する方法をまとめます。さらに、トラブルに発展しやすい(宗教戦争になりやすい)ロードバランシングアルゴリズムのメリット・デメリットを整理します。
冗長化設定まとめ
最小限設定
分散仮想スイッチ(VDS)で冗長化を実現する最小限の設定は、複数のアップリンクをNICに割り当てる事のみです。
vCenterの管理画面にて、「仮想ネットワークのアイコン」「分散仮想スイッチ」の順に選択し右クリックメニューを表示させます。その後、「ホストの追加と管理」を選択します。
途中操作は省略しますが、アップリンクを複数の物理NICに割り当てます。もし、予算が許すならば、カード単位での障害を考慮し、冗長化するアップリンクは別のカードになるように設定すると良いでしょう(例:vmnic0とvmnic2で冗長化)。
途中操作の解説が必要な方は「分散仮想スイッチ(VDS)の基本操作01」を参照ください。
リンク検出
分散仮想スイッチ(VSS)はCDP(Cisco Discovery Protocol)またはLLDP(Link Layer Discovery Protocol)を用いた障害の検出が可能です。レアケースではありますが、リンクアップしているものの疎通不能になるような特殊な壊れ方をした場合の障害を検知できます。
リンク検出を設定するには、分散仮想スイッチ(VDS)を右クリックメニューで開き、「設定」「設定の編集」の順に押下します。
モードは「待機」「アドバタイズ」「両方」のいずれかを選択し、VMware ESXi自身がCDPまたはLLDPを発信するか否かを選択できます。以下スクリーンショットのようにESXiがLLDPを発信するように設定すると、ネットワーク機器がESXiを認識している事が読み取れます。
Switch#show lldp neighbors Capability codes: (R) Router, (B) Bridge, (T) Telephone, (C) DOCSIS Cable Device (W) WLAN Access Point, (P) Repeater, (S) Station, (O) Other Device ID Local Intf Hold-time Capability Port ID esxi01 Fa0/4 175 B 000a.f703.141c esxi01 Fa0/3 175 B 000a.f703.141e Total entries displayed: 2 Switch#
ロードバランシング
標準仮想スイッチ(VSS)はスイッチ単位でロードバランシングアルゴリズムを指定しましたが、分散仮想スイッチ(VDS)はポートグループ毎に異なるロードバランシングアルゴリズムの指定が可能です。ロードバランシングアルゴリズムを指定するには、ポートグループを右クリックメニューで開き、「設定の編集」を押下します。
ロードバランシングアルゴリズムはデフォルト設定は「送信元ポート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
ロードバランシング 補足説明
分散仮想スイッチ(VDS)固有のロードバランシングのみを説明します。標準仮想スイッチ(VSS)と共通の機能は「標準仮想スイッチ(VSS)の冗長化設定」を参照ください。
明示的なフェイルオーバー順序を使用
明示的なフェイルオーバーを使用する場合は、どのアップリンクが「スタンバイ」になるかを指定しましょう。
スタンバイとして指定したいアップリンクを選択し、「下へ移動」を押下します。
アップリンクが「スタンバイ アップリンク」の欄に移動した事を確認します。
使わないアップリンクを選択し、「下へ移動」を押下します。
アップリンクが「未使用のアップリンク」の欄に移動した事を確認します。
「フェイルバック」はアクティブのvmnicが復旧した時に戻るか否かの設定です。ネットワーク機器で言う「preempt」「no preempt」相当の設定です。vmnicの切り替わりは十分高速であるので「フェイルバック」を「いいえ」にするのは過剰な冗長化のような気もしますが、フラッピングを極度に恐る宗教もありますので、政治色の強いプロジェクトでは十分警戒すべきパラメタの1つです。
物理 NIC 負荷に基づいたルート
「物理 NIC 負荷に基づいたルート」は標準仮想スイッチ(VSS)ではサポートされず分散仮想スイッチ(VDS)のみで使用可能な機能です。ESXiが30秒毎に負荷を計測し使用率が75%を超えるならば、使用するアップリンクを変更します。
LACP
「LACP」は標準仮想スイッチ(VSS)ではサポートされず分散仮想スイッチ(VDS)のみで使用可能な機能です。
トラブル事例が多いのかVMware製品のみで完結しない設定であるためなのか理由は定かではありませんが、ヴイエムウェア コンサルの方々はこの設定を嫌う傾向があります。最も均等に負荷分散されるだけでなく、リンクアップしているものの疎通不能というようなレアケース障害にも対応できるので、個人的には最もオススメしたい機能です。
LAGの作成
「仮想スイッチ」「設定」「LACP」「新規」の順に押下します。
LACPとして必要なパラメタを選択し、「OK」を押下します。
物理NICとの紐付け
先ほど作成したLAGの設定をESXiの物理NICと紐付けます。「仮想スイッチ」の右クリックメニューの「ホストの追加と管理」を押下します。
「物理アダプタの管理」の画面にて、LAGを構成したいvmnicを選択した状態で「アップリンクの割り当て」を押下します。
LAGを構成するアップリンクを選択し、「OK」を押下します。
アップリンクが変わった事を確認します。
「物理アダプタの管理」の画面にて、LAGを構成したいvmnicを選択した状態で「アップリンクの割り当て」を押下します。
LAGを構成するアップリンクを選択し、「OK」を押下します。
アップリンクが変わった事を確認します。
チーミングポリシー
チーミングポリシーの画面でLAGのみが「アクティブ アップリンク」として構成されるように設定します。
動作確認
ネットワーク機器側でLACPの設定をします。
Switch(config)#int range f0/3 - 4 Switch(config-if-range)#channel-group 1 mode ? active Enable LACP unconditionally auto Enable PAgP only if a PAgP device is detected desirable Enable PAgP unconditionally on Enable Etherchannel only passive Enable LACP only if a LACP device is detected Switch(config-if-range)#channel-group 1 mode active Creating a port-channel interface Port-channel 1 Switch(config-if-range)#
LAG(etherchannel)が構成されている事を確認します。
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#
ロードバランシングアルゴリズム まとめ
ロードバランシングアルゴリズムのメリット・デメリットは以下の公式ドキュメントにもまとめられています。
まずは公式のメリット・デメリットに沿った考え方で方式設計ができるかどうかを考えましょう。考えた結果、上記デメリット・メリットに当てはまらないプロジェクト固有の要件があると判明した場合は、それなりに説明の手間がかかります。説明コストを十分に考慮してプロジェクト推進しましょう。
以下に公式見解を転記します。
分散仮想スイッチ(VDS)固有のロードバランシングのみを説明します。標準仮想スイッチ(VSS)と共通の機能は「標準仮想スイッチ(VSS)の冗長化設定」を参照ください。
物理 NIC 負荷に基づいたルート
「物理 NIC 負荷に基づいたルート」を使用するメリットは以下の通りです。
- Distributed Switch が仮想マシンのアップリンクの負荷を計算するのは 1 度のみで、アップリンクの確認の影響は最小限であるため、リソース使用量が低く抑えられます。
- Distributed Switch がアップリンクの負荷を認識し、必要に応じて負荷を軽減するための処理を行います。
- 物理スイッチに変更を加える必要がありません。
「物理 NIC 負荷に基づいたルート」を使用するデメリットは以下の通りです。
- 仮想マシンで使用できるバンド幅が、Distributed Switch に接続されたアップリンクによる制限を受けます。