vSphere HAのアドミッションコントロールの設定

スポンサーリンク

vSphere HAのアドミッションルールの設定についてまとめます。アドミッションルールはvSphere HAのうち何台かに障害が発生した時にリソースを確保できるか否かでエラーまたは警告を発生させる機能です。

この機能を有効活用するには、リソース予約やリソースプールが明確化可能であることを前提としていますので、この前提条件が理解できることを目的として記事をまとめます。

動作確認の構成

ルートリソースプール

以下の環境で動作確認をします。

設定値 設定項目
ESXi台数 3台
ルートリソースプール CPUリソース 30.15GHz
ルートリソースプール メモリリソース 34.67GB

アドミッションルールで評価されるのは、物理的なCPUやメモリに収まるかではなく、CPUやメモリの予約ができるかどうかです。予約可能なリソースはルートリソースプールと呼ばれる非表示のリソースプールです。このリソースプールがどれくらい収容可能かを確認するには、「クラスタ名」「監視」「CPU / メモリ」の順に押下し、「予約キャパシティの合計」の値を確認します。

アドミッションコントロール 検証シナリオの前提条件01

アドミッションコントロール 検証シナリオの前提条件02

リソース予約

各仮想マシンに以下のリソース予約をします。

仮想マシン CPU予約 メモリ予約
centos50 2048MHz 4096MB
centos51 2048MHz 4096MB
centos52 2048MHz 4096MB
centos60 1024MHz 6144MB
centos61 1024MHz 6144MB
centos70 1024MHz 3072MB
centos71 1024MHz 3072MB

リソースを予約するには、仮想マシンの右クリックメニューで「設定の編集」を選びます

アドミッションコントロール 検証シナリオの前提条件03

メモリとCPUの予約に値を入力し、「OK」を押下します。

アドミッションコントロール 検証シナリオの前提条件04

設定を一覧で確認したい場合は、「クラスタ名」「監視」「CPU / メモリ」の順に押下します。

アドミッションコントロール 検証シナリオの前提条件05

アドミッションコントロール 検証シナリオの前提条件06

アドミッションコントロールの設定

クラスタリソースの割合アドミッションコントロール (デフォルト設定)

まずはデフォルト設定のアドミッションコントロールを見てみましょう。アドミッションコントロールの設定を確認するには、「クラスタ名」「設定」「vSphere HAの可用性」「編集」の順に押下します。

クラスタリソースの割合アドミッションコントロールの設定 01

「アドミッションコントロール」タブでアドミッションコントロールの設定が可能です。デフォルト設定は1台の障害を許容します。3台構成ならば33%を、4台構成ならば25%を、5台構成ならば20%を障害に備えてフェイルオーバーキャパシティとして予約します。デフォルト設定は以下の通りです。

クラスタリソースの割合アドミッションコントロールの設定 02

フェイルオーバーリソースを自動計算させたいならば、「クラスタで許容するホスト障害」の台数のみを変更しましょう。もし二重障害を考慮するような要件ならば、「クラスタで許容するホスト障害」を2以上にします。もし、33%, 25%, 20%のような自動計算で不安があり、ある程度の余裕を見積もりたいならば、「計算されたフェイルオーバーキャパシティのオーバーライド」にチェックを入れ、数値を入れる事で手動計算にする事ができます。

以下はフェイルオーバーキャパシティを33%ではなく40%として設定する例です。

フェイルオーバーキャパシティを40%に設定する事は実践では滅多にみられません。これは仕様理解のために設定した値と認識ください。

クラスタリソースの割合アドミッションコントロールの設定 03

「クラスタ名」「設定」「vSphere HAの可用性」の画面で、「アドミッションコントロール」タブを開くと設定確認が可能です。

クラスタリソースの割合アドミッションコントロールの設定 04

それでは仮想マシンを起動してアドミッションコントロールによる制限がかかるかどうかを動作確認します。ルートリソースプールに割り当てられたメモリは34.67GBで、フェイルオーバーキャパシティとして割り当てられたのは40%で、使用可能なメモリは60%です。

予約可能なメモリは以下のように計算できます。

34.67 x 0.6 = 20.81

centos50, centos51, centos52, centos60を起動します。この時点で予約しなければならないメモリは18GBですので、正常に起動できます。

