Eaton UPS(イートン 無停電電源装置) テクニカルブログ

【IPM】 Nutanix Hypervisor ESXi のシャットダウン検証(vCenterコネクター編)

NutanixのハイパーバイザーがVMware ESXi構成のシャットダウン検証を実施しました。

※このブログのIPMのコネクターは、vCenterコネクターを利用しています。

【重要】新ライセンス販売のお知らせ

2020年9月、IPMの新ライセンス(Optimize License)を販売しました。
テクニカルブログ内の文章および画像の旧ライセンス(Silver License、Gold License)は、全てOptimize Licenseに置き換えてお読み下さい。よろしくお願い致します。

検証結果

  • 仮想マシンのシャットダウンは、IPMの「ゲストのシャットダウン」アクション。
  • クラスター停止は、スクリプト。
  • CVM シャットダウンは、スクリプト。
  • ESXi シャットダウンは、スクリプト。

前提条件

  • Nutanixの外部にあるWindowsマシンにIPMをインストールすること
  • Eaton IPM Silver License以上を購入済みのこと

検証環境

Nutanix

  • Dell EMC XC630 x3
    • Hypervisor : VMware ESXi 6.5.0
    • Nutanix AOS : 5.10.4.1
    • CVM
    • VM vCSA 6.5 x1
    • VM Windows Server 2016 x3

Server

  • Dell EMC R730 x1
    • Hypervisor : VMware ESXi 6.7U1
    • VM Windows Server 2016 x1 : Eaton IPM 1.65 with Gold License
    • VM Windows Server 2016 x1 : DNS

UPS(無停電電源装置)

  • Eaton 9PX UPS + Eaton Network-M2 x1

環境スクリーンショット

vCenter Server

xc630-1

xc630-2

xc630-3

R730

Nutanix Prism ホーム

Nutanix Prism 仮想マシン

シャットダウンフロー (停電時)

  1. 仮想マシン グループ1 シャットダウン
  2. 仮想マシン グループ2 シャットダウン
  3. 仮想マシン グループ3 シャットダウン
  4. 仮想マシン vCSA シャットダウン
  5. クラスター停止
  6. CVM シャットダウン
  7. ESXi シャットダウン

起動フロー (復電時)

手動による起動となります。

検証環境のシャットダウン設定

ここから、実際の設定手順を解説します。
とても長くなるため、簡易な箇所・繰り返しのオペレーションになる箇所は、手順を省略しております。

Java JRE 8 インストール

IPMをインストールする前に、Java JRE 8 をインストールします。
あとからJava JRE 8 をインストールした場合、IPMのサービスを「停止」→「開始」します。

Java SE Runtime Environment 8 Downloads

Eaton IPM 1.65 インストール

インストール手順は省略します。

Eaton UPS Software Downloads

初期設定

ログイン

ログイン:admin、パスワード:adminでログインします。

更新設定の編集

設定 > システム > 更新設定の編集 を押します

間隔:[指定なし]に変更して保存します

モジュール設定の編集

設定 > システム > モジュール設定の編集 を押します

[シャットダウン]、[インフラストラクチャーコネクター]、[冗長性]にチェックを入れて保存します

ライセンス適用

シルバーまたはゴールドライセンスにアップグレードするには、「プロダクトキー」が必要となります。
弊社から届いた「プロモーションコード」をご準備の上、下記URLの手順に従って「プロダクトキー」を入手して下さい。

シルバーライセンス、ゴールドライセンスのプロダクトキー取得手順

インフラストラクチャーコネクター

設定 > インフラストラクチャーコネクター > コネクターの追加

プルダウンの中から、VMware vCenterを選択し、vCenterのIPアドレス、ユーザー名、パスワードを入力して保存します。

vCenterコネクターが追加されました

ノードリストに戻ると、vCenter, Cluster, ESXi, Virtual Machineが追加されています。

UPSを選択し、[ノードアクセスパラメーターの設定]を押します。ネットワークカードのユーザー名とパスワードを入力して下さい。

[構成ポリシー]と[イベントルール]と[アクション]の作成手順

