vSphere HA アドミッションコントロール ”ホストの指定”の計算方法

VMware

vSphere HA アドミッションコントロール ”ホストの指定”の計算方法

まえがき

社内の友人から、”VMware NSXのゲストイントロスペクションとvSphere HAのアドミッション コントロールの併用”について議題にあがったため、今回この記事を書くに至りました。知識レベルのアップのチャンスを頂き感謝します。

ゲスト イントロスペクションとは(以下GI)

端的にで言えば、アンチウィルスなどのセキュリティソリューションを仮想マシンの外から適用するための機能です。

ゲスト イントロスペクション (VMware Docs)

通常アンチウィルス ソフトウェアは、保護対象のOSにインストールするというイメージですが、仮想基盤では大量の仮想マシンを展開することが予想されます。それを考えた際に、全仮想マシンに一貫性がある保護レベルを提供するために、”仮想マシン単位”ではなく、”物理ホスト”毎に検疫用の仮想マシンを設置するという思想がゲスト イントロスペクションです。

こちらの図内では、2つの仮想マシンを利用してアンチウィルスセキュリティを実装しています。(Guest IntrospectionとTrend Micro Deep Securityの仮想マシンです)

ここでのポイントは、この構成では”必ずこれらの仮想マシンはそのホスト上でPowerOnである必要がある”という事です。この前提をまずは抑えておき、次の段階へと進みます。

アドミッション コントロール”ホストの指定”について

HDDの冗長化のための技術である”RAID”には、ホットスペアという考え方があります。ホットスペアは、冗長性のためのRAIDアレイ内の物理ドライブの障害時に、即座に冗長性回復のために利用されるスペアです。

スポーツなどで言えば、レギュラー選手の負傷時に登場するスタンバイの選手のようなイメージといえばわかりやすいです。

つまり、障害があって始めてワークロードに参加をするという事です。

vSphere HAにおいては、このように障害の際にのみリソースを提供してくれるホストを直接指定することが可能です。
裏を返せば、障害が発生するまではそのフェイルオーバーホストは仮想マシンのホストとして振る舞ってはいけない、と言える。

そこで、GIの原則に基づくと、次のルールが存在する。

  • GI仮想マシンはそのホストからvMotionなどで移行してはならない
  • セキュリティ保護対象の仮想マシンよりも先に起動をしている必要がある

ここで1つの矛盾が生じる。

  1. ”GI”を利用する以上、GI用の仮想マシンは保護対象の仮想マシンが動作するホストで動作をし続ける必要がある
  2. ”vSphere HA アドミッション コントロール”にて、”指定のホスト”を利用する場合は、仮想マシンは対象ホストで動作してはならない

ということで、この点について検証をしてみた。実際にはお問い合わせとして、両方の機能の同時利用をしようとした所、あるエラーが出てしまい、どうしたものか、という事が本記事のきっかけである。

検証

今回は、検証のためにVMware HOL上n”Virtualization 101 (HOL-1910-01-SDC)”を利用した。

この環境は2ノードのESXiにiSCSI LUNが1つ/NFSが1つととてもシンプルである。検証環境はシンプルな方が、複雑性がなく、本質を追求しやすいためこの環境を選定しました。

今回の検証では2ノードのうちの1ノードを”フェイルオーバー専用ホスト”として指定をして、次の3つの状況を再現しました。

  1. フェイルオーバー用ホスト上に2台の仮想マシンが存在する(電源ONとOFF)
  2. フェイルオーバー用ホスト上に1台の仮想マシンが存在する(電源OFFのみ)
  3. フェイルオーバー用ホスト上に0台の仮想マシンが存在する

それでは3つの結果について確認をしていきましょう。

フェイルオーバー用ホスト上に2台の仮想マシンが存在する(電源ONとOFF)

下図内では、該当の警告メッセージが表示されている。

“Insufficient Configured resources to satisfy the desired vSphere HA failover level on the cluster Site A in Data site A”

