EATON 社製の 5P-750 UPS を CentOS release 6.9Final に接続しています
これは、別途記事がある aipo を動かしているサーバです(CentOS 6.9 である必要がありました)
これに、Eaton Intelligent Power Protector をインストールしました
この UPS にサーバ一台では勿体ないので、Ubuntu 16.04 LTS + PostgreSQL サーバーを接続してあります
両サーバーとも部門用の PC サーバーですので、立派なラックなどに組まれおらずに、その辺にゴロリと隣り合わせで置いてあります
この二台のサーバーを連動してシャットダウン処理する様に構成するまでに紆余曲折有りましたので、設定方法などを忘れない様に書いておこう!
0.Eaton Intelligent Power Protector の入手とインストール
EATON の USP は、ダイトロンさんと言うところで日本語化されたマニュアルなどを配布してあるので確認した方が良いです
また、Eaton Intelligent Power Protector (IPPと略すらしいです) というソフトを、接続してある コンピュータへインストールすると UPS の設定や自動シャットダウン処理などを行う事が出来ます
この IPP の入手も少し面倒で、ダイトロンさんからリンクをたどって EATON さんのサイトへ行ってからダウンロードしますが、メアドの入力がないと入手出来ません
登録したメアドに、キチンと設定すれば日本語のメールが届きますので RedHat/Fedra 用と Debian/Ubuntu 用 をダウンロードします
ここでマニュアルの手順に従い(ちょっと、記録しなかったのですが、難しくなく、ダイトロンさんの記載通りだったので問題なかったはず)、親子ともインストールします
接続は、 UPS -> USB -> CentOS です(ネットワークカードは高いですので ^^;)
CentOS と Ubuntu は ネットワークで繋げています
で、忘れてはいけないのが、この二台のサーバーを繋げているネットワークハブの電源も、一緒に UPS へ接続しないとイケません
ダイトロンさんの FAQ などをよく見ると、丁寧に解説などをしてあるページが比較的簡単に見つかります
日本語化されている PDF のマニュアルと併せてダウンロードしておくと便利です
IPP も 上手な日本語を表示します
[View]-[Settings]-[System] を選択すると、中央の領域でマウスの右ボタンかか、右側のショートカットに [Edit language] を選択して
[ja 日本] を選択します
併せて、日付表記を [yyyy/mm/dd] 、温度表記を [℃] へ変更する事をお勧めします
.
1.IPP の親側の設定
5P-750 を接続してある側の IPP では自分が親であるという設定が、[設定]-[システム]-[モジュールの設定]の「シャットダウンコントローラー」を[有効]にする事らしいです
以下のスナップショットのタイトル部分の … Protector の右側に 線香花火を右に傾けた様なアイコンが表示されれば親側です
そして、忘れてはならない重要なポイントが、 iptables に追加の設定を行うと上手く動くようです
グーグル先生で検索すると、英語版の PDF にヒットしますが、これだけではネットワーク越しの連動が出来ませんでした
結局、 TCP/UDP の 4679/4680 を INPUT/OUTPUT とも、TCP の 5000/5001 を INPUT/OUTPUT とも ACCEPT すれば利用できました
マニュアルにポートの一覧が書いてありましたが、結局 5000/5001 を INPUT/OUTPUT とも開けてみたら連動しました
iptables の設定方法はググればすぐ出てくると思います
今回の設定はこんな感じです
[root@localhost ~]# iptables -L -n
Chain INPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5001
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4680
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4679
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4680
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:4679
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0 state RELATED,ESTABLISHED
ACCEPT icmp -- 0.0.0.0/0 0.0.0.0/0
ACCEPT all -- 0.0.0.0/0 0.0.0.0/0
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 state NEW tcp dpt:22
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:80
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:443
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain FORWARD (policy ACCEPT)
target prot opt source destination
REJECT all -- 0.0.0.0/0 0.0.0.0/0 reject-with icmp-host-prohibited
Chain OUTPUT (policy ACCEPT)
target prot opt source destination
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5001
ACCEPT tcp -- 0.0.0.0/0 0.0.0.0/0 tcp dpt:5000
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4680
ACCEPT udp -- 0.0.0.0/0 0.0.0.0/0 udp dpt:4679
[root@localhost ~]#
.
2.IPP の子側の設定
基本的に、モジュールの設定の シャットダウンコントローラーの設定以外はマニュアル通りで問題ないと思います
[コンセントの遮断が有効] のチェックを外すらしいですので忘れない様にします
「パワーソース」で、CentOS の表示を選択して、「ノードアクセスパラメーターの設定」で、親側の IPP で設定したパスワードで admin へログインできる様に設定します
子側は 「ビュー」の所に 「通知アプリケーション」の表示がありません
.
3.連動の確認
ここまで設定すると、親側の IPP の [自動検出]-[ノードリスト] に、子の IPP が表示されます
これが表示しない場合は、親子とも FireWall の設定を確認してください(ここで苦労しました ^^;)
親側からでも、子側への「ノードアクセスパラメーターの設定」を行って、アクセス出来る様にしておいた方が良いのでは?と思い設定しました
最後に、親側で [通知アプリケーション] を確認してパラメーターなどが子側で行った設定と同じか確認します
[シャットダウンタイマー]、[シャットダウン継続時間][パワーソースの遮断](多分[コンセントの遮断が有効]の事かと思う..)などを確認すれば良いと思います
.
4.シャットダウンの処理など
で、実際にコンセントを抜いてテストをしてみます
親側のシャットダウンの時間の設定は
[シャットダウンタイマー] 30 秒、[シャットダウン継続時間] 180 秒の設定になっています
子側は
[シャットダウンタイマー] 10 秒、[シャットダウン継続時間] 60 秒の設定になっています
動作ですが、
コンセントを抜いて 10 秒後に、子供がシャットダウンします
続いて 30 秒後に、親がシャットダウンします
その後、180 秒後に、電源の供給がカットされます
動作中に通電が復旧しても、この処理が完了後に、一旦電源をカットした後に通電が復旧します
BIOS の設定で パワーロスの再通電で再起動する様にしてあれば自動的にブートします
シャットダウンスクリプトなどですが、親子ともに rc.d で処理できる様になっていますので、IPP では、処理は shutdown を選択してあります
子側は PostgreSQL + Apache だけが動いています
親側は aipo だけですが、init.d へ自動起動・停止 する様に自作でスクリプトを書きました
.
おまけ aipo の自動起動と自動停止
基本的に aipo は手動で startup.sh と shutdown.sh を手動で実行しますが、
これでは サーバが復旧しても面倒です
そこで、簡単に init.d に起動用のスクリプトを置いておきました
こんな感じで行けています
[root@localhost ~]# runlevel
N 3
[root@localhost ~]# cat /etc/init.d/aipo
#!/bin/sh
# chkconfig: 2345 99 1
# description: Aipo
# processname: Aipo
start(){
/usr/local/aipo/bin/startup.sh
return 0
}
stop(){
/usr/local/aipo/bin/shutdown.sh
return 0
}
case $1 in
start)
start
;;
stop)
stop
;;
esac[root@localhost ~]#
[root@localhost ~]# chkconfig
Eaton-IPP 0:off 1:off 2:on 3:on 4:off 5:on 6:off
aipo 0:off 1:off 2:on 3:on 4:on 5:on 6:off
基本的に aipo 専用のサーバーですので、 起動の優先度とシャットダウンの優先度は、最後で最初にしてあります
.