ラベル IPMI の投稿を表示しています。 すべての投稿を表示
ラベル IPMI の投稿を表示しています。 すべての投稿を表示

2007/10/29

PowerEdge 2650ではIPMIフェンス不能

以前の記事『OpenIPMI・その1・概要』で、気楽に
DRACもクラスタ(RHCS)のフェンス手段として使うことができたが、当然IPMIもフェンス手段として使うことができる。
と書いたが、うまく行かなかったことの報告。解決はできてない。

手元のDELL PowerEdge 2650にOpenIPMIを導入し、IPMIフェンスを試みたところ、失敗してしまう
$ fence_ipmilan -a サーバ名 -l IPMIユーザ名 -p "IPMIパスワード"
Rebooting machine @ IPMI:サーバ名...Failed
$
原因を探るべく、冗長メッセージオプション(-v)を付けて実行してみる。
$ fence_ipmilan -v -a サーバ名 -l IPMIユーザ名 -p "IPMIパスワード"
Rebooting machine @ IPMI:サーバ名...Spawning: '/usr/bin/ipmitool -I lan -H サーバ名 -U IPMIユーザ名 -P IPMIパスワード -v chassis power status'...
Failed
$
コマンドchassis power statusの実行に失敗しているらしい。実際にipmilanコマンドを直接実行してみると、
$ ipmitool -I lan -H サーバ名 -U IPMIユーザ名 -P "IPMIパスワード" chassis power status
Get Chassis Power Status failed: Invalid command
$ ipmitool -I lan -H サーバ名 -U IPMIユーザ名 -P "IPMIパスワード" chassis power off
Chassis Power Control: Down/Off
$
確かに、chassis power statusの実行には失敗したが、chassis power offは成功して、サーバの電源を切ることができた。

どうも、PowerEdge x6xx世代のファームウェアでは、chassis power statusが実装されていないようだ。
DELLのレポジトリには追随してるんだけどなあ。

2007/10/15

OpenIPMI・その3・管理端末編

管理端末側の準備は簡単だ。パッケージOpenIPMI-toolsをインストールすればよい。
# yum install -y OpenIPMI-tools

主に使用するコマンドは、ipmitool(1)。概要で実行例を示したが、これとマニュアルを見れば、大体の操作はできるだろう。
実行例では、パスワードの指定にコマンドラインオプション-P "パスワード"を使用したが、代わりに、-a-Eおよび-f ファイル名を指定することができ、それぞれ、プロンプトを出して入力、環境変数IPMI_PASSWORDで指定、および、ファイルで指定、となる。安全面を考えると、-a-f ファイル名がいいだろう(環境変数や、コマンドライン引数は、ps auxwweで覗き見可能なので)

最後に、再起動の実行例を示す。まずは、管理端末側。
$ export IPMI_PASSWORD=IPMIパスワード
$ ipmitool -I lan -H サーバ名 -U IPMIユーザ名 -E -L operator chassis power cycle
Chassis Power Control: Cycle
$
なお、コマンドラインオプション-L operatorは、権限レベルの指定。
サーバ側では、コンソールに
Broadcast message from root (Mon Oct 15 19:47:03 2007):

The system is going down for system halt NOW!
の様なメッセージが表示され、再起動が実行される。ログ(/var/log/messages)には、以下の様な行が確認できるはずだ。
Oct 15 19:47:02 サーバ名 /usr/bin/ipmilan: Mon Oct 15 19:47:02 2007: Activate session: Session opened for user 0x2, max priv 3
Oct 15 19:47:02 サーバ名 /usr/bin/ipmilan: Mon Oct 15 19:47:02 2007: Session closed: Closed due to request
Oct 15 19:47:03 サーバ名 shutdown[14921]: shutting down for system halt


OpenIPMI・その1・概要
OpenIPMI・その2・サーバ編
OpenIPMI・その3・管理端末編

OpenIPMI・その2・サーバ編

OpenIPMIで管理されるサーバ側では、
  1. パッケージの導入
  2. IPMIモジュールの設定
  3. デーモンipmilanの設定
  4. デーモンipmilanの起動
という作業が必要になる。実は、ipmilan(8)を自動起動するスクリプトはパッケージOpenIPMIには入っていないので、自分で準備する必要があるが、ここでは解説しない。

1. パッケージの導入
いつもの如く、yumで行う。
# yum install -y OpenIPMI
同時に、OpenIPMI-libsも導入される。

2. IPMIモジュールの設定
OpenIPMIを導入すると、サービスipmiが追加されるので、これをOS起動時に起動されるよう設定する。
# chkconfig ipmi on
このサービスの設定ファイルは、/etc/sysconfig/ipmi。特に変更しなくてもサービスは正常に起動するが、IPMIによる機器再起動を行う場合には、この中のIPMI_POWEROFFおよびIPMI_POWERCYCLEyesに変更する。
#IPMI_POWEROFF=no
IPMI_POWEROFF=yes
<<略>>
#IPMI_POWERCYCLE=no
IPMI_POWERCYCLE=yes
機器を再起動するか、service ipmi startでサービスを起動する。

