概要
vSphere環境のHA機能の仮想マシンの監視機能であるアプリケーション監視を簡易に実現できるvmware-appmonitorの動作を、遅まきながら確認してみました。
内容
環境
vSphere上のゲストはRHEL7.4で確認してみました。
事前設定
vSphere環境の可用性設定で、「仮想マシンの監視」で「アプリケーションの監視」を有効にしておく必要があります。
また、VMWareのGuestSDKに含まれるlib配下は、/usr/lib64配下に転送し、bin配下のvmware-appmonitorには実行権限を付けておきました。
vmware-appmonitorのオプション
[root@hpdb0101 bin64]# ./vmware-appmonitor --help
Usage: ./vmware-appmonitor {enable | disable | markActive | isEnabled | getAppStatus | postAppState [appStateOk|appStateNeedReset]}
- enable : 監視を開始します。
- disable : 監視を無効にします。
- markActive : ゲスト(アプリケーション)が健全なことをvSphereに通知します。
- isEnabled : 監視の有効状態を確認します。
- getAppStatus : 監視の状態を確認します。
- postAppStat : 以下のサブコマンドを実行します。
- appStateOK : 不明(よくわかりません)
- appStateNeedRest : ゲストをリセットします。
- どうやら以下とのことです。(https://vdc-repo.vmware.com/vmwb-repository/dcr-public/4ac029aa-34ad-46b1-9b60-d2603b426d6e/62af2377-9649-4707-88a7-6e4b3df5376d/doc/guest_sdk_HAappmon.6.4.html#992070)
VMGuestAppMonitor_PostAppState int
ゲストOSがvSphere HAに配信したいアプリケーション状態を公開します。アプリケーションはその環境を監視し、それに応じて状態を更新する必要があります。ハートビートカウントを前提条件として有効にする必要はないので、enable()呼び出しは不要です。成功した場合は0(ゼロ)を返します。
この呼び出しに渡される単一の状態パラメータは、次のいずれかです。
■OK - ゲストのアプリケーションエージェントは状態が正常であると宣言したため、対処は不要です。
■needReset - ゲストのアプリケーションエージェントは即時リセットを要求しました。ゲストはいつでもこれをリクエストできます。
動作
監視開始からリセットまでを確認してみました。
★まずは、監視は無効状態です。
[root@hpdb0101 bin64]# ./vmware-appmonitor getAppStatus
gray
[root@hpdb0101 bin64]# ./vmware-appmonitor isEnabled
false
★監視を有効にします。
[root@hpdb0101 bin64]# ./vmware-appmonitor enable
★監視が有効になりました。
[root@hpdb0101 bin64]# ./vmware-appmonitor isEnabled
true
★ステータスもgreenになります。
[root@hpdb0101 bin64]# ./vmware-appmonitor getAppStatus
green
★健全性を通知します。
[root@hpdb0101 bin64]# ./vmware-appmonitor markActive
★ステータスもgreenのままです。
[root@hpdb0101 bin64]# ./vmware-appmonitor getAppStatus
green
★暫く健全を通知しないと・・・ステータスがredになってきます。
[root@hpdb0101 bin64]# ./vmware-appmonitor getAppStatus
red
★その後、暫くして、vSphereのHAが発動して、ゲストが再起動されます。(vCenterにも、HAが発動した旨のタスクなどが表示されます。)
さらに、appStateNeedRestを実行してみました。
こちらは、監視を有効にせずとも、利用可能なようで、即座にゲストが再起動されます。
[root@hpdb0101 bin64]# ./vmware-appmonitor getAppStatus
gray
[root@hpdb0101 bin64]# ./vmware-appmonitor isEnabled
false
[root@hpdb0101 bin64]# ./vmware-appmonitor postAppState appStateNeedReset
★ここで再起動。
PacemakerのRAなどを作成しておけば、enabled/markActive/disableの実行でアプリケーション監視を利用出来そうです。
(watchdogデバイスが使えないなどのゲストの場合は、特に有効かも知れません。)
また、postAppState appStateNeedResetを上手くStonithエージェントとしてラップすれば、fencingによる自殺は出来そうです。
関連リンク
参考にさせて頂きました