午前2時、PagerDutyのオンコールアラートがけたたましく鳴り響きました。8ノード構成のvSANクラスタで深刻なI/Oボトルネックが発生し、多数のデータベース仮想マシン(VM)でPing応答が途絶。vCenterを確認したところ、ESXiホスト#3の10GbEポートで激しいリンクフラッピングが発生していました(日頃からPowerCLIによるvSphere健全性チェックを自動化していれば兆候を早期検知できたかもしれません)。トラフィックが急遽もう一方のポートへ集中したものの、デフォルトのフェイルオーバー機構の切り替えが間に合わず、vSANのデータ同期ズレ(Out-of-sync)に発展してしまったのです。
この手痛いインシデントをきっかけに、チームはネットワーク設計の根本的な見直しを迫られました。こうしたリスクを抜本的に解消し、20Gbps(10GbE×2)の帯域を最大限に活用するためには、Distributed Switch上でLACPによる物理NICのチーミングを行うのが最も確実なベストプラクティスです。
VMware ESXiにおける3つのNICチーミング方式
vSphere環境では、Linuxのネットワークボンディングと802.3ad LACPと同様に、主に以下の3つのアップリンク統合オプションが利用可能です。
- 仮想ポートIDに基づいたルーティング(デフォルト):VMの各vNICをラウンドロビン方式で固定の物理アップリンクにマッピングします。設定は極めてシンプルで、物理スイッチ側での特別な構成は一切不要です。
- 送信元IPハッシュに基づいたルーティング(Static EtherChannel):送信元IPと宛先IPのハッシュ計算に基づいてトラフィックを分散します。物理スイッチ側でStatic LAG(Mode ON)の設定が必須となります。
- vDS上のDynamic Link Aggregation(LACP):IEEE 802.3ad標準を使用します。物理スイッチとvDSがLACPDUパケットを定期的にやり取りすることで、自動的にネゴシエーションを行います。
各ソリューションのメリット・デメリット比較
1. 仮想ポートIDに基づいたルーティング
- メリット:最も導入が容易。ネットワークチームへの依存がない。物理スイッチの再起動時にも、ホスト側で論理切断のリスクがほとんど発生しない。
- デメリット:1台のVMが1つのアップリンク帯域(2ポート接続でも最大10Gbps)を超えることはできない。ケーブルの接触不良やスイッチの軽微なフレームエラーが発生した際、ビーコンプロービング(Beacon Probing)を有効にしていないとリンクアップと誤認し、フェイルオーバーがトリガーされない場合がある。
2. Static EtherChannel(送信元IPハッシュに基づいたルーティング)
- メリット:異なるIPフロー間で柔軟な負荷分散が可能。
- デメリット:ブラックホール障害を引き起こしやすい。物理スイッチ側のVLAN設定ミスやポートの片方向フリーズが発生しても、ESXiは異常ポートへパケットを送信し続けてしまう。対向側との状態クロスチェック機構が存在しない。
3. vSphere Distributed Switch(vDS)上のLACP
- メリット:双方向で常時ハンドシェイクを実施。光ファイバーの片系障害(受信のみ可能で送信不可など)が発生した場合でも、LACPが3秒以内に該当ポートをバンドルから自動切り離し。多彩なハッシュアルゴリズム(IP、TCP/UDPポート、VLAN)に対応し、実効帯域を最大化可能。
- デメリット:vSphere Enterprise Plusライセンスが必要。仮想化エンジニアと物理ネットワークエンジニア(Cisco、Arista、Dellなど)間でのパラメータの綿密なすり合わせが不可欠。
どのような環境でLACPを有効化すべきか?
数台規模の検証環境や、Enterprise Plusライセンスがないシステムでは、デフォルトのポートID方式で十分運用可能です。念のためビーコンプロービングを併用しておけば冗長性も担保できます。
しかし、高負荷な本番環境では話が別です。vSANの運用や、大容量メモリを搭載したVM(Oracle、SQL Serverなどで256GB以上のRAM構成)のvMotionを頻繁に実行する環境では、vDS上のLACP構成が必須となります。Active LACPの導入により、夜間のサイレントな障害リスクを根本から排除できます。
vSphere Distributed SwitchにおけるLACP設定手順
ステップ1:物理スイッチ側でLACP Port-Channelを設定
vCenter側の操作を行う前に、まずネットワークスイッチ(例:Cisco Switch)で設定を行います。ESXiホストに接続された2つのポートをactiveモードに設定します:
! ESXi-Host03に接続する物理ポートの設定
interface range TenGigabitEthernet1/0/1 - 2
description Uplinks-to-ESXi03
switchport mode trunk
switchport trunk allowed vlan 10,20,30,100
channel-group 10 mode active
lacp rate fast
spanning-tree portfast trunk
exit
interface Port-channel10
description LAG-to-ESXi03-vDS
switchport mode trunk
switchport trunk allowed vlan 10,20,30,100
exit
ステップ2:vDS上でLink Aggregation Group(LAG)を作成
- vSphere Clientにアクセスし、[ネットワーク]メニューを開きます。
- 対象のDistributed Switch(vDS)を右クリック > [設定] > [LACP]を選択します。
- [新規]をクリックしてLAGを追加します:
- 名前:
lag-esxi-prod - ポート数:
2(束ねるvmnicの数に合わせる) - モード:
Active - ロード バランシング モード:トラフィックを最も均等に分散できる
送信元および宛先IPアドレス、TCP/UDPポート、およびVLANを選択。 - LACPタイマー:デフォルトの90秒ではなく3秒でリンク切断を検知するため、
Fast (1 sec)を選択。
- 名前:
ステップ3:Distributed Port Groupのチーミングとフェイルオーバーを切り替え
この手順は極めて重要です。ここを誤ると、仮想マシンの通信が全断する恐れがあります(作業前には念のためESXiホスト構成のバックアップを取得しておくことを推奨します):
- 設定対象のDistributed Port Groupを右クリックし、[設定の編集] > [チーミングとフェイルオーバー]タブを開きます。
lag-esxi-prodを[アップリンク](アクティブ)に移動します。- 既存の
Uplink 1およびUplink 2をすべて[未使用のアップリンク]に移動します。
注意:vSphereでは、同一のアクティブグループ内にLAGと通常のアップリンクを混在させることはできません。
ステップ4:物理NIC(vmnic)をLAGポートに割り当て
各vmnicを旧アップリンクから新規作成したLAGのポートへ移行します:
- vDSを右クリック > [ホストの追加と管理]を選択します。
- [ホスト ネットワークの管理]を選択し、対象のESXiホストにチェックを入れます。
- [物理ネットワーク アダプタの管理]にて:
vmnic2をポートlag-esxi-prod - 0に割り当て。vmnic3をポートlag-esxi-prod - 1に割り当て。
- [次へ]をクリックしてウィザードを完了し、vCenterから各ホストへ設定を適用します。
ステップ5:ESXi ShellからLACPステータスを確認
設定完了後、ESXiホストにSSHログインし、対向スイッチとのネゴシエーション状態を確認します:
# ホスト上のvDSステータスを確認
esxcli network vswitch dvs vmware list
# LACPハンドシェイクの詳細ステータスを確認
esxcli network vswitch dvs vmware lacp status get
# 各NICのLACPDU設定およびパラメータを確認
esxcli network vswitch dvs vmware lacp config get
正常に動作していれば、Actor Partner Agree: Yesが出力され、ポート状態がCollecting, Distributing(フラグ0x3dまたは0x3f)と表示されます。もしIndividualやDefaultedと表示されている場合は、物理スイッチ側のネイティブVLANやLACPモード(Active/Passive)の設定を再確認してください。