[構成ポリシー]、[イベントルール]、[アクション]の作成手順は、こちらのテクニカルブログにて解説しております。

ここから先は、最低限の画像のみを掲載しています。作成手順をよく読みながら設定を行ってください。

VM Group 1 作成

構成ポリシー

構成ポリシーネームは任意。ただし、半角英数のみで作成のこと。全角NG。
続いて、ターゲットノードを編集します。
グループ1に所属させたい仮想マシンを選択して、右側に移動します。
クラスリストは設定しません。

保存します。

VM Group 2 作成

構成ポリシー

同じ手順でグループ2に仮想マシンを所属させます。

VM Group 3 作成

構成ポリシー

同じ手順でグループ3に仮想マシンを所属させます。

シャットダウン シーケンス

※画面スクロールを減らすために、あえてここでシャットダウン シーケンスを掲載しています。

UPSが5分間バッテリー運転すると、シャットダウンシーケンスが開始する設定にしています。
 5分経過前に復電すると、何も実行されません。
 5分経過後に復電しても、UPSのシャットダウンまで全てのアクションが実行されます。

バッテリー運転開始を起点として、

5分後:VM Group 1 シャットダウン開始。シャットダウン終了まで最大120秒と想定
6分後:VM Group 2 シャットダウン開始。シャットダウン終了まで最大120秒と想定
7分後:VM Group 3 シャットダウン開始。シャットダウン終了まで最大120秒と想定
8分後:VM vCSA シャットダウン開始。シャットダウン終了まで最大180秒と想定
11分後:スクリプト開始。スクリプト終了まで最大360秒と想定

※タイマーは環境によって大きく異なります。環境に適切なタイマーを設定して下さい。
※IPM Serverは意図的にシャットダウンしていません。シャットダウンが必要な場合、シャットダウンする設定にして下さい。

UPS シャットダウン設定

Network-M2

保護 > 停電ポリシー

カスタムポリシーを選択。
バッテリーモードの時間が[300秒]を経過した場合、シャットダウンシーケンス開始。
 または
バックアップ可能時間が残り[720秒]を下回った場合、シャットダウンシーケンス開始。

IPM

設定 > シャットダウン

パワーソースを編集します

パワーソース: 任意のUPS
負荷セグメント: マスター出力
ログイン: admin
パスワード: Network-M2に設定したパスワード

シャットダウン構成を編集します

Remote sequence shutdown delay (秒): 600
シャットダウン継続期間 (秒): 120
シャットダウンのタイプ: スクリプト
シャットダウンスクリプト: 空白

※UPSがシャットダウンシーケンスを開始してから、Remote sequence shutdown delayに設定した秒後に[シャットダウンのタイプ]を実行します。ここではスクリプトを選択して下の欄を空白にしているため、何も実行しません。IPM Serverをシャットダウンさせる場合、シャットダウンのタイプを[シャットダウン]に変更します。600秒後にシャットダウンを開始します。

Network-M2

保護 > エージェントの設定 に移動すると、IPMで設定したタイマーが反映されています。

エージェントの一覧でも確認可能です

VM Group 1 シャットダウン設定

1番最初に実行したいアクションには、[構成ポリシー]と[イベントルール]と[アクション]を作成します。そして3つを関連付けします。

構成ポリシー

[パワーソース]のUPSが[タイマー]の秒数バッテリー運転したら、[ターゲットノード]がシャットダウン基準に到達するポリシーを作成します。
このポリシーはトリガーの役割しかないため、利用できるノードリストの中から任意の1個を選択(UPSはNG)すれば問題ありません。選択で迷うようであれば、仮想マシンのいずれかで良いでしょう。

※ここで選択した[ノード]は、次に作成するイベントルールの[ソース]と一致する必要があります。

イベントルール

ソースのノードがシャットダウン基準に到達した時、イベントが発生するようにイベントを新規作成します。

アクション

VM Group 1に所属する仮想マシンをシャットダウンするアクションを作成します。

イベントリストに先ほど作成したイベントを選択して、イベントとアクションを関連付けています。

