テクニカルFAQ

質問

PowerChute Network Shutdownとスクリプトを使用したNutanix ESXiハイパーバイザーのシャットダウン

このページでは、PowerChute Network Shutdownとスクリプトファイルを用いて、Nutanix VMware ESXiハイパーバイザーをシャットダウンする方法について説明しています。
スクリプトの作成を行わずシャットダウンする方法についてはこちらを参照してください。
本ページで説明するスクリプトを用いた方法により、Nutanixクラスターを安全にシャットダウンすることが可能です。
スクリプトはサンプルですので、お使いの環境に合わせて適切にカスタマイズを行ってください。

※ Nutanix Acropolis Hypervisor (以下AHV)のシャットダウンスクリプトについては、こちらを参照してください。

注意事項
※ スクリプトはサンプルですので、お客様環境に合わせ変更する必要があります。
※ シュナイダーエレクトリックは、PowerChuteでスクリプトを実行するための手順についての質問、問題についてはお答えしますが、スクリプトの内容についてのお問い合わせへの回答、動作検証、動作保証、お客様個別のスクリプトのご提供はいたしかねますので、ご了承ください。
※ スクリプトを本番環境で使用する前に必ず試験を行ってください。
※ スクリプト実行にはフリーソフトウェアのCygwinを使用します。Cygwinについての質問は開発元にご確認ください。


【対象バージョン】
PowerChute Network Shutdown for Virtualization v4.2

【対象環境】
Nutanix VMware ESXiハイパーバイザー


【本スクリプト使用時の構成】
本ページで説明するスクリプトは以下の構成で使用しています。
  • Nutanix ノード4台 (ESXiハイパーバイザー)
  • Nutanixクラスタの外部の物理マシン(Windows)

PowerChuteは外部の物理マシン(Windows)にインストールします。
  • 外部の物理マシン(Windows)上でPowerChuteによりスクリプトを実行。
  • スクリプトでは、Nutanix環境全体をシャットダウンします(ユーザーVMシャットダウン、VCSAシャットダウン、クラスタの停止、各CVMのシャットダウン、各ESXiホストのシャットダウン)。
  • 外部の物理マシン(Windows)はPowerChuteによりシャットダウンします。


【外部の物理マシンについて】
  • 外部の物理マシンはWindows OSが稼動するコンピューターで、ここにPowerChute Network Shutdown for VirtualizationおよびCygwinをインストールします。
  • PowerChuteの設定については、ページ下部の"PowerChuteについて”を参照してください。
  • Cygwin(2.8.1 x86-64)にインストールしたパッケージは以下となります。
    • inetutils-server Common networking clients and servers(version1.9.1-2)
    • openssh: The Open SSH server and client programs(version7.5p1-1)
    • openssl: A general purpose cryptography toolkit with TLS implementation(version1.0.2k-1)
    • expect:Tool for automating interactive applications(version5.45-3)
※ opensshは、CVM及びESXiホストにSSH(鍵認証パスワードなし)でログインする目的で使用します。
※ NutanixのCluster停止コマンドは対話式です。これに対応するためにExpectコマンドを使用します。
※ CygwinにてSSHの鍵ペア(パスワードなし)を作成します。作成した公開鍵は、事前にPrism (Nutanixの管理コンソール)の「Cluster lockdown」メニューから登録してください。


【スクリプトファイルについて】
サンプルスクリプトはこちらからダウンロードしてください。
スクリプトは、以下の5つのファイルから構成されています。
(1) startcygwin.bat    
    PowerChuteにシャットダウン時のコマンドファイルとして設定するスクリプトです。以下(3)のシェルスクリプトを呼び出します。
(2) Shutdown-Parameter.txt    
    各ESXiホストやCVMの情報を入力します。この情報を元にシャットダウンスクリプトを実行します。
(3) Shutdown_nutanix.sh    
    上記のパラメータ情報を読み込み、以下(4)に渡します。
(4) Shutdown_sequence.sh    
    Nutanix環境全体をシャットダウンするスクリプトです。
(5) Shutdown_nutanix.log    
    上記スクリプト実行時、/tmp配下に簡易的なログファイルを出力します。


【スクリプト実行前の設定について】
以下のようにスクリプトファイルを実行環境に配置し、実行パスを設定します。
1. "startcygwin.bat"をPowerChuteのインストールディレクトリ(group1配下)にコピーします
2. "Shutdown_nutanix.sh"、"Shutdown_sequence.sh"、"Shutdown-Parameter.txt"を、Cygwin"/home/PowerChuteの実行ユーザ"配下にコピーします
3. "startcygwin.bat"を編集し、スクリプトの実行パスをCygwinからみた絶対パスで指定します(例:PowerChuteの実行ユーザが"administrator"だった場合、"bash /home/administrator/Shutdown_nutanix.sh"となります)
4. "Shutdown_nutanix.sh"を編集し、Parameterdirにスクリプトの実行パスを指定します(例:"Parameterdir=/home/administrator"となります)
※PowerChuteのサービスを実行するアカウントを「ローカルシステムアカウント」から管理者権限のアカウント(administrator)に変更しております。

