[DEFAULT]
type = IPMI
username = foo
password = hogehoge
[compute-0-0]
ip = 172.16.3.1
:
:
著者:飯坂剛一
Publish: 2007/12/05
powerctlコマンドは登録したホストの 電源制御やリセット、shutdownを行うための テキストユーザインタフェースです。
この資料では、powerctlの設定方法と使用方法について説明します。
powerctlをインストールするためには、 次のパッケージをインストールします。
powerctl-3.1-2.noarch.rpm
freeipmi-0.4.6-1.el4.x86_64.rpm
ilopower-1.0-5.noarch.rpm
perl-IO-Socket-SSL-1.01-1.el4.rf.noarch.rpm
perl-Net-SSLeay-1.25-3.2.el4.rf.x86_64.rpm
2つのperlのパッケージはilopowerが必要としているものです。
powerctl は freeipmiに含まれる ipmipower、 ilopower に含まれる ilopower を内部で呼び出していいます。
IPMIは各社ほとんどのコンピュータがサポートしています。 ILOはHP社の一部のコンピュータがサポートします。
IPMIとILOについの詳細は次のURLを参照してください。
|
|
ilopowerは 1.0-5 より以前のバージョンには ホスト名での指定ができないバグが見つかっています。 |
powerctlコマンドは /etc/powerctl.d/powerctl.conf ファイルを読み込んでいます。
セキュリティー上の理由からこのファイルはrootでしか 読み込めないようにしておいてください。
username と password は各ノードに設定したIDとパスワードに置き換えてください。
[DEFAULT]
type = IPMI
username = foo
password = hogehoge
[compute-0-0]
ip = 172.16.3.1
:
:
次のように記述することで、 パスワードやIDが異なるような場合や、 IPMIとILOの混在環境でも電源制御することができます。
[DEFAULT] type = IPMI username = foo password = hogehoge [compute-0-0] type = ILO username = foo password = hogehoge ip = 172.16.3.1 [compute-0-1] type = IPMI username = hoo password = houhou ip = 172.16.3.2
[DEFAULT]タグには全ノード共通の情報を記述でき、つぎの3つが指定できます。
type: ILO, RILOE, IPMIのいづれか
username: 電源制御での認証で使用するユーザ
passwd: 電源制御での認証で使用するパスワード
[ホスト名]タグには該当ホストのホスト名の情報を記述します。
type: ILO, RILOE, IPMIのいづれか。 省略した場合は[DEFAULT]タグで指定したものが使われます。
username: 電源制御での認証で使用するユーザ 省略した場合は[DEFAULT]タグで指定したものが使われます。
passwd: 電源制御での認証で使用するパスワード 省略した場合は[DEFAULT]タグで指定したものが使われます。
ip: 該当ホストでの電源制御用に割り当てられているIPアドレスを指定します。 省略された場合は、ホスト名タグで指定したホスト名に '-bmc'を付加したホスト名で参照できるIPアドレスを使用します。
shutdown コマンド発行する場合はこのタグに記述されている ホストに対してsshコマンドを経由して実行されます
powerctl-hostconv コマンドは、 既存ホストの情報から電源制御用のホスト情報を 生成するためのスクリプトです。
使用方法:
# powerctl-hostconv [-p パターン] サブネット 電源制御用サブネット
このスクリプトは /etc/hosts 中の各エントリで、 compute の文字列に合致するホストを対象にして、 サブネットを変換して標準出力へ出力します。
検索パターンを環境変数BMC_HOSTPTNで定義するか、 -p オプションで指示することで、 computeと異なる文字列に合致するホストを対象とすることもできます。
今、次のようなエントリが/etc/hostsにあり、 電源制御用にアサインしているネットワークが192.168.20.0だとします。
[root@cluster sbin]# grep compute /etc/hosts 192.168.10.254 compute-0-0.local compute-0-0 c0-0 192.168.10.253 compute-0-1.local compute-0-1 c0-1 192.168.10.252 compute-0-2.local compute-0-2 c0-2 192.168.10.251 compute-0-3.local compute-0-3 c0-3 192.168.10.250 compute-0-4.local compute-0-4 c0-4 192.168.10.249 compute-0-5.local compute-0-5 c0-5 192.168.10.248 compute-0-6.local compute-0-6 c0-6 192.168.10.247 compute-0-7.local compute-0-7 c0-7 192.168.10.246 compute-0-8.local compute-0-8 c0-8 192.168.10.245 compute-0-9.local compute-0-9 c0-9 192.168.10.244 compute-0-10.local compute-0-10 c0-10 192.168.11.244 compute-0-10-eth1 192.168.11.245 compute-0-9-eth1 192.168.11.246 compute-0-8-eth1 192.168.11.247 compute-0-7-eth1 192.168.11.248 compute-0-6-eth1 192.168.11.249 compute-0-5-eth1 192.168.11.250 compute-0-4-eth1 192.168.11.251 compute-0-3-eth1 192.168.11.252 compute-0-2-eth1 192.168.11.253 compute-0-1-eth1 192.168.11.254 compute-0-0-eth1
次のようにコマンドを実行することで 電源制御用のhostsファイルを生成することができます。
[root@cluster sbin]# powerctl-hostconv 192.168.10.0 192.168.20.0 192.168.20.254 compute-0-0-bmc 192.168.20.253 compute-0-1-bmc 192.168.20.252 compute-0-2-bmc 192.168.20.251 compute-0-3-bmc 192.168.20.250 compute-0-4-bmc 192.168.20.249 compute-0-5-bmc 192.168.20.248 compute-0-6-bmc 192.168.20.247 compute-0-7-bmc 192.168.20.246 compute-0-8-bmc 192.168.20.245 compute-0-9-bmc 192.168.20.244 compute-0-10-bmc
フロントエンドノードにログインして、 root ユーザになります。
root権限で/usr/sbin/powerctl を実行します。
カーソルキーとスペースキーで対象ホストを選択し、 タブキーでコマンドを選択して操作します。
各コマンドは次の操作となります。
Cancel: powerctlの終了
Halt: シャットダウンを実行してシステムを停止
PowerOff: 電源停止
Reset: システムをリセット
Boot: システムを起動
make コマンドをメニューのように使って、 でマシンを起動/停止する方法について説明します。
はじめに、/etc/hostsに各マシンのIPMIあるいはILOのためのアドレスを 次のように記述しておきます。 IPアドレスは任意で構いませんが、 ホスト名は "-bmc" を付けた名前にしておきます。
192.168.13.254 compute-0-0-bmc 192.168.13.253 compute-0-1-bmc 192.168.13.252 compute-0-2-bmc 192.168.13.251 compute-0-3-bmc
次のようなMakefileを記述します。 Makefile 中の HOSTPTN で指定した文字列に合致するホストを /etc/hosts から探してそれに対して、 BOOT_METHOD で指定したプロトコルのコマンドを呼び出しています。
admin と password は設定したIDとパスワードに置き換えてください。
# BOOT_METHOD: boot-ilo | boot-ipmi
BOOT_METHOD=boot-ilo
IPMICMD=/usr/sbin/ipmipower -u admin -p password
ILOCMD=/usr/sbin/ilopower -u admin -p password
# TIMEOUT: in milliseconds.
# i.e.: 20000 milliseconds is 20 seconds.
TIMEOUT=-t 40000
# Set the pattern string for seach BMC host in /etc/hosts.
HOSTPTN=bmc
# set the interval seconds for BOOT up.
BOOTINTERVAL=2
.PHONY: boot
boot: $(BOOT_METHOD)
@echo
.PHONY: shutdown
shutdown:
@echo "CAUTION: all compute node will be shutdown!"
@echo -n "You have chance to cancel this process in 10sec."
@for T in 1 2 3 4 5 6 7 8 9 10 ; do \
sleep 1 ; echo -n "." ; \
done ; echo
@ScatterCmd "/sbin/shutdown -h now"
BMCHOSTS=$(shell grep -- $(HOSTPTN) /etc/hosts | cut -f2)
.PHONY: boot-ipmi
boot-ipmi:
@echo "Waiting $(BOOTINTERVAL) seconds on each nodes."
@echo 'In many case, you can ignore "timeout"'
@for H in $(BMCHOSTS) ; do \
HOST=`echo $$H | cut -d- -f1 ` ; \
$(IPMICMD) $(TIMEOUT) -h $$H --on || : ; \
sleep $(BOOTINTERVAL) ; \
done ; echo
.PHONY: boot-ilo
boot-ilo:
@echo "Waiting $(BOOTINTERVAL) seconds on each nodes."
@for H in $(BMCHOSTS) ; do \
HOST=`echo $$H | cut -d- -f1 ` ; \
$(ILOCMD) -H $$H --on || : ; \
sleep $(BOOTINTERVAL) ; \
done ; echo
make コマンドでの起動の実行例:
# make boot
make コマンドでの停止の実行例:
# make shutdown