VMware ESXi7 スタンドアローンでUPS連動


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 [email protected] poweroff
  • 電源喪失状態でもssh通信できるようにvSwitchを構成しておく:
    • 192.168.1.2 → 管理ネットワーク用ポートグループManagement Networkに属するVMkernelポートに割り当てられたIPアドレス
    • ゲスト仮想マシンlinux-1はポートグループVM Network 1に属している
    • Management NetworkVM Network 1ポートグループが同一vSwitchトポロジ内に属している
  • ゲスト仮想マシンlinux-1からESXiホストにsshログインできるように設定しておく:
    1. linux-1のスクリプト実行ユーザーで鍵ペアを作成
      スクリプト実行ユーザーのホームディレクトリがない場合はssh -i <id_rsaファイル>を活用
    2. VMware Host Client 上のナビゲータ>ホスト>アクション>サービス>SSHを有効化
    3. ESXiホストの/etc/ssh/keys-root/authorized_keysに公開鍵を追加

poweroffの挙動

ゲスト仮想マシンに対して『ナビゲータ>ホスト>管理>システム>自動起動>停止アクション』を実行した後、『停止遅延待機』に指定された時間だけ、『シャットダウン』にしておく(『パワーオフ』だとクリーンシャットダウンにならない)。

項目
有効 はい
起動遅延時間 0s
停止遅延時間 120s
停止アクション シャットダウン
ハートビートを待機 いいえ

電源回復後の挙動

  1. UPSから給電が再開
  2. BIOSの通電時自動起動する設定に従って物理マシンが起動
  3. ESXiが起動
  4. 各ゲスト仮想マシンが『自動起動』設定の内容に従ってお行儀よく起動

以上