シャットダウンゲストタイムアウトは、シャットダウン実行からxx秒後にパワーオフを実行します。シャットダウンを実行しても(フリーズ等で)落ちなかった時のためのソリューションです。使用しない場合、0秒を設定します。

イベント連鎖 作成

イベントルール

60秒毎にイベントが発生するようにイベントルールを作成します。解説は10連鎖にしていますが、アクションの個数や所要時間に応じて20連鎖、30連鎖が必要になる場合があります。多めに作成しておくことを推奨致します。

<ポイント>

  • イベント作成時、イベントのコピーは使用しない。常に新規作成する。
  • ルールトリガー(赤線)は、1つ前のイベントを選択。
  • ルールソース(青線)は、構成ポリシーのターゲットノードを選択。
  • 有効期間(緑線)は、イベントの連鎖間隔。
  • 関連するアクションに[通知]と[イベントログ]を追加する。
  • イベント作成後、最下部の [OK] または [適用] を押す。

1分後に発生するイベント

2分後に発生するイベント

3分後に発生するイベント

4分後に発生するイベント

5分後に発生するイベント

6分後に発生するイベント

7分後に発生するイベント

8分後に発生するイベント

9分後に発生するイベント

10分後に発生するイベント

VM Group 2 シャットダウン設定

イベント連鎖で[イベントルール]は作成したので、[アクション]を作成します。

アクション

VM Group 2に所属する仮想マシンをシャットダウンするアクションを作成します。

イベントリスト: イベント連鎖で作成したイベントの中から任意を選択して、イベントとアクションを関連付けます。ここでは1分後イベントを指定しています。

VM Group 3 シャットダウン設定

イベント連鎖で[イベントルール]は作成したので、[アクション]を作成します。

アクション

VM Group 3に所属する仮想マシンをシャットダウンするアクションを作成します。

イベントリスト: イベント連鎖で作成したイベントの中から任意を選択して、イベントとアクションを関連付けます。ここでは2分後イベントを指定しています。

VM vCSA シャットダウン設定

イベント連鎖で[イベントルール]は作成したので、[アクション]を作成します。

アクション

仮想マシンvCSAをシャットダウンするアクションを作成します。

イベントリスト: イベント連鎖で作成したイベントの中から任意を選択して、イベントとアクションを関連付けます。ここでは3分後イベントを指定しています。

クラスター停止

IPMのアクションには、Nutanixのクラスター停止がありません。そのため、スクリプトで制御する必要があります。ここではTeraTermで制御していますが、Nutanix Command-Line Interface (nCLI)、PowerShell Cmdletsで制御する方法もあります。

C:\scripts\nutanix_cluster_stop.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.31' 
USERNAME = 'nutanix' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; CVM1にSSH接続
connect COMMAND

;; 接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait '$'
if result = 0 then
    disconnect 0
    end 
endif

;; クラスター停止
sendln 'echo Y | cluster stop'

;; クラスター停止の待機時間(秒)
pause 120

;; SSH切断
sendln 'exit'

CVM シャットダウン

CVMのシャットダウンもスクリプトで制御する必要があります。

C:\scripts\nutanix_cvm1_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.31' 
USERNAME = 'nutanix' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; CVM1にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait '$'
if result = 0 then 
    disconnect 0
    end 
endif

;; CVM1シャットダウン
sendln 'sudo shutdown -h now'

;; SSH切断
sendln 'exit'

C:\scripts\nutanix_cvm2_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.32' 
USERNAME = 'nutanix' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; CVM2にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait '$'
if result = 0 then 
    disconnect 0
    end 
endif

;; CVM2シャットダウン
sendln 'sudo shutdown -h now'

;; SSH切断
sendln 'exit'

C:\scripts\nutanix_cvm3_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.33' 
USERNAME = 'nutanix' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=password /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; CVM3にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait '$'
if result = 0 then 
    disconnect 0
    end 
endif

;; CVM3シャットダウン
sendln 'sudo shutdown -h now'

;; SSH切断
sendln 'exit'

ESXi シャットダウン

ESXiのシャットダウンもスクリプトで制御する必要があります。

