通常、サーバは連続稼働させておくものですから、電源制御が必要になるのはトラブル発生時に個別のサーバの電源を操作するようなケースがほとんどでしょう。
ただし、システム構築時やマシンの入れ替え時などは、複数台のサーバの電源をまとめて入れたり切ったりするようなことがあるかもしれません。2~3台ならともかく、10台くらいのマシンが対象となるといちいちログインしてコマンドを実行するのは面倒です。
そこで登場するのがipmitoolというコマンドです。このコマンドを使うと管理ホストからリモートのサーバのBMCにIPMI管理コマンドを送出することが可能です。IPMI(Intelligent Platform Management Interface)はリモートからサーバを制御するための標準仕様で、EXPRESSSCOPEのようなBMC(Baseboard Management Controller)を対象にしています。NECはこのIPMIの策定に参画しており、もちろんEXPRESSSCOPEもIPMIに対応しています。
まず、ipmitoolを管理ホスト(サーバではありません)にインストールします。Ubuntuの場合は以下のようにします。
$ sudo apt-get install ipmitool
IPMIのさまざまな機能を利用するにはサーバ側にIPMIドライバをインストールしたりする必要があるのですが、とりあえず電源制御が行えればよいのであれば、管理ホストにipmitoolをインストールするだけで十分です。
ipmitoolコマンドは以下の書式で実行します。
ipmitool [オプション] コマンド [コマンド引数]
使用頻度の高いオプションとしては以下のようなものがあります。
ipmitoolには非常にたくさんのサブコマンドがあるのですが、電源制御を行うときは「chassis power」を使います。
「chassis power」の引数としては以下のようなものがあります。
それではipmitoolを使ってみましょう。まず、サーバの電源の状態を確認します。
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power status Chassis Power is on ←電源が入っている
次に電源を落としてみます。ただし、「off」を使うとOSのシャットダウン処理が行われないので「soft」を使います。
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power soft Chassis Power Control: Soft
「off」はEXPRESSSCOPEのCLIにおける「stop /system1 -f」に相当し、「soft」は「stop /system1」に相当します。つまり、「soft」でOSをシャットダウンするには、OSがACPIに対応している必要があります。
「soft」で電源が落ちたかどうか確認してみます。
$ ipmitool -I lanplus -H 172.17.4.129 -U hmori -P xxxxxxxx chassis power status Chassis Power is off ←電源は落ちている
ちゃんと落ちています。このように電源の状態をその場で確認できるので非常に便利です。
ipmitoolなら、複数台のサーバにいっせいに電源を入れるようなこともできます。たとえば、172.17.4.1~172.17.4.20の20台のサーバの電源を入れるのであれば、以下のようにfor文を使います(bashやzshの場合)。
$ for i in 172.17.4.{1..20} > do > ipmitool -I lanplus -H $i -U hmori -P xxxxxxxx chassis power on > done
以下のようにすれば、複数台のサーバの電源の状態もまとめて調べられます。
$ for i in 172.17.4.{1..20} > do > echo -n "$i: " > ipmitool -I lanplus -H $i -U hmori -P xxxxxxxx chassis power status > done 172.17.4.1: Chassis Power is on ←実行結果 172.17.4.2: Chassis Power is on 172.17.4.3: Chassis Power is on 172.17.4.4: Chassis Power is on …省略…
実行結果をgrepして「off」と表示された行だけを出力するようにしてもよいかもしれません。
さて、今回は電源制御だけを扱いましたが、IPMIでは各種センサーの情報を収集したり、シリアルコンソールに接続したり(IPMI 2.0以降)することもできます。この当たりの操作については、回を改めて説明することにします。