実行環境に合わせて、Shutdown-Parameter.txtに以下の情報を入力します。   
パラメーター サンプルの値 説明
VMShutdownTime= 120 ESXi上で稼働しているUserVMのシャットダウンの所要時間(サンプルでは120秒)
ESXi_NUM= 4 シャットダウン対象となるESXiホストの総数(サンプルでは4台)
VCSA_VMName= VCSA ESXi上で稼働しているVCSAのVM名(サンプルでは"VCSA"という名前を設定しています)
VCSA_ShutdownTime= 180 ESXi上で稼働しているVCSAのシャットダウンの所要時間(サンプルでは180秒)
ESXi_HOSTIP1= 192.168.0.101 1台目のESXiホストのIP Address
ESXi_USER1= root 1台目のESXiホストにSSHログインする際のユーザ名
CVM_HOSTIP1= 172.16.0.101 1台目のESXiホスト上で稼働しているCVMサーバのIP Address
CVM_USER1= nutanix 1台目のESXiホスト上で稼働しているCVMサーバにSSHログインする際のユーザ名(サンプルでは"nutanix")
CVM_VMName1= NTNX-A-CVM 1台目のESXiホスト上で稼働しているCVMサーバのVM名(サンプルでは"NTNX-A-CVM")

*2台目以降の情報を設定する際は、パラメーターの末尾に数値を加えてください。    
例:2台目のESXiホストのIP Addressとユーザ名を設定する場合    
・ESXi_HOSTIP2=192.168.0.102    
・ESXi_USER2=root    
サンプルのShutdown-Parameter.txtは、4台構成で作成しています。    


【スクリプト実行時のシャットダウンシーケンスについて】
本スクリプトを使用した際のシャットダウンシーケンスの例は以下のとおりです。

STEP 1    停電検知後、PowerChuteが"startcygwin.bat"を実行します
STEP 2    "Shutdown_nutanix.sh"が実行されます
STEP 3    パラメータ情報(Shutdown-Parameter.txt)を読み込みます。
STEP 4    読み込んだ情報を引数として、スクリプト(Shutdown_sequence.sh)を実行します
STEP 5    各ESXiホストにSSHでログインし、UserVM情報を取得します(vim-cmdコマンドを使用しています)
STEP 6    UserVMのシャットダウンを開始します
STEP 6-1    ・VMwareToolsがインストールされている場合:ゲストのシャットダウンを実行します(vim-cmd vmsvc/power.shutdownを使用しています)
STEP 6-2    ・VMwareToolsがインストールされていない場合:パワーオフを実行します(vim-cmd vmsvc/power.offを使用しています)
STEP 7    120秒(パラメータ:VMShutdownTime)待機します
STEP 8    ESXiホストにSSHでログインし、VCSAのシャットダウンを開始します
STEP 9    180秒(パラメータ:VCSA_ShutdownTime)待機します
STEP 10    稼働しているUserVMがまだある場合、強制的にパワーオフを実行します
STEP 11    固定値30秒待機します(*本パラメータはShutdown_sequence.shで"VMShutdownForce"として定義しています)
STEP 12    CVMへSSHでログインし、Nutanixクラスタを停止します(Controller VM Commands / cluster stopコマンドを使用しています)
STEP 13    固定値90秒待機します(*本パラメータはShutdown_sequence.shで"ClusterStopTime"として定義しています)
STEP 14    CVMへSSHでログインし、CVMサーバのシャットダウンを実行します(sudo shutdown -h nowコマンドを使用しています)
STEP 15    各ESXiホストにメンテナンスモードを実行します(esxcli system maintenanceModeコマンドを使用しています)
STEP 16    各ESXiホストのシャットダウンを開始します(esxcli system shutdown poweroffコマンドを使用しています)
STEP 17    コマンド実行時間経過後、PowerChuteは自身のマシンのシャットダウンを開始します

※復電後のシステムの起動は手動で行ってください。    

【PowerChuteの設定について】
  • PowerChuteはVirtualization版を使用してください。    
  • インストール時、「VMwareサポートの設定」画面にて、「VMwareサポートを有効にしない」を選択してください。    
  • PowerChuteから、「.sh」ファイルは直接実行は出来ません。(実行できるのは、.cmdファイルか、.batファイルのみです)  今回の検証では、「Shutdown_nutanix.sh」を実行させる、呼び出し用のバッチファイルをPowerChute上に設定しています。    
設定方法は以下の通りです。    
(1) PowerChuteの「シャットダウンの設定」メニュー「コマンド実行」セクションに呼び出し用のバッチファイル(startcygwin.bat)を設定。
    ・設定値(所用時間):※「Shutdown_nutanix.sh」を手動で実行してどのくらい時間がかかるかを実際に確認し、それよりも長い時間を設定。検証時には600秒を設定しています。
(2) PowerChute の「イベント設定」で、「UPSオンバッテリ」のシャットダウン設定で「UPSの電源をオフにする」を選択。
(3) Network Management Cardで、    
     「Low battery Duration」は12分に設定
     「On-Battery Shutdown Behavior」は「Restart when power is restored」に設定
    
【参考】PowerChuteとNMCの各パラメータの内容については、こちらをご参照ください。




 
これは役に立ちましたか?
私たちは情報を改善するために何ができるのでしょうか?