VMwareな日々

Blog移管しました 新URLはこちら https://lab8010.com/

iSCSI ポートバインドを行う理由

<著者からのお願い>

本記事の改訂版として以下のリンク内に更新記事を掲載しております。最新の情報をご確認頂くため、こちらのリンクをご覧ください。

lab8010.com

なお、はてなブログ上の本記事については今後更新は行いませんので、ブックマークなどをされている読者様は、恐れ入りますが新ブログを改めてブックマーク頂くようお願い致します。

 

 

今回も、トレーニングで質問を受けた内容から1点紹介です。

自分自身もたまに見返すことがある"iSCSIポートバインド"について、備忘録としての意味合いも込めて投稿しておきたいと思います。

 

まず、vSphere ESXiにおいて、iSCSIストレージを利用する場合、"iSCSI ポートバインド"を利用するケースがありますが、これは全てのiSCSIストレージが対象ではありません。

 

キーポイントは2種類のアレイのiSCSI ターゲットポートのあり方の違いにあります。

ESX/ESXi でソフトウェア iSCSI ポート バインディングを使用する際の考慮事項 (2080447)

これは、iSCSIターゲット側のストレージにて、IPアドレスの利用形態が”シングルサブネット”か”マルチサブネット”によって変わります。

 

以下のKBには、次のような記載があります。
同じサブネット上に複数の VMkernel ポートがある場合にネットワークのデフォルトの VMkernel ゲートウェイ インターフェイスを変更する (2093988)

f:id:instructor8010:20170928212740p:plain

つまり、単一のESXiホスト上に複数のvmkernelポートを同一サブネット上に設ける場合、基本的にはそのうちの1つしか使われないという原則があるわけです。

 

これを踏まえ、幾つかのiSCSIイニシエーター側のポート構成を考えてみたいと思います。

 

例:2つの物理NICポート(vmnic)に対し、1つのvmkernelポートを用意した場合

f:id:instructor8010:20170928205139p:plain

※上述にあるよう、同一サブネット上に複数のvmkernelポートを置くと、1つしか利用されない、というルールがあるので、この事例をはじめに持ってきてみました。

 

この場合、チーミングが組まれた構成となっています。

ここで、vSphereのネットワークにおいて、チーミングポリシーを思い出してみると、標準スイッチでは3種類のパターンがありました。

1. 送信元の仮想ポートID

2. 送信元のMACハッシュ

3. 送信元及び送信先のIPハッシュ

 

これらを考えた場合、2つの物理NICポートの使われ方は次のようになると言えます。

1. 送信元の仮想ポートIDの場合

単一のvmkernelポートに対し、仮想ポートは常に一定です。つまりプライマリなアクティブポートとして選択されるvmnic(物理NICポート)に障害が発生するまでは、単一のポートだけが使用されます。(つまり、冗長性のためにセカンダリポートがあり、負荷分散は提供しない)

 

2. 送信元のMACハッシュの場合

vmkernelポートは、仮想マシンと違い、MACアドレスは提供しないのでこれは論外ですね。

仮想マシンであればvNICがあり、00:50:56からはじまるMACアドレス付帯がありますから、これらを基準に物理NICが選択されます

 

3. 送信元及び送信先のIPハッシュの場合

これであれば、複数のiSCSIターゲットIPを持つストレージであれば、複数のvmnicを利用してくれる形にはなりますが、Link Aggregationの構成が必須となってしまい、構成が難しくなってしまいます。

 

結論、単一のvmkernelポートに対し、複数の物理NICポートをアサインするチーミングでは、冗長性と負荷分散の両立が難しい状況です。

 

続いて、複数のvmkernel ポートを、単一ホストに準備した場合です。(iSCSIポートバインドを使う場合、使わない場合の2つです)

例:2つのvmkernel portを準備した場合(iSCSI バインド無効、同一サブネットIP付帯)

f:id:instructor8010:20170928215138p:plain

 

例:2つのvmkernel portを準備した場合(iSCSI バインド有効、同一サブネットIP付帯)

f:id:instructor8010:20170928220128p:plain

以上の点から、iSCSI ポートバインドを利用することで、vmkernel ポート1つ辺り、1つのvmnicだけをアサインし、ホストレベルでの冗長性と負荷分散を実現するように設定が出来ます。

 

繰り返しますが、これはあくまでもiSCSIターゲット側(ストレージ側)が、シングルサブネットのIPアドレスだけで構成されるケースに限定され、複数のサブネットマスクが存在するストレージのケースに於いては、バインドは不要となります。

(理由は、別サブネットに対するvmkernel ポートが複数存在する場合は、ESXiはそれらを同時に利用することが出来るからです)

 

以上です、勿論ストレージ導入の際に、ハードベンダー側での導入ベストプラクティス等がある場合はそれも是非参考に頂けると幸いです。