テクニカルFAQ

質問

PowerChute Network Shutdownとスクリプトを使用したNutanix Acropolis Hypervisor (AHV)のシャットダウン

このページでは、PowerChute Network Shutdownとスクリプトファイルを用い、Nutanix Acropolis Hypervisor (以下AHV)をシャットダウンする方法について説明しています。
PowerChuteはAHVに対応していないため、このページに記載の方法によりシャットダウンを行う必要があります。
スクリプトはサンプルですので、お使いの環境に合わせて適切にカスタマイズを行ってください。

※ Nutanix ESXiハイパーバイザーのシャットダウンスクリプトについては、こちらを参照してください。


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


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

【対象環境】
Nutanix Acropolis Hypervisor (AHV)


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


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


【外部の物理マシンについて】
  • 外部の物理マシンはWindows OSが稼動するコンピューターで、ここにPowerChute Network Shutdown for VirtualizationおよびCygwinをインストールします。
  • インストール後、Windows環境変数Pathに“C:\cygwin64\bin”を追加しています。
  • 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の「Cluster lockdown」メニューから登録してください。


【スクリプトファイルについて】
スクリプトは、以下の3つのファイルから構成されています。
(1) startcygwin.bat  
    PowerChuteにシャットダウン時のコマンドファイルとして設定するスクリプトです。(2)のシェルスクリプトを呼び出します。
(2) Shutdown_Sequence_forAHV.sh
    Nutanix環境全体をシャットダウンするスクリプトです。各AHVホストやCVMの情報を入力します。
(3) VM_Shutdown_forAHV.sh
    Nutanix上の仮想マシン(CVMを除く)をシャットダウンするスクリプトです。


【スクリプト実行前の設定について】
以下のようにスクリプトファイルを実行環境に配置し、実行パスを設定します。
1. "startcygwin.bat"をPowerChuteのインストールディレクトリ(group1配下)にコピーします
2. "Shutdown_Sequence_forAHV.sh"、"VM_Shutdown_forAHV.sh"をCygwin"/home/<PowerChuteの実行ユーザ>"配下にコピーします
3. "startcygwin.bat"を編集し、スクリプトの実行パスをCygwinからみた絶対パスで指定します(例:PowerChuteの実行ユーザが"administrator"だった場合、"bash /home/administrator/Shutdown_Sequence_forAHV.sh"となります)
4. "Shutdown_Sequence_forAHV.sh"および"VM_Shutdown_forAHV.sh"を編集し、実行環境に合わせて以下の情報を入力します。

"Shutdown_Sequence_forAHV.sh"に入力する情報 
パラメーター サンプルの値 説明
CVM_IP1= 192.168.0.121 1台目のCVMサーバのIP Address
CVM_USER= nutanix 各CVMサーバにSSHログインする際のユーザ名("nutanix"を設定しています)
AHV_HostIP1= 192.168.0.111 1台目のAHViホストのIP Address
AHV_USER= root 1台目のAHVホストにSSHログインする際のユーザ名("root"を設定しています)
ClusterStopTime= 90 Nutanixクラスター停止所要時間(90秒で設定しています)
CVMShutdownTime= 90 CVMサーバのシャットダウン所要時間(90秒で設定しています)
UservmShutdownScript= 'C:\\PCNSSCript\\VM_Shutdown_forAHV.sh' "VM_Shutdown_forAHV.sh"の保存先

*2台目以降の情報を設定する際は、パラメーターの末尾に数値を加えてください。    
例:2台目のCVMサーバ及びAHVホストのIP Addressを設定する場合
・CVM_IP2=192.168.0.122
・AHV_HostIP2=192.168.0.112
サンプルの"Shutdown_Sequence_forAHV.sh"は、4台構成で作成しています。   

"VM_Shutdown_forAHV.sh"に入力する情報
パラメーター サンプルの値 説明
VMShutdownTime= 120 VMのシャットダウン所要時間(120秒で設定しています)
VMForceOffTime= 90 VMの強制パワーオフ所要時間(90秒で設定しています)
※PowerChuteのサービスを実行するアカウントを「ローカルシステムアカウント」から管理者権限のアカウントに変更しています。


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

Step 1    停電検知後、PowerChuteが"startcygwin.bat"を実行します
Step 2    "Shutdown_Sequence_forAHV.sh"が実行されます。以下の順番でNutanix環境全体をシャットダウンします。
Step 2-1    CVMへSSHでログインし、外部の物理マシン(Windows)上の"VM_Shutdown_forAHV.sh"を実行します。
Step 2-2    現在「ON」中の仮想マシンの一覧を取得します。(aCLI / vm.listコマンドを使用しています)
Step 2-3    取得した仮想マシンのVM UUIDを引数として、仮想マシンをシャットダウンします。(aCLI /  vm.list vm.shutdownコマンドを使用しています)
Step 2-4    固定値120秒待機します(*本パラメータは"VM_Shutdown_forAHV.sh"で"VMShutdownTime"として定義しています)
Step 2-5    再度、現在「ON」中の仮想マシンの一覧を取得します。(aCLI / vm.listコマンドを使用しています)
Step 2-6    取得した仮想マシンのVM UUIDを引数として、仮想マシンを強制パワーオフします。(aCLI / vm.force_offコマンドを使用しています)
Step 2-7    固定値90秒待機します(*本パラメータは""VM_Shutdown_forAHV.sh""で"VMForceOffTime"として定義しています)
Step 2-8    CVMからログオフします。
Step 3    CVMへSSHでログインし、Nutanixクラスタを停止します(Controller VM Commands / cluster stopコマンドを使用しています)
Step 4    固定値90秒待機します(*本パラメータはShutdown_Sequence_forAHV.shで"ClusterStopTime"として定義しています)
Step 5    CVMへSSHでログインし、CVMサーバのシャットダウンを実行します(sudo shutdown -h nowコマンドを使用しています)
Step 6    固定値90秒待機します(*本パラメータはShutdown_Sequence_forAHV.shで"CVMShutdownTime"として定義しています)
Step 7    AHVホストへSSHでログインし、それぞれをシャットダウンします。(shutdown -h nowコマンドを使用しています)
Step 8    コマンド実行時間経過後、PowerChuteは自身のマシンのシャットダウンを開始します

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


【PowerChuteの設定について】
  • PowerChuteはVirtualization版を使用してください。    
  • インストール時、「VMareサポートの設定」画面にて、「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の各パラメータの内容については、こちらをご参照ください。




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