クラスタリソースの割合アドミッションコントロールの動作確認 01

ここでさらにcentos61を起動しようとすると必要とする予約メモリは24GBになり、前述の計算の20.81GBを超過するため、アドミッションコントロールの機能によりエラーが返されます。

クラスタリソースの割合アドミッションコントロールの動作確認 02

スロット ポリシー アドミッション コントロール

スロットポリシーアドミッションコントロールは、仮想マシンのリソース割当最大値を「スロット」と呼ばれる単位で管理し、スロット内に収まるかどうかを計算するコントロール方法です。

公式の正確な説明は「スロット ポリシー アドミッション コントロール」を参照ください

アドミッションコントロールの設定を編集するには、「クラスタ名」「設定」「vSphere HAの可用性」「編集」の順に押下します。

スロット ポリシー アドミッション コントロールの設定01

ホストのフェイルオーバーキャパシティの定義基準に「スロット ポリシー(パワーオン状態の仮想マシン)」を選びます。

スロット ポリシー アドミッション コントロールの設定02

「クラスタ名」「設定」「vSphere HAの可用性」の画面で、「アドミッションコントロール」タブを開くと設定確認が可能です。

スロット ポリシー アドミッション コントロールの設定03

検証シナリオ1 : 4G仮想マシンの起動

以下の仮想マシンを起動するシナリオを考えます。

仮想マシン CPU予約 メモリ予約
centos50 2048MHz 4096MB
centos51 2048MHz 4096MB
centos52 2048MHz 4096MB
centos70 1024MHz 3072MB
centos71 1024MHz 3072MB

スロットポリシーは起動される仮想マシンの最大リソースを「スロット」という単位で定義します。CPUリソースのうち最も大きいのは2048GHz、メモリリソースのうち最も大きいのは4096MBです。ですので、2048GHZ, 4096GBを1スロットとして定義します。

さて、ESXi 3台の合計としてルートリソースプールに確保されているのは、30.15GHz, 34.67GBです。従って、ESXi 1台あたりに確保されるリソースは以下のようになります。

30.15GHz / 3 = 10.05GHz
34.67GHz / 3 = 11.55GHz

ESXi 1台のCPUとメモリのそれぞれのスロット数は以下のようになります。

10.05GHz / 2048MHz = 5 (端数切り捨て)
10.55GB / 4096MB = 2 (端数切り捨て)

ESXi 3台のうち1台までの障害を許容する設定ですので、起動できる仮想マシンは4スロットまでになります。これを図示すると以下のようになります。

スロット ポリシー アドミッション コントロールの動作確認01

centos50, centos51, centos52, centos70を起動します。この時点で4スロットを消費します。

スロット ポリシー アドミッション コントロールの動作確認02

ここでさらにcentos71を起動しようとすると必要とする4スロットを超過した5スロットになるので、アドミッションコントロールがエラーを返します。

スロット ポリシー アドミッション コントロールの動作確認03

検証シナリオ2 : 6G仮想マシンの起動

以下の仮想マシンを起動するシナリオを考えます。

仮想マシン CPU予約 メモリ予約
centos50 2048MHz 4096MB
centos60 1024MHz 6144MB
centos61 1024MHz 6144MB

スロットポリシーは起動される仮想マシンの最大リソースを「スロット」という単位で定義します。CPUリソースのうち最も大きいのは2048GHz、メモリリソースのうち最も大きいのは6144MBです。ですので、2048GHZ, 6144GBを1スロットとして定義します。

さて、ESXi 3台の合計としてルートリソースプールに確保されているのは、30.15GHz, 34.67GBです。従って、ESXi 1台あたりに確保されるリソースは以下のようになります。

30.15GHz / 3 = 10.05GHz
34.67GHz / 3 = 11.55GHz

ESXi 1台のCPUとメモリのそれぞれのスロット数は以下のようになります。

10.05GHz / 2048MHz = 5 (端数切り捨て)
10.55GB / 6144MB = 1 (端数切り捨て)

ESXi 3台のうち1台までの障害を許容する設定ですので、起動できる仮想マシンは2スロットまでになります。これを図示すると以下のようになります。

スロット ポリシー アドミッション コントロールの動作確認04

centos50, centos60を起動します。この時点で2スロットを消費します。

スロット ポリシー アドミッション コントロールの動作確認05

