テクニカルFAQ

質問

PowerChute Network Shutdownで、 vSANクラスターに含まれるESXiホストがメンテナンスモードに移行せずシャットダウンする

このページでは、PowerChute Network Shutdownで、 vSANクラスターに含まれるESXiホストがメンテナンスモードに移行せずシャットダウンする問題の説明と、その回避策について説明しています。
PowerChute Network ShutdownのVMware vSAN対応については、こちら(FA53879)のページも参照してください。

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

【対象バージョン】
PowerChute Network Shutdown for Virtualization v4.2
※ 本構成では、PowerChuteはクラスター外のマシンにインストールするため、PowerChute Network Shutdown for Virtualizationに含まれるWindows用のインストーラーファイルを使用してください。

【問題の概要】
PowerChute Network Shutdownが、vSANクラスターに含まれるESXiホストをシャットダウンする際、ホストのうち1台がメンテナンスモードに移行せずシャットダウンする。
この際、イベントログに以下のイベントが記録されます。
"ホスト<ESXi ホストのIP Address/FQDN>でメンテナンスモードに入ることができませんでした。"

【対象環境】
VMware ESXi バージョン6.x以降

【回避策】
本問題を回避するには、すべてのゲストVMが停止した後にメンテナンスモードを1台ずつ順番に実行していく必要があります。
そのために、以下(1)、(2)をPowerChuteに設定してください。
(1) PowerChuteが発行するメンテナンスモードをスキップする設定を追加する
(2) ホストのメンテナンスモード移行を1台ずつ実行するスクリプトをシャットダウンコマンドに登録する

以下に、上記(1)のPowerChuteの設定方法と、(2)のスクリプト実行時の構成や注意事項等について説明します。

(1) :
【メンテナンスモードタスクをスキップする設定方法】
以下の手順に従って設定してください。
1. PowerChuteのサービスを停止します(例:コントロールパネル>管理ツール>サービス>PowerChute Network Shutdown>サービスの停止)
2. PowerChuteのインストールディレクトリ配下\comp内にあるpcns.jarファイルの名前を変更します(例:back.pcns.jar)
3. 本ページ下部に添付されている"pcns.jar"をダウンロードし、上記のフォルダ内にコピーします。
4. PowerChuteのインストールディレクトリ配下にあるpcnsconfig.iniファイルの[HostDetails]セクションに、以下の1行を追加します。
    Skip_Maintenance_Mode = true

設定例:
[HostDetails]
ConfigurationMode = Managed
Server = 192.168.0.212
Server_Protocol = https
Server_PORT = 443
is_VCSA = true
Skip_Maintenance_Mode = true

5. PowerChuteのサービスを開始します

注意1: 上記設定後、PowerChuteのサービス起動時に以下のメッセージがイベントログに出力されるようになりますが、表示上の問題のため、本エラーは無視して頂くようお願いします。
「警告: 無効なキーSkip_Maintenance_ModeをINIファイルのセクションHostDetailsから削除する必要があります。」

注意2: PowerChuteによるシャットダウンが開始された後、上記設定によりメンテナンスモード実行をスキップしますが、VCSAがCluster上で稼働していた場合は以下のメッセージがイベントログに出力されます。本メッセージも表示上の問題のため、無視して頂くようお願いします。
「VCSA VMをシャットダウン中のため、ホスト<ESXi ホストのIP Address/FQDN>でメンテナンスモードタスクがキャンセルされました。」


(2) :
【本スクリプト使用時の構成】
本ページで説明するスクリプトは以下の構成で使用しています。
  • vSANクラスターに含まれる3台のVMware ESXi 6.5ホスト (うち1台がウィットネスサーバー)
  • vSANのVM設定は“FTT = 1”
  • 全てのサーバーは1台のUPSによって保護される
  • vSANクラスター外の物理マシン(Windows)
※ PowerChuteは外部の物理マシン(Windows)にインストールします。
※ vCenter Serverのインストール先は物理マシンとクラスター内のホスト上のいずれでも動作可能です。
※ PowerChute Network Shutdown for Virtualizationの機能により、ホストシャットダウンを実行します。その際、スクリプトにより予めホストをメンテナンスモードに移行させ、PowerChuteがホストシャットダウンを実行します。
※ 外部の物理マシン(Windows)はPowerChuteによりシャットダウンします。

Windows環境の場合

【スクリプトファイルについて】
サンプルスクリプトは本ページに添付していますので、ダウンロードしてください。
スクリプトは、以下の2つのファイルから構成されています。

(1) vSAN_shutdown.bat
PowerChuteにシャットダウン時のコマンドファイルとして設定するスクリプトです。以下(2)のマクロを呼び出します。

(2) vSAN_shutdown_macro.ttl
ESXiホストシャットダウン前に、設定したESXiホストに対してメンテナンスモードを実行します。

【スクリプト実行前の設定について】
1. “vSAN_shutdown.bat”に記載されているファイルパスを変更します。”ttpmacro.exe”と”vSAN_shutdown_macro.ttl”を実行環境に合わせて絶対パスで指定してください。

2. 実行環境に合わせて、vSAN_shutdown_macro.ttlに含まれる以下のパラメーターを変更します。
パラメーター 初期値 説明
Num= 3 クラスターに含まれるシャットダウン対象のESXiホストの総数を入力します
ESXi_HOST_IP[n]= 192.168.0.212
(n=1の場合)
n’台目のESXiホストのIP Addressを入力します(上記ホストの台数分登録します)
UserName = root ESXiホストにログインする際のユーザー名
Password = root ESXiホストにログインする際のパスワード
Log file vSAN_shutdown_log.txt 初期設定はPowerChuteインストールディレクトリ配下に左記の名前で簡易ログを出力します。必要に応じてファイルパス、およびファイル名を変更してください。

