電源 切断

PowerChute Network ShutdownでHPE MSA連携シャットダウンを実装してみた

#インフラ
written by クッキーさん

こんにちわ!クッキーさんです!

一児の父でいい歳のおじさんなのに、クッキーさんです。オッジーさんに改名したいです。

今回はサーバーのお話です!

実装方法

PowerChute Network Shutdown(以下PCNS)でMSAを安全にシャットダウンさせるには、まずは設定で…といいたいところですが、設定として存在していません。
有料でUPS連携しシャットダウンする製品も販売されていますが、落とすだけにお金を払うのも…。

ということで、お金を掛けないでMSAを安全にシャットダウンを出来るよう、停止スクリプトを作りPCNSへ組み込んでみます。

 

スクリプトの作成

まずはMSAを安全にシャットダウンするために、コントローラA、もしくはBに対しコマンドから

# shutdown both

を実行し、両コントローラを停止する必要があります。

コマンドを実行した後、コントローラシャットダウンについての確認がMSA側から返ってくるため、シャットダウンしていいよ!と答えてあげることも必要です。

この二つを考慮しつつ、PCNSから実行できるようにシェルを作ってあげましょう。
※下記のようにパスワード丸出しはセキュリティ的に…暗号化とかしたほうが無難です…!

#!/bin/bash

expect -c "
ssh -l ユーザー名 IP
expect \"Password:\"
send \"パスワード\n\"
expect \"#\"
send \"shutdown both\n\"
expect \"WARNING: This operation will cause data to be unavailable from both controllers. Do you want to continue? (y/n)\"
send \"yes\n\"
exit 0
"

設定前の準備

作ったスクリプトがクライアント端末等から実行できたことを確認した上で、事前にPCNSに格納する必要があります。
Linux版はSSHでPCNSに接続し、「/opt/APC/PowerChute/user_files/」に作ったシェルスクリプトを、
Windows版は「C:\Program Files\APC\PowerChute\user_files」に格納します。(デフォルトパス)

これをしてあげないと、いざ設定をした際に無効なパスと文句を言ってきて設定できません…!でもちゃんとユーザーズガイドに書いてあるからね…。

 

PCNSに設定する

いざPCNSからコマンドを実行できるように、設定をしてあげましょう。
PCNSのWebUIから「SSH設定」…と言いたいところですが、今回作成したシェルスクリプトがSSH設定では動きません
サポートにも問い合わせたのですが、普通に動くスクリプトであれば問題ないとの回答…これは困った。

しかし、トライアンドエラーで色々な項目に試したところ、なぜか正常に動くようになりました…!
その項目とは「シャットダウンコマンドファイル」、名の通りPCNSがシャットダウンする前に実行されるコマンドファイルを設定する項目です。

[コマンドファイルのフルパス]に、先ほど格納したシェルスクリプトを指定し、所要時間は「60秒」ぐらいを指定してあげるとちゃんとコントローラーがシャットダウンされます。
きっと僕のサポートさんへの説明が下手で、意思疎通が取れなかったんだね…

さぁ無事実装完了!これで気兼ねなく電源落とせるね!

最後に

以上、PCNSでMSAの連携シャットダウンを説明させて頂きました!
案件の都合上ターミナルソフトを導入できなかったのでこの方法で実装しましたが、導入出来ているのであればTeraTermマクロ等ターミナルのマクロで実装したほうがログも残せるので非常に有用です…。

実装時に気付く罠ではありますが、やり方を考えればお金を払わずに簡単に実装出来るので、まずは機能を洗い出してみましょう!