ここでさらにcentos61を起動しようとすると必要とする2スロットを超過した3スロットになるので、アドミッションコントロールがエラーを返します。

スロット ポリシー アドミッション コントロールの動作確認06

専用フェイルオーバーホスト

ESXiホストのうち1台をフェイルオーバー専用として設定し、正常時は使わないようにする事もできます。この設定をするには、「クラスタ名」「設定」「vSphere HAの可用性」「編集」の順に押下します。

専用フェイルオーバーホストの設定01

「ホストのフェイルオーバーキャパシティの定義基準」に「専用フェイルオーバーホスト」を選びます。その後、「追加」を押下します。

専用フェイルオーバーホストの設定02

フェイルオーバーホストとして選ぶESXiにチェックを入れ、「OK」を押下します。

専用フェイルオーバーホストの設定03

「OK」を押下します。

専用フェイルオーバーホストの設定04

障害が発生しない限り、フェイルオーバーホストには仮想マシンが格納されません。設定後、しばらく待つと、フェイルオーバーホストに格納された仮想マシンがvMotionされて、他のESXiホストに移動します。

専用フェイルオーバーホストの設定05

アドミッションコントロールの無効化

デフォルト設定ではESXiホストのうち1台はフェイルオーバーキャパシティとして予約しなければなりません。この挙動は縮退運転のような低予算プロジェクトでは、望まれない挙動です。もし、このような要件を求められた場合は、アドミッションコントロールを無効化する事もできます。アドミッションコントロールを無効化するには、「クラスタ名」「設定」「vSphere HAの可用性」「編集」の順に押下します。

アドミッションコントロールの無効化01

ホストのフェイルオーバーキャパシティの定義基準に「無効」を選びます。

アドミッションコントロールの無効化02

「クラスタ名」「設定」「vSphere HAの可用性」の画面で、「アドミッションコントロール」タブを開くと設定確認が可能です。

アドミッションコントロールの無効化03

パフォーマンス低下のしきい値

パフォーマンス低下の閾値は、十分にリソースを予約できるかのvalidationではなく、使用リソースと予約リソースを比較した時に十分かどうかを警告する機能です。デフォルト設定では一切の警告が発生しないですが、予約リソースを超えるリソースを使用した場合に警告を発生するように設定変更する事もできます。

パフォーマンス低下の閾値を設定変更するには、「クラスタ名」「設定」「vSphere HAの可用性」「編集」の順に押下します。

パフォーマンス低下のしきい値の動作確認01

仮想マシンで許容するパフォーマンスの低下を100%から0%に変更します。0%にした場合は使用リソースが予約リソースを超過した場合に警告が発せられます。

例えば、パフォーマンス低下の閾値を20%にした場合は、使用リソースが予約リソースを20%超過した場合に警告が発生します。

パフォーマンス低下のしきい値の動作確認02

現在のCPUやメモリの使用量は「クラスタ名」「サマリ」の画面から確認すると良いでしょう。

パフォーマンス低下のしきい値の動作確認03

適宜、メモリやCPUリソースを枯渇させ、警告が発生する事を確認します。メモリリソースを消費させる手法の1つとしてメモリディスクを作成する方法を紹介します。以下のようなコマンドでメモリディスクをマウントします。size=7Gとしている部分は消費させたいメモリの量に応じて適宜の変更をお願いします。

mkdir /var/tmp/ram
sudo mount -t tmpfs -o size=7G /dev/shm /var/tmp/ram

ddコマンドでメモリ上に適当な大きさのファイルを作成します。以下の例はbs=1M count=7kとなっていますので、ブロックサイズ1MBを7000回書き込む処理になり、計7GBのファイルが作成されます。

dd if=/dev/zero of=/var/tmp/ram/zero bs=1M count=7k conv=fdatasync

availableが小さな値を示しており、確かにメモリが消費された事を確認します。

[root@centos51 ~]# free -m
              total        used        free      shared  buff/cache   available
Mem:           7970         147         456        7176        7366         417
Swap:           511           0         511
[root@centos51 ~]# 

ある程度メモリを消費させ、しばらく待つと、「フェイルオーバーリソースを満たすことができません」との警告が発生します。

パフォーマンス低下のしきい値の動作確認04

タイトルとURLをコピーしました