3.デーモンipmilanの設定
リモートからIPMIでサーバを管理するためには、デーモンipmilan(8)を起動する必要がある。このデーモンの設定ファイルは、/etc/ipmi_lan.conf。以下の様に設定する。
addr サーバのIPアドレス
priv_limit admin
allowed_auths_callback md5
allowed_auths_user md5
allowed_auths_operator md5
allowed_auths_admin md5
user 2 true "IPMIユーザ名" "IPMIパスワード" admin 1 md5
コマンドaddrに続くのは、サーバのIPアドレス。サーバにネットワークアドレスが一つしかないのであれば、addrコマンドは不要。複数ある場合で接続を待ち受けるIPアドレスを限定したい場合に指定する。ローカルからしか接続を許さないのであれば、127.0.0.1を指定するのがいいかもしれない(が、意味はない)
コマンドpriv_limitは、接続した際の権限レベルの上限を指定する。callbackuseroperatorおよびadminが指定できる。必要に応じて設定する(とか言いながら、実はまだよく解ってない)
つづく、allowed_auths_*は、それぞれの権限レベルで許される認証形式で、nonestraightmd2およびmd5が指定できるが、安全面を考慮すると、md5を指定するべきだ。
次の、userコマンドは、ユーザの定義。続く項目の詳細は以下の通り。
  1. ユーザ番号: 1から63までが指定できるが、1は匿名接続のために使われる。通常のユーザ名/パスワード認証を行うのであれば、2から63の内のいずれかを使う。
  2. ユーザが有効かどうかを示す真偽値。
  3. ユーザ名: 二重引用符で囲む。
  4. パスワード: 二重引用符で囲む。
  5. 最大権限レベル: ユーザに許可する権限の上限。
  6. 最大セッション数: このユーザに許可する最大セッション数。
  7. 認証形式: このユーザに許可する認証形式。省略すると、このユーザはログイン不能になる。事実上、md5を指定するしかないだろう。
他のコマンドについては、ipmilan(8)のマニュアルを参照する。
このファイルは、他のユーザに読めないように、パーミッションを変更しておく。
# chmod go-rwx /etc/ipmi_lan.conf


4.デーモンipmilanの起動
デーモンの起動は、次のコマンドで行う。
# /usr/bin/ipmilan
無事に起動できれば、/var/log/messagesに次のような行が記録される。
Oct 15 18:40:19 ホスト名 /usr/bin/ipmilan: Mon Oct 15 18:40:19 2007: /usr/bin/ipmilan startup


OpenIPMI・その1・概要
OpenIPMI・その2・サーバ編
OpenIPMI・その3・管理端末編

OpenIPMI・その1・概要

IPMIは、Intelligent Platform Management Interfaceの略で、簡単に言うと、ベンダ・OSに拠らず、リモートから(ローカルからも)サーバを管理するための仕組みだ。これを利用すると、シャーシ内の温度の監視や機器の再起動を行うことができる(少なくとも、ハードウェアがIPMIに対応している必要はあるが)。以下に実行例を示す。
$ ipmitool -I lan -H サーバ名 -U IPMIユーザ名 -P "IPMIパスワード" sdr type Temperature
ESM Frt I/O Temp | 31h | ok | 12.0 | 21 degrees C
ESM CPU 1 Temp | 32h | ns | 3.1 | Disabled
ESM CPU 2 Temp | 33h | ns | 3.2 | Disabled
ESM Riser Temp | 34h | ok | 16.0 | 28 degrees C
ESM CPU 1 Temp | 35h | ok | 3.1 | 32 degrees C
ESM CPU 2 Temp | 36h | ns | 3.2 | Disabled
BP Bottom Temp | 03h | ns | 15.1 | Disabled
BP Top Temp | 02h | ns | 15.1 | Disabled
$

この仕組みは、前に紹介したDRACと似ているといえば似ているが、TELNETではないUDP上の独自プロトコルを使う点や、ベンダに依存しない点が異なる。DRACもクラスタ(RHCS)のフェンス手段として使うことができたが、当然IPMIもフェンス手段として使うことができる。

CentOS(や、RHELおよびFedora)では、OpenIPMIというパッケージをサーバに導入すれば、そのサーバをIPMIによって管理することが可能になる。管理端末側には、OpenIPMI-toolsというパッケージを導入する。以下、それぞれについて解説する。

OpenIPMI・その1・概要
OpenIPMI・その2・サーバ編
OpenIPMI・その3・管理端末編