C:\scripts\nutanix_esxi1_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.21' 
USERNAME = 'root' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=challenge /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; ESXi1にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait ']'
if result = 0 then 
    disconnect 0
    end 
endif

;; ESXi1シャットダウン
sendln 'poweroff'

;; SSH切断
sendln 'exit'

C:\scripts\nutanix_esxi2_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.22' 
USERNAME = 'root' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=challenge /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; ESXi2にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait ']'
if result = 0 then 
    disconnect 0
    end 
endif

;; ESXi2シャットダウン
sendln 'poweroff'

;; SSH切断
sendln 'exit'

C:\scripts\nutanix_esxi3_shutdown.ttl

;; ########## 初期設定 ########## 
;; 接続先ホスト/ユーザ名/パスワード設定 
HOSTADDR = '10.3.57.23' 
USERNAME = 'root' 
PASSWORD = 'nutanix/4u' 
;; ############################## 

COMMAND = HOSTADDR 
strconcat COMMAND ':22 /ssh /2 /auth=challenge /user=' 
strconcat COMMAND USERNAME 
strconcat COMMAND ' /passwd=' 
strconcat COMMAND PASSWORD

;; ESXi3にSSH接続
connect COMMAND

;;接続出来ない場合はマクロ終了
if result <> 2 then
    end 
endif

;; 5秒以内にプロンプトが表示されないとマクロ終了
timeout = 5
wait ']'
if result = 0 then 
    disconnect 0
    end 
endif

;; ESXi3シャットダウン
sendln 'poweroff'

;; SSH切断
sendln 'exit'

バッチファイル作成

マクロを連続して実行するように、1つのバッチファイルにします。

C:\scripts\nutanix_esxi_shutdown.bat

"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_cluster_stop.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_cvm1_shutdown.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_cvm2_shutdown.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_cvm3_shutdown.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_esxi1_shutdown.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_esxi2_shutdown.ttl"
"C:\Program Files (x86)\teraterm\ttpmacro.exe" /I /V "C:\scripts\nutanix_esxi3_shutdown.ttl"

タスク スケジューラ作成

バッチファイルを実行するタスクスケジューラを作成します。

<全般>

名前:任意
ユーザーがログオンしているかどうかにかかわらず実行する:選択
最上位の特権で実行する:有効
構成:Windows Server 2003、Windows XP、Windows 2000

<トリガー>

特に変更なし

<操作>

バッチファイルを実行するように設定します。

<条件>

コンピューターを AC 電源で使用している場合のみタスクを開始する:無効

<設定>

特に変更なし

タスク スケジューラ 実行アクション 作成

タスク スケジューラを実行するアクションを作成します。

アクション

イベントリスト: イベント連鎖で作成したイベントの中から任意を選択して、イベントとアクションを関連付けます。ここでは6分後イベントを指定しています。
アクションタイプ:コマンド

コマンド

schtasks.exe /run /tn "nutanix_shutdown"

※青線部はタスクスケジューラの名前です

シャットダウンテスト

最初に、各アクションが想定した動作をするか確認します。アクションを選択し、[選択したアクションのテスト]を押すとそのアクションが動作します。
各アクションの正常動作を確認すると同時に、各アクションの所要時間を計測し、必要に応じて関連付けるイベント(アクションのイベントリスト)を変更します。アクションが実行されるタイミングを早くしたり遅くしたりできます。
また、IPMのRemote sequence shutdown delayが短いとUPSが先にシャットダウンしてしまいます。一時的にRemote sequence shutdown delayを長くしておくと安全です。

次に、UPSのフロントパネル(またはネットワークカードのホーム画面)で停電時のバッテリーランタイムを確認します。バッテリーランタイムがシャットダウン処理時間より短い場合、バッテリーランタイムを延長する必要があります。拡張バッテリーをご購入願います。

最後に、UPSの入力電源ケーブルを抜いてバッテリー運転にします。

おわりに

本検証にあたり、検証環境を提供して頂きましたDell様に心より御礼申し上げます。

Dell EMC XC Series および Dell EMC PowerEdge の電源保護は、Eaton UPSとEaton IPMを提案させて頂きます。

ページの先頭へ