【設定方法】
  1. PowerChute Network Shutdownを、クラスター外部のWindowsマシンにインストールします。
  2. PowerChuteをインストールしたマシンに、Tera Termマクロ機能をインストールします。
  3. スクリプトファイルを、PowerChuteのインストールフォルダに保存します。
    (例: C:\Program Files\APC\PowerChute\group1 on Windows)
  4. PowerChuteのコマンド実行設定で、“vSAN_Shutdown.bat” を設定します。

【PowerChuteの設定について】
  • PowerChuteはVirtualization版を使用してください。   Virtualization版に含まれるWindows用のインストーラーファイルを使用してください。 詳細はこちらを参照してください。
  • インストール時、「VMwareサポートの設定」画面にて、「VMwareサポートを有効にする」を選択してください。    
  • PowerChuteの「シャットダウンの設定」メニュー「コマンド実行」セクションに呼び出し用のバッチファイル(vSAN_shutdown.bat)を設定し、所要時間を設定してください。
※コマンド実行時間の目安として、1台のESXi ホストに対して30~40秒以上の遅延時間を設けてください。
 メンテナンスモードが実行から完了するまでにかかる時間は、ご使用の環境状態によって変動する可能性があります(検証時は3台のESXi ホストを使用し、180秒を設定)。
   (PowerChuteのシャットダウンを試験する前に、一度すべてのゲストVMを停止し、スクリプト単体での動作検証を推奨します)

【スクリプト使用時のシャットダウンシーケンスについて】
本スクリプトおよび設定によるシャットダウンシーケンスは以下の通りです。
  1. PowerChuteが、UPSがバッテリー運転になったことを示す信号を受信します。
  2. バッテリー運転イベントのシャットダウン開始遅延時間が経過すると、PowerChuteはシャットダウンシーケンスを開始し、UPSに対し電源オフコマンドを送信します。
  3. PowerChuteがゲストVMのシャットダウンを開始します。
  4. vCenter Serverがクラスター上にある場合、PowerChuteがvCenter Server VMのシャットダウンを開始します。
  5. PowerChuteが"vSAN_shutdown.bat"を実行します。
  6. "vSAN_shutdown.bat"より、"vSAN_shutdown_macro.ttl"が実行されます。
  7. "vSAN_shutdown_macro.ttl"により、設定したvSANクラスター上のホストに対し、メンテナンスモードタスクを実行します。
  8. PowerChuteがVMwareホストをシャットダウンします。
  9. PowerChuteが自分自身の稼動するWindows OSをシャットダウンします。
  10. あらかじめ指定した時間が経過した後、UPSの出力が停止します。
     
【スクリプトが正常に動作しない原因について】
正常に動作しなかった場合、以下のいずれかのケースに該当している可能性があります。
・"vSAN_shutdown.bat"、またはPowerChuteで入力したファイルパスが間違っている
・スクリプトファイルの設置場所、および出力するログファイルのフォルダーに対するアクセス権限が適切でない
・PowerChuteにコマンドの実行権限がない
 (例えばbatファイル自体の実行に失敗する場合、PowerChuteのサービスを実行するアカウントを「ローカルシステムアカウント」から管理者権限のアカウント(administrator)に変更してください)
・すべてのESXiホストがknown hostsに登録されていない
 (Tera Term macro実行時、初回ログインの場合はセキュリティ警告が表示されることがあります。その際に該当ホストを予めknown hostsとして追加登録してください)
・コマンド実行時間が十分でない
 (すべてのESXiホストがメンテナンスモードに入らなかった場合、上記の可能性があります。PowerChuteのコマンド実行時間を見直してください)
 
Linux 環境の場合

スクリプトファイルのサンプル(PCNS_script_for_vSAN.SH)は本ページに添付していますので、ダウンロードしてください。
 
VMware vMAおよびPowerChute仮想アプライアンスを含むLinux環境でスクリプトを実行する際は、以下の手順を参照してください。LinuxサーバよりESXiホストに対し、SSH接続による通信を行えることが必要です。
 
【設定方法】
SSH接続の設定
1. OpenSSHをインストールします。(PowerChute仮想アプライアンス用)
2. PowerChuteをインストールしたマシン上で、下記のコマンドを実行し、keyファイルを作成します。
     ssh-keygen -t dsa
3. 作成したkeyファイルをコピーします。
     scp id_rsa.pub <host IP>:/id_rsa.pub
4. 下記のコマンドを各ホストで実行し、keyファイルを認証ファイルに追加します。
     cat id_rsa.pub >> /etc/ssh/keys-root/authorized_keys
5. /etc/init.d/SSH restartコマンドを実行し、ESXiホスト側でsshを再起動します。
6. PCNSをインストールしたマシンより、すべてのESXiホストにsshコマンドを送り、パスワードなしで応答ができることを確認します。
  (例:ssh root@192.168.0.211 esxcli system maintenanceMode get)
 
VMwareの設定
7. PCNSをインストールしたマシンのみ、「自動起動」を有効にします。
8. PCNSをインストールした仮想マシン/PCNS仮想アプライアンスの自動起動優先度を高にします。
 
PowerChuteの設定
9. PowerChuteの管理画面の「ホストの保護」ページで、すべてのホストをターゲットホストに設定します。
10. PowerChuteのコマンド実行設定で、PowerChuteのPCNS_script_for_vSAN.SHファイルを設定します。
 
備考 スクリプトの実行ログは /tmp/Shutdown_vSAN.logに格納されます。

更新日:2018年9月26日
これは役に立ちましたか?
私たちは情報を改善するために何ができるのでしょうか?