そもそも今回は当該ホスト上に電源ONの仮想マシンがいるので、このメッセージが表示されるのは至極最もである。これは想定通りであるため、vMotionを使い、電源ONの仮想マシンをもう1台のホストに移行し、メッセージに変化があるかを確認します。

フェイルオーバー用ホスト上に1台の仮想マシンが存在する(電源OFFのみ)

vMotionを終え、フェイルオーバー用ホスト内には”電源OFFの仮想マシン”のみが存在する状況になりました。にも関わらず警告メッセージは消えません。

この段階で、”仮想マシンの電源状態に問わず、フェイルオーバー用ホストには仮想マシンが存在してはならない”という事が検証より確認が出来たと言えます。

その確証を得るために、次に”電源OFF状態の仮想マシン”ももう1つのホストに移行します。

フェイルオーバー用ホスト上に0台の仮想マシンが存在する

こちらが結果です。フェイルオーバー専用ホスト上から全ての仮想マシンが存在しなくなった事で警告文が消えました。よって、やはりフェイルオーバー専用ホスト上に仮想マシンが存在しては行けないという事が再確認出来ました。

これに加えて、ゲスト イントロスペクションのように、専用仮想マシンの動作が前提となるような機能と”指定ホストベースのアドミッション コントロール”は、それぞれの仕組み上相容れないように見えます。

この場合は、他のアドミッション コントロール ルールを利用するのが良いだろうと言えます。

おまけ:警告が出たままのフェイルオーバー実験

警告”Insufficient Configured resources to satisfy the desired vSphere HA failover level on the cluster Site A in Data site A”が表示された状態であっても、vSphere HAによるフェイルオーバーは成功しました。警告を無視してしまえば、”指定ホストベースのアドミッション コントロール”も利用が出来ないわけでは無いようですね。

コメント

  1. 匿名 より:

    私が同じラボで試したところ、1.では「Insufficient Configured resources to …」のメッセージは出ますが2.ではメッセージは消えました。
    手順としては以下の通りです。

    (1) ホスト#2に起動VMが1台、停止VMが1台がいる状況でホスト#2をフェイルオーバーホストとして指定し、メッセージが出ることを確認。
    (2) フェイルオーバーホストの指定を解除。
    (3) 起動VMをホスト#1にvMotion。
    (4) ホスト#2に停止VMが1台がいる状況でホスト#2をフェイルオーバーホストとして指定し、メッセージが出ないことを確認。

    ここで(2)を飛ばすとメッセージが表示されたまとなりました。
    「Insufficient Configured resources to …」のメッセージについてはそれが解消された状態になったとしても消えない場合があるようです。(どこかのコミュニティに書き込みがありましたがURLを失念)
    私も6.7で同じようになったことがあり、アドミッションコントロール(専用フェイルオーバーホストの指定)をDisableにしても表示され続けたため、「別のアドミッションコントロール(パーセンテージの指定)にて問題ない状態となるよう設定する」ことでメッセージを消しました。
    バグなのか仕様なのかは調べていないのでわかりません。

    専用フェイルオーバーホストに対して停止状態のVMをvMotionできることからも停止VMの有る無しがHAの動きに影響するものはないと思っておりましたし、これまでの自分の経験でも問題なく動作していましたが、Guest Introspectionのような起動していることが前提のVMが停止状態となっている場合に「そのホストは不健全」と判断されHA対象から除外されるようなこともあるのかなあと考えてしまいます。(このあたりは想像ですが)

    • Instructor8010 Instructor8010 より:

      匿名さん、詳細なコメント誠に有難うございます。
      私も何度も同じ検証を加えたのですが、仰る通りタイミングなどの違いで、メッセージ表示されたまま残ったりしたこともありました。

      いずれにしても、本機能自体は”Guest Introspection”のような稼働前提の仮想マシンとの併用自体は難しそうですね!今後も私自身追加での情報が得られた場合は記事にアップしようと思います。

      今後共当ブログを何卒よろしくお願い致します。