ESXi ホストは、NIC チーミングによって、複数の物理 NIC で外部の物理スイッチに接続できます。複数の NIC を束ねることで、負荷分散(ロードバランス)と、障害時の切り替え(フェールオーバ)ができるようになります。
この記事では、NIC チーミングのロードバランス方式と、フェールオーバの動き(リンク状態による検知とビーコンプローブ)を図で整理します。
- NIC チーミングのロードバランス方式と、それぞれの物理スイッチ側の条件
- リンクダウンによるフェールオーバの動き
- リンクダウンで検知できない障害と、ビーコンプローブ
仮想ネットワーク、仮想スイッチについては、次の記事を参考にしてください。
>> 参考記事:【VMware ESXi】図解 仮想ネットワーク・仮想スイッチの概要
ここでは、3つの物理 NIC を持つ ESXi ホストが、物理スイッチに接続されている構成で考えます。ESXi では物理 NIC を vmnic0、vmnic1 … と呼びますが、この記事では NIC1〜NIC3 と書きます。
ESXi ホストの仮想スイッチは、これらの物理 NIC(アップリンク)でチーミングを組み、通信の負荷分散と可用性(フェールオーバ)を実現します。
ロードバランス方式
仮想スイッチ(またはポートグループ)ごとに、通信をどの物理 NIC に流すかを決める方式を選びます。
発信元の仮想ポートに基づいたルート
仮想マシン(VM)の仮想 NIC がつながっている仮想スイッチのポート ID をもとに、使う物理 NIC を決めます。標準スイッチ(vSphere Standard Switch)の既定の方式です。物理スイッチ側で、チーミングのための設定は要りません。
次の図のように、VM がつながっているポートに応じて、使う物理 NIC が決まります。VM が同じポートにつながっている間は、同じ物理 NIC を使い続けます。
仮想スイッチはアップリンクの負荷を見ていないので、ポート ID と物理 NIC の割り当てと VM ごとの通信量によっては、物理スイッチへのアップリンクの負荷が偏ることがあります。
発信元 MAC ハッシュに基づいたルート
VM の仮想 NIC の MAC アドレスから計算したハッシュ値によって、使う物理 NIC を決めます。物理スイッチ側で、チーミングのための設定は要りません。
こちらもアップリンクの負荷は見ていないので、MAC アドレスと物理 NIC の割り当てと VM ごとの通信量によっては、アップリンクの負荷が偏ることがあります。
IP ハッシュに基づいたルート
パケットごとに、送信元と宛先の IP アドレスから計算したハッシュ値によって、使う物理 NIC を決めます。
ポート ID や MAC アドレスの方式と違い、1台の VM でも宛先によって複数の物理 NIC を使います。そのため、物理スイッチ側では、それらのポートをリンクアグリゲーション(EtherChannel)にする必要があります。
| 項目 | IP ハッシュを使うときの条件 |
|---|---|
| 物理スイッチ | スタティックのリンクアグリゲーション(EtherChannel、モード on)を設定する。接続先は1台の物理スイッチか、スタックしたスイッチ |
| LACP | LACP(ダイナミック)は分散仮想スイッチ(vSphere Distributed Switch)でだけ使える。標準スイッチはスタティックのみ |
| チームの NIC | スタンバイや未使用のアップリンクを設定しない(すべてアクティブにする) |
| 障害検知 | 「リンク状態のみ」を使う。ビーコンプローブとは組み合わせない |
そのほかの方式
| 方式 | 内容 |
|---|---|
| 明示的なフェールオーバー順序 (Use explicit failover order) | アクティブな NIC のうち、順番が一番上で正常なものだけを使う。負荷分散はしない |
| 物理 NIC 負荷に基づいたルート (Route based on physical NIC load) | 分散仮想スイッチでだけ使える。30秒ごとにアップリンクの負荷を調べ、使用率が75%を超えていたら、通信量の多い VM を別のアップリンクに移す |
NICチーミングによるフェールオーバ
リンクダウンによる切り替え
たとえば、VM が NIC1 を通って物理スイッチと通信しているとします(図1の状態)。
この状態で NIC1 のリンクがダウンすると、仮想スイッチはリンクダウンを検知し、NIC1 を使っていた通信をほかの NIC に切り替えます。
リンクダウンでは検知できない障害
では、ESXi から見てリンクダウンが起きない障害はどうでしょうか。たとえば、次のように NIC1 と NIC2・NIC3 がそれぞれ別の物理スイッチにつながっているとします。
この構成で、物理スイッチAとBの間の接続がダウンしたとします。ESXi ホストから見ると、自分の NIC のリンクがダウンしたわけではないので、リンク状態だけではこの障害を検知できません。
その結果、物理スイッチAが孤立し、NIC1 を通る通信は上位に出られなくなります。
ビーコンプローブで検知する
このようなケースに備えるのが、ビーコンプローブです。ESXi は、チーム内のすべての物理 NIC から1秒ごとにビーコンパケットを送り、ほかの NIC で受信できるかを確かめて、正常性を判断します。
今回の障害では、NIC2 と NIC3 の間ではビーコンが届くのに、NIC1 とは届かないため、ESXi は NIC1 を障害とみなし、ほかの NIC へフェールオーバします。
- どの NIC が障害かを判断するために、チームには3つ以上の物理 NIC が必要で、それぞれ別の物理スイッチにつなぐことが前提です。
- チームの NIC はアクティブ/アクティブか、アクティブ/スタンバイにします(未使用の NIC はビーコンに参加しません)。
- IP ハッシュ(リンクアグリゲーション)とは組み合わせません。
まとめ
| 方式・機能 | NIC の選び方 | 物理スイッチの設定 |
|---|---|---|
| 発信元の仮想ポート | ポート ID ごとに固定(標準スイッチの既定) | 不要 |
| 発信元 MAC ハッシュ | 仮想 NIC の MAC アドレスのハッシュ | 不要 |
| IP ハッシュ | 送信元・宛先 IP アドレスのハッシュ | リンクアグリゲーションが必要 |
| リンク状態のみ | NIC のリンクダウンで切り替え | ― |
| ビーコンプローブ | ビーコンの送受信で、スイッチ先の障害も検知 | 3つ以上の NIC を別々のスイッチに |
コメント