PowerChute Network ShutdownでHPE VM Essentials環境を安全にシャットダウンする手順を記載します。
PowerChuteでスクリプトを実行すると、シャットダウンシーケンス開始時にVME Managerが利用可能かどうかを確認します。
VME Managerを利用できる場合は、Morpheus APIを使用して仮想マシンをシャットダウンし、
利用できない場合はSSH経由で各VMEホストに接続し、virshコマンドを使用して仮想マシンをシャットダウンします。
スクリプトの最後のステップでVMEホストをSSH経由でシャットダウンします。
スクリプトは本番環境に適用する前に必ずお客様ご自身の環境でテストしてください。
【ライセンス数のカウント方法】
ホストの台数分のライセンスが必要です。
【対象製品】
PowerChute Network Shutdown v5.2
【構成例】
1. PowerChute Network Shutdown for Linuxのインストール
PowerChuteはVMEクラスターで実行されている任意のLinux VMまたは、クラスター外部の物理Linuxサーバにインストールします。
PowerChute Network Shutdown for Linuxインストーラーを解凍して実行します。
詳細は各種マニュアルのインストールガイドを参照してください。
インストールが完了したらPowerChute Network Shutdownを起動し、
セットアップウィザードの手順に従って設定します。
詳細は各種マニュアルのユーザーズガイドを参照してください。
2. シャットダウンスクリプトで使用するSSHキーペアの生成
VMEホストへの接続に使用するSSHキーペアの作成手順を記載します。
(VME Managerが利用できない場合、シャットダウンスクリプトはフォールバックとしてvirshコマンドを使ってVMをシャットダウンします。VMEホスト自体もSSHでシャットダウンします)
- PowerChuteをインストールしているマシン上で次のコマンドを実行します。
ssh-keygen -t rsa -b 4096 - キーファイルを格納するパスを入力します。
- パスフレーズは空白のままにします。
キーペアは指定したパスに保存されます。
4. 公開鍵 pcns_key.pub をVMEホストにコピーします。(ssh-copy-idコマンドを使用)
ssh-copy-id -i <公開鍵ファイルへのパス> root@<VMEホストのIPアドレス>
VMEホストごとにこれを繰り返します。
秘密鍵ファイルを/opt/APC/PowerChute/user_filesフォルダにコピーします。
次のコマンドを使用してSSH接続をテストします。
ssh -i /opt/APC/PowerChute/user_files/<private_key_file> root@<vme_host_ip_address>
パスワードを入力することなく自動的にログインできることを確認してください。
3. シャットダウンスクリプト実行の設定
シャットダウンスクリプトが入っている.tar.gzファイルを展開し、インストールスクリプト(install.sh)で必要なファイルをインストールします。
(注)ファイルを展開したら、「chmod +x ./install.sh」コマンドを実行してインストールスクリプトを実行可能にしてください。
シャットダウンシーケンス開始時にVME Managerが利用可能かどうかを確認します。
VME Managerを利用できる場合は、Morpheus APIを使用して仮想マシンをシャットダウンし、利用できない 場合はSSH経由で各VMEホストに接続し、
フォールバックとしてvirshコマンドを使用して仮想マシンをシャットダウンします。スクリプトの最後のステップでVMEホストをSSH経由でシャットダウンします。
(注)フォールバックした場合、「SimpliVityVC」で始まるVMはシャットダウン時にスキップされます。PowerChuteがインストールされているVMは、VMEホストにシャットダウンコマンドを送信するために稼働している必要があるため、シャットダウン時にスキップされます。
- コマンド chmod +x <script_filename>を使用して、
morpheus_operations.py ファイルとvme_shutdown.sh ファイルに実行権限を付与します。 - スクリプトで使用する API トークンを生成します。
詳細はUser Settings - Morpheus Docs documentationを参照してください。
API トークン文字列は、Base64でエンコードされた文字列に変換する必要があります。
これをPowerShellで行うには次のようにします:
[Convert]::ToBase64String([Text.Encoding]::UTF8.GetBytes('<APIトークン’))
これをLinuxマシンで行うには次のようにします:
echo -n <APIトークン> | base64 - config.iniファイルを開き、実行環境に必要な情報を入力します。
[morpheus]
host = <VME Manager の IP アドレス>
token = <Base64でエンコードされたAPI トークン>
vme_hosts = <VMEホスト1のIPアドレス>,<VMEホスト2のIPアドレス>
keyfile = /opt/APC/PowerChute/user_files/<Private Key File>
[site]
site_cluster = <クラスター名>
# インスタンス名をカンマで区切る
skip_shutdown_vms = <PCNS VMの名前>
(注) スクリプトはPowerChuteを実行しているVMの名前が
PCNS または pcnsで始まることを前提としています。
(例:PCNS-LINUX、pcnsvm)
[general]
timeout = 120(すべての仮想マシンとVMEホストのシャットダウンに必要な秒数)
startup_vms = <VM Name 1>,<VM Name 2>
(startup_vms.shスクリプト(手順5参照)を使用することもで、電源が復旧したときに仮想マシンを起動できます。不要の場合はこの値は空欄にします。)
- PowerChute画面を開き構成タブの[シャットダウン設定]でシャットダウンコマンドファイルの設定を行います。
・コマンドファイルのフルパス :
実行するコマンドファイルをディスクドライブおよびボリューム名を含めたフルパス名で入力
・ 所要時間 :
シャットダウンスクリプトがすべての仮想マシンをシャットダウンし、その後にVMEホストをシャットダウンするために必要な時間を秒数で入力(注)入力する秒数は、config.iniで設定したタイムアウト値にバッファの1〜2分を加えた値にしてください。
例えば、config.iniでtimeoutを120秒に設定している場合、PowerChute画面では 180秒または240秒に設定します。
5. startup_vms.sh スクリプトを使用する場合は、ターミナルでディレクトリを
/opt/APC/PowerChute/group1 に変更します。
VIコマンドを使用してファイルpcnsconfig.iniを編集し、[イベント]セクションまでスクロールして、
監視開始イベントのコマンドファイルアクションを有効にします。
APIトークンを権限のないユーザーに読み取られないようにするには、
/opt/APC/PowerChute/user_filesディレクトリのアクセス権を設定し、rootユーザーのみがアクセスできるようにすることをおすすめします。
この設定はrootユーザーで以下のコマンドを実行することで行えます。
chmod 700 /opt/APC/PowerChute/user_files
4. シャットダウンのトリガー
PowerChuteの[イベントの設定]ページではシャットダウンシーケンスを開始するトリガーを設定できます。
対象のイベントを選択し、シャットダウン列の歯車アイコンをクリックしてシャットダウンアクションを有効化します。
(例)
停電が10分以上続いた場合にシャットダウンシーケンスを開始するには[UPSオンバッテリ]イベントを選択し、
シャットダウンアクションを有効にして待機時間を600秒に設定します。
UPSの残り稼働時間が指定時間を下回った場合にシャットダウンシーケンスを開始するには、
[ランタイム残り時間がしきい値を下回る]イベントを選択し、シャットダウンアクションを有効にして残り時間を希望の秒数に設定します。
下図は[UPSオンバッテリ]イベントにおけるシャットダウンシーケンスを示しています。
詳細はユーザーズガイドを参照してください。
5. Morpheus APIトークンの更新
スクリプトで使用するMorpheus APIトークンは、一定期間更新しないと期限切れになります。
systemdフォルダ内のトークン更新スクリプトを使用することでMorpheus APIトークンを自動更新できます。詳細はsystemdフォルダ内のREADMEファイルを参照してください。
systemdフォルダ内のファイル
- README.md:systemdタイマーを作成し90日ごとにトークン更新を行う手順を記載しています
- refresh_token.service:トークン更新スクリプト「/opt/APC/PowerChute/user_files/refresh_token.sh」を実行するsystemdサービス
- refresh_token.timer:「OnUnitActiveSec=90d」で設定されているsystemdタイマー
- install_refresh_timer.sh:コピーやリロードを行いタイマーを有効にするヘルパースクリプト
以上です。