VMware ESXi7 スタンドアローンでUPS連動
前提
- お金がない
要件
- 電源喪失時に稼働している仮想環境上のシステム全体をクリーンシャットダウンしたい
環境
- 対象システムの物理マシンは無停電電源装置(UPS)から給電している
- 物理マシン上には無料で使える仮想化ハイパーバイザー
VMware ESXi 7.0 Update 2(ESXiホスト)が稼働している - UPSは電源状況をUSB経由で通知する機能を有している
- ESXiホストのUSBパススルー機能を用いてゲスト仮想マシンがUPSからの通知を受信できる
(仮想環境関係ないので詳しくは『apcupsd』の設定記事を参照のこと) - 全てのゲスト仮想マシンには
VMWare Toolsがインストールされており、ESXiホストからのシャットダウン通知を受信できる
電源異常検出時のトリガー
ゲスト仮想マシンlinux-1は、UPSからの電源喪失通知を受けて下記スクリプトを実行する。
# !/bin/sh
sync
ssh root@192.168.1.2 poweroff
- 電源喪失状態でもssh通信できるようにvSwitchを構成しておく:
-
192.168.1.2→ 管理ネットワーク用ポートグループManagement Networkに属するVMkernelポートに割り当てられたIPアドレス - ゲスト仮想マシン
linux-1はポートグループVM Network 1に属している -
Management NetworkとVM Network 1ポートグループが同一vSwitchトポロジ内に属している
-
- ゲスト仮想マシン
linux-1からESXiホストにsshログインできるように設定しておく:-
linux-1のスクリプト実行ユーザーで鍵ペアを作成
スクリプト実行ユーザーのホームディレクトリがない場合はssh -i <id_rsaファイル>を活用 - VMware Host Client 上の
ナビゲータ>ホスト>アクション>サービス>SSHを有効化 - ESXiホストの
/etc/ssh/keys-root/authorized_keysに公開鍵を追加
-
poweroffの挙動
ゲスト仮想マシンに対して『ナビゲータ>ホスト>管理>システム>自動起動>停止アクション』を実行した後、『停止遅延待機』に指定された時間だけ、『シャットダウン』にしておく(『パワーオフ』だとクリーンシャットダウンにならない)。
| 項目 | 値 |
|---|---|
| 有効 | はい |
| 起動遅延時間 | 0s |
| 停止遅延時間 | 120s |
| 停止アクション | シャットダウン |
| ハートビートを待機 | いいえ |
電源回復後の挙動
- UPSから給電が再開
- BIOSの通電時自動起動する設定に従って物理マシンが起動
- ESXiが起動
- 各ゲスト仮想マシンが『自動起動』設定の内容に従ってお行儀よく起動
以上