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が起動
- 各ゲスト仮想マシンが『自動起動』設定の内容に従ってお行儀よく起動
以上