2008/02/28

Red Hat Cluster: GNBD, CLVM and GFS・その4・CentOS 5.1での注意点

Red Hat Cluster: GNBD, CLVM and GFS・その3』で、
これまで三回に渡り、GNBD、CLVMおよびGFSについて概説してきた。以上を元に、次のことを今後の目標とし、実際にシステムを組んでみたい。
  1. GNBDでディスクデバイスを共有する
  2. GNBDで共有されたブロックデバイスから、CLVMでクラスタ上で共有されるVGおよびLVを生成する。
  3. CLVMで生成したLV上にGFSを作成し、各クラスタメンバ上でマウントする。
と宣言したきり、ちっとも実践編へ進まなかったシリーズを再開。まずは、作業前の注意点。

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる』シリーズに従いクラスタを構成した後、GNBD、CLVMおよびGFSでファイル共有を実現する。以下の点に注意する。
  1. 現時点(2008/2/28)の最新版kernel-xen-2.6.18-53.1.13.el5およびkmod-gnbd-xen-0.1.4-12.el5をXen DomUで使うと、CPU負荷が異常に高くなるバグがある。追記(2008/3/11): この問題は解決された。『Red Hat Cluster: GNBD, CLVM and GFS・その4・CentOS 5.1での注意点・補足』参照
  2. GNBDにはinit scriptが準備されていない。
  3. GNBDクライアントサービスの起動順は、サービスcmanの後、サービスclvmdの前でないといけない。
使用するパッケージのバージョンについては、少なくともbaseレポジトリのkernel-xen-2.6.18-53.el5を使えば問題ない。
Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール』では、OSインストール時にupdatesなどのレポジトリを参照し、最新版をインストールするようKickstart設定ファイルに指定していたが、この部分をコメントアウトする。
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
#repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
#repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
#repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/


CetnOS 5.1のパッケージgnbdおよびkmod-gnbdには、GNBDのinitスクリプトが付属していない(少なくとも現時点では)。このブログにリンクしてもらっている『funなJava、mocoなLinux』の記事『GNBD init スクリプト』を参考にする。

サービス起動順だが、gnbd_export(8)のman pageに次のような記述がある
-c Enable caching.
<<略>>
WARNING: You must NOT specify this option if you wish to use gnbd with dm multi-pathing, or run GFS on gnbd server machines.
Device mapper multi path(DMMP)を使う場合や、GFSをGNBDサーバ上で使うような場合は、GNBDのキャッシュ機能を有効にしてはいけない。
同じく-cオプションの項に次のような記述もある。
With the -c option, it is not necessary to have the gnbd server machine be part of the cluster. If -c option is not used, the server machine must already have a cluster manager running on it.
この-cオプションを使う場合は、GNBDサーバがクラスタメンバである必要はない(クラスタメンバであってもよい)。この-cオプションを使わない場合は、GNBDサーバ上でクラスタマネージャが既に動作していなければならない。
以上のことから考えると、DMMPを使う可能性を考慮した場合、-cを使えないし、gnbdより先にcmanが起動されている必要がある。GFSをGNBDサーバ上で使う場合も同様。
一方、clvmdが起動される前に、clvmdが認識する物理ボリューム(physical volume, PV)がOSに認識されている必要がある。そうでなければ、clvmdがクラスタ対応ボリュームグループ(volume group, VG)を正しく認識できない。この状態で、そのクラスタ対応VG上に論理ボリューム(logical volmume, LV)を作成すると、アクティブにできなくなったり、そのLVを削除できなくなったりする。例えば、
[root@dc3 ~]# service clvmd start
Starting clvmd: [  OK  ]
Activating VGs:   2 logical volume(s) in volume group "VolGroup00" now active
[  OK  ]
[root@dc3 ~]# service gnbd-client start
Starting GNBD Client: [  OK  ]
resending requests
[root@dc3 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VGcDomUs00   1   1   0 wz--nc 4.00G    0
VolGroup00   1   2   0 wz--n- 3.88G    0
[root@dc3 ~]# lvs
LV          VG         Attr   LSize   Origin Snap%  Move Log Copy%
LogVolGFS00 VGcDomUs00 -wi---   4.00G
LogVol00    VolGroup00 -wi-ao   3.34G
LogVol01    VolGroup00 -wi-ao 544.00M
[root@dc3 ~]# lvchange --available y  LogVolGFS00 VGcDomUs00
Volume group "LogVolGFS00" not found
Error locking on node dc2.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp
Error locking on node dc3.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp
[root@dc3 ~]# lvremove /dev/VGcDomUs00/LogVolGFS00
Error locking on node dc3.xencluster: Volume group for uuid not found: 0rrqOzVArnLSIzM8nyTlj4nVONcbaO13QxVYIwLjU0SFe5FHRGDTnni7f9Lmu1Mp
Can't get exclusive access to volume "LogVolGFS00"
[root@dc3 ~]#
正しい順番で起動されていれば、以下の様に操作できるはずだ。
[root@dc1 ~]# vgs
VG         #PV #LV #SN Attr   VSize VFree
VGcDomUs00   1   1   0 wz--nc 4.00G    0
VolGroup00   1   2   0 wz--n- 3.88G    0
[root@dc1 ~]# lvs
LV          VG         Attr   LSize   Origin Snap%  Move Log Copy%
LogVolGFS00 VGcDomUs00 -wi-a-   4.00G
LogVol00    VolGroup00 -wi-ao   3.34G
LogVol01    VolGroup00 -wi-ao 544.00M
[root@dc1 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00
[root@dc1 ~]# lvs
LV          VG         Attr   LSize   Origin Snap%  Move Log Copy%
LogVolGFS00 VGcDomUs00 -wi---   4.00G
LogVol00    VolGroup00 -wi-ao   3.34G
LogVol01    VolGroup00 -wi-ao 544.00M
[root@dc1 ~]# lvchange --available y /dev/VGcDomUs00/LogVolGFS00
[root@dc1 ~]# lvs
LV          VG         Attr   LSize   Origin Snap%  Move Log Copy%
LogVolGFS00 VGcDomUs00 -wi-a-   4.00G
LogVol00    VolGroup00 -wi-ao   3.34G
LogVol01    VolGroup00 -wi-ao 544.00M
[root@dc1 ~]#


[root@dc2 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00
[root@dc2 ~]#


[root@dc3 ~]# lvchange --available n /dev/VGcDomUs00/LogVolGFS00
[root@dc3 ~]#


[root@dc1 ~]# lvremove /dev/VGcDomUs00/LogVolGFS00
Logical volume "LogVolGFS00" successfully removed
[root@dc1 ~]#

以上の点に注意して、実際にGFSによるファイル共有環境を構築する。

解説: その1その2その3
kernel-xenにバグか?
その4・CentOS 5.1での注意点
その5・GNBDの設定
その6・CLVMの設定
その7・GFS2の設定
その8・Congaからの設定
その9・ベンチマーク
その10・考察と予告

2008/02/25

CMANとXENを組合わせて使う

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その2・Dom0 fsXのインストール』でさらっと、
サービスcmanの起動スクリプト/etc/init.d/cmanを修正する。これは、xend-config.sxpを変更したこと、および、サービスcmanがサービスxendよりも先に起動されることへの対応。
と書いた。これの解説。

XenとVLAN、CMAN(クラスタ)を併せて使うと、CMANが正常に起動しない、という問題にぶち当たる。これはなぜかというと、CMANのinitスクリプト/etc/init.d/cmanの中で、以下の処理を行っているためだ。
  • Xenネットワーク用スクリプトを検出し、そのスクリプトを用いてXenネットワークをCMAN起動と同時に起動している。しかし、『VLANとXenを組合わせて使う・その3・Xenネットワーク』の修正を適用していると、Xenネットワーク用スクリプトの名前が変わるため、検出に失敗する。
  • コマンドxm listを使って、Xen Dom0かどうかを検査しようとしている。しかし、サービスcman(/etc/rc3.d/S21cman)は、サービスxend(/etc/rc3.d/S98xend)より先に実行されるため、この検査は常に失敗する。
従って、これを修正すべく、以下のパッチを適用している。
156c156
< egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-bridge([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp >/dev/null 2>/dev/null
---
> egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-(|vlan-)bridge(|-wrapper)([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp >/dev/null 2>/dev/null
165,166c165,167
< if [ ! -x /etc/xen/scripts/network-bridge ]; then
< if [ -f /etc/xen/scripts/network-bridge ]; then
---
> xen_bridge_script=`egrep "^[[:blank:]]*\([[:blank:]]*network-script[[:blank:]]+network-(|vlan-)bridge(|-wrapper)([[:blank:]]*\)|[[:blank:]]+)" /etc/xen/xend-config.sxp | sed 's/^[[:blank:]]*([[:blank:]]*network-script[[:blank:]]\+\|[[:blank:]]*)[[:blank:]]*//g'`
> if [ ! -x /etc/xen/scripts/$xen_bridge_script ]; then
> if [ -f /etc/xen/scripts/$xen_bridge_script ]; then
176c177
< errmsg=$(/etc/xen/scripts/network-bridge start 2>&1) || return 1
---
> errmsg=$(/etc/xen/scripts/$xen_bridge_script start 2>&1) || return 1
192c193,195
< xm list --long 2> /dev/null | grep -q "Domain-0" || return 1
---
> # The following line is commented out because this check does not
> # work properly before xend is started.
> #xm list --long 2> /dev/null | grep -q "Domain-0" || return 1

2008/02/24

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その8・クラスタ動作の試験

前回までで、まったくサービスが乗っていないクラスタ、cDomUsを生成した。正常に動作するかどうかを試験する。『Red Hat Cluster: kernel-xenにバグか?』で報告したようなバグがないか、各ノードdc[123]を数度フェンスを実行する。
フェンス操作は、Luci管理画面からもコマンドラインからも実行できる。

Luci管理画面からのフェンス
まず、Luci管理画面から実行する。ブラウザからLuciにアクセスしログインする。[Luci Homebase]画面から、[cluster]タブ→[cDomUs]→[Nodes]と選択しcDomUsの管理画面を表示する。対象ノード(ここではdc2)のリストボックスから[Fence this node]を選択し、その右の[Go]ボタンを押下する。

確認を求めるダイアログに対して、[OK]を選択すると、進行状況が表示される。

すぐに元の画面に戻る。

このとき、フェンスされたノードdc2は即時に停止され(おそらく、fs1上のfence_xvmdによって、xm destroy dc2相当の操作がなされている)、再起動される。
Starting HAL daemon: [  OK  ]
Starting oddjobd: [ OK ]
Starting Cluster Module - cluster monitor: Setting verbosity level to LogBasic
[ OK ]
Starting Cluster Service Manager: [ OK ]
dlm: lockspace 30003 from 1 type 1 not found
dlm: lockspace 30003 from 3 type 1 not found
dlm: lockspace 30003 from 1 type 1 not found
Starting ricci: [ OK ]

CentOS release 5 (Final)
Kernel 2.6.18-53.1.13.el5xen on an i686

dc2.xencluster login:
一方、ノードdc3では、以下のようなログが出力される。
[root@dc3 ~]# tail -f /var/log/messages
Feb 24 11:20:46 dc3 fence_node[31277]: Fence of "dc2.xencluster" was successful
Feb 24 11:20:53 dc3 openais[1358]: [TOTEM] The token was lost in the OPERATIONAL state.
Feb 24 11:20:53 dc3 openais[1358]: [TOTEM] Receive multicast socket recv buffer size (288000 bytes).
Feb 24 11:20:53 dc3 openais[1358]: [TOTEM] Transmit multicast socket send buffer size (219136 bytes).
Feb 24 11:20:53 dc3 openais[1358]: [TOTEM] entering GATHER state from 2.
dlm: closing connection to node 2
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] entering GATHER state from 0.
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] Saving state aru 4a high seq received 4a
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] Storing new sequence id for ring 38
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] entering COMMIT state.
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] entering RECOVERY state.
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] position [0] member 192.168.140.7:
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] previous ring seq 52 rep 192.168.140.7
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] aru 4a high delivered 4a received flag 1
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] position [1] member 192.168.140.9:
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] previous ring seq 52 rep 192.168.140.7
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] aru 4a high delivered 4a received flag 1
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] Did not need to originate any messages in recovery.
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] New Configuration:
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] Members Left:
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] Members Joined:
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] New Configuration:
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] Members Left:
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] Members Joined:
Feb 24 11:20:58 dc3 openais[1358]: [SYNC ] This node is within the primary component and will provide service.
Feb 24 11:20:58 dc3 kernel: dlm: closing connection to node 2
Feb 24 11:20:58 dc3 openais[1358]: [TOTEM] entering OPERATIONAL state.
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] got nodejoin message 192.168.140.7
Feb 24 11:20:58 dc3 openais[1358]: [CLM ] got nodejoin message 192.168.140.9
Feb 24 11:20:58 dc3 openais[1358]: [CPG ] got joinlist message from node 3
Feb 24 11:20:58 dc3 openais[1358]: [CPG ] got joinlist message from node 1
Feb 24 11:20:58 dc3 fenced[1374]: dc2.xencluster not a cluster member after 0 sec post_fail_delay
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] entering GATHER state from 11.
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] Saving state aru 21 high seq received 21
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] Storing new sequence id for ring 3c
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] entering COMMIT state.
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] entering RECOVERY state.
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] position [0] member 192.168.140.7:
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] previous ring seq 56 rep 192.168.140.7
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] aru 21 high delivered 21 received flag 1
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] position [1] member 192.168.140.8:
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] previous ring seq 56 rep 192.168.140.8
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] aru 1 high delivered 0 received flag 1
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] position [2] member 192.168.140.9:
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] previous ring seq 56 rep 192.168.140.7
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] aru 21 high delivered 21 received flag 1
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] Did not need to originate any messages in recovery.
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] New Configuration:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] Members Left:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] Members Joined:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] New Configuration:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] Members Left:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] Members Joined:
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 11:21:15 dc3 openais[1358]: [SYNC ] This node is within the primary component and will provide service.
Feb 24 11:21:15 dc3 openais[1358]: [TOTEM] entering OPERATIONAL state.
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] got nodejoin message 192.168.140.7
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] got nodejoin message 192.168.140.8
Feb 24 11:21:15 dc3 openais[1358]: [CLM ] got nodejoin message 192.168.140.9
Feb 24 11:21:15 dc3 openais[1358]: [CPG ] got joinlist message from node 3
Feb 24 11:21:15 dc3 openais[1358]: [CPG ] got joinlist message from node 1
dlm: connecting to 2
dlm: got connection from 2
Feb 24 11:21:20 dc3 kernel: dlm: connecting to 2
Feb 24 11:21:20 dc3 kernel: dlm: got connection from 2
このログから、cDomUsのメンバdc3がフェンス操作を(仮想マシンフェンスfVMによって)指示していることがわかる。
クラスタの状態を見てみる。
[root@dc2 ~]# cman_tool services
type level name id state
fence 0 default 00010003 none
[1 2 3]
dlm 1 clvmd 00020003 none
[1 2 3]
dlm 1 rgmanager 00030003 none
[1 2 3]
[root@dc2 ~]#
この[state]の部分が[none]になっていることに注意。

コマンドラインからのフェンス
次に、コマンドラインからフェンスする。対象クラスタcDomUsのメンバ(この場合はdc2)から次のように実行する。引数のノード名は、FQDNで指定しなければならない。
[root@dc2 ~]# fence_node dc3.xencluster
[root@dc2 ~]#
フェンスされたノードは即時に停止され、再起動される。
<<略>>
Starting HAL daemon: [ OK ]
Starting oddjobd: [ OK ]
Starting Cluster Module - cluster monitor: Setting verbosity level to LogBasic
[ OK ]
Starting Cluster Service Manager: [ OK ]
dlm: lockspace 30003 from 2 type 1 not found
Starting ricci: [ OK ]

CentOS release 5 (Final)
Kernel 2.6.18-53.1.13.el5xen on an i686

dc3.xencluster login:
他のノードのログは次の通り。
[root@dc2 ~]# tail -f /var/log/messages
Feb 24 15:39:47 dc2 fence_node[22750]: Fence of "dc3.xencluster" was successful
Feb 24 15:39:53 dc2 openais[1377]: [TOTEM] entering GATHER state from 12.
dlm: closing connection to node 1
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] entering GATHER state from 11.
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] Saving state aru 39 high seq received 39
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] Storing new sequence id for ring 40
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] entering COMMIT state.
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] entering RECOVERY state.
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] position [0] member 192.168.140.7:
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] previous ring seq 60 rep 192.168.140.7
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] aru 39 high delivered 39 received flag 1
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] position [1] member 192.168.140.8:
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] previous ring seq 60 rep 192.168.140.7
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] aru 39 high delivered 39 received flag 1
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] Did not need to originate any messages in recovery.
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] New Configuration:
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] Members Left:
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] Members Joined:
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] New Configuration:
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] Members Left:
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] Members Joined:
Feb 24 15:39:58 dc2 openais[1377]: [SYNC ] This node is within the primary component and will provide service.
Feb 24 15:39:58 dc2 openais[1377]: [TOTEM] entering OPERATIONAL state.
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] got nodejoin message 192.168.140.7
Feb 24 15:39:58 dc2 openais[1377]: [CLM ] got nodejoin message 192.168.140.8
Feb 24 15:39:58 dc2 kernel: dlm: closing connection to node 1
Feb 24 15:39:58 dc2 openais[1377]: [CPG ] got joinlist message from node 3
Feb 24 15:39:59 dc2 openais[1377]: [CPG ] got joinlist message from node 2
Feb 24 15:39:59 dc2 fenced[1393]: dc3.xencluster not a cluster member after 0 sec post_fail_delay
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] entering GATHER state from 11.
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] Saving state aru 1f high seq received 1f
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] Storing new sequence id for ring 44
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] entering COMMIT state.
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] entering RECOVERY state.
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] position [0] member 192.168.140.7:
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] previous ring seq 64 rep 192.168.140.7
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] aru 1f high delivered 1f received flag 1
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] position [1] member 192.168.140.8:
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] previous ring seq 64 rep 192.168.140.7
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] aru 1f high delivered 1f received flag 1
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] position [2] member 192.168.140.9:
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] previous ring seq 64 rep 192.168.140.9
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] aru 9 high delivered 9 received flag 1
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] Did not need to originate any messages in recovery.
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] New Configuration:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] Members Left:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] Members Joined:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] CLM CONFIGURATION CHANGE
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] New Configuration:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.7)
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.8)
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] Members Left:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] Members Joined:
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] r(0) ip(192.168.140.9)
Feb 24 15:40:17 dc2 openais[1377]: [SYNC ] This node is within the primary component and will provide service.
Feb 24 15:40:17 dc2 openais[1377]: [TOTEM] entering OPERATIONAL state.
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] got nodejoin message 192.168.140.7
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] got nodejoin message 192.168.140.8
Feb 24 15:40:17 dc2 openais[1377]: [CLM ] got nodejoin message 192.168.140.9
Feb 24 15:40:17 dc2 openais[1377]: [CPG ] got joinlist message from node 2
Feb 24 15:40:17 dc2 openais[1377]: [CPG ] got joinlist message from node 3
dlm: connecting to 1
Feb 24 15:40:21 dc2 kernel: dlm: connecting to 1
クラスタの状態を確認する。
[root@dc2 ~]# cman_tool services
type level name id state
fence 0 default 00010003 none
[1 2 3]
dlm 1 clvmd 00020003 none
[1 2 3]
dlm 1 rgmanager 00030003 none
[1 2 3]
[root@dc2 ~]#


その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

2008/02/23

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その7・クラスタcDomUsの生成

DomU dc1dc2、およびdc3から成るクラスタcDomUsを生成する。このクラスタのメンバは、仮想マシンフェンス(XVMフェンス)によってフェンスされる。仮想マシンフェンスを実行するデーモンfence_xvmdは、前回生成したクラスタcDom0s上で動作している。

まず、fs1上でdc[123]を起動する。
[root@fs1 ~]# xm create dc1
Using config file "/etc/xen/dc1".
Started domain dc1
[root@fs1 ~]# xm create dc2
Using config file "/etc/xen/dc2".
Started domain dc2
[root@fs1 ~]# xm create dc3
Using config file "/etc/xen/dc3".
Started domain dc3
[root@fs1 ~]#

以下は、前回と同様、ブラウザからの作業。ブラウザでhttps://bs1.xencluster:8084へアクセス、ユーザadminでログインする。[Luci Homebase]画面から、[cluster]タブ→[Create a New Cluster]を選ぶ。
[Cluster Name]にcDomUs、[Node Hostname]に、dc1.xenclusterdc2.xencluster、およびdc3.xenclusterを入力、[Root Password]の一番上のみにdc*のパスワードを入力、[Check if node passwords are identical.]をチェックし、[Submit]ボタンを押下する。確認を求めるダイアログが表示され、[OK]を押下すると、進行状況が表示される。
クラスタ生成が完了すると、cDomUsの管理画面が表示される。
仮想マシンフェンスfVMを定義する。クラスタcDomUsの管理画面から、[Shared Fence Device]→[Add a Fence Device]を選ぶ。
続いて、[Fencing Type]リストボックスで[Virtual Machine Fencing]を選択、[Name]にフェンスデバイス名fVMを入力し、[Add this shared fence device]ボタンを押下する。
確認を求めるダイアログに対して[OK]を押下すると、進行状況が表示される。
設定がクラスタに行渡ると、[Fence Device Form]画面が表示される。各クラスタメンバdc[123]に対して、主フェンス手法(main fencing method)として、仮想マシンフェンスfVMを加える。
クラスタcDomUsの管理画面から、[Nodes]→[Configure]→[dc1.xencluster]を選択する。[Add a fence device to this level]をクリックすると、[Fence Type]リストボックスが表示される。[Fence Type]リストボックスに上で定義したfVMを選択する。[Domain]には、dc1.xenclusterに対応するXen DomU名、dc1を入力する。[Update main fence properties]ボタンを押下する。
確認を求めるダイアログに対して、[OK]を選択すると、進行状況が表示される。
設定が完了すると、dc1の設定画面に戻る。他のメンバdc[23]に対しても、この操作を実行する。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その6・クラスタcDom0sの生成

Conga (Luci & Ricci)を使い、クラスタを構成する。まず、fs1のみからなるクラスタcDom0sを生成する。
ブラウザを起動し、https://bs1.xencluster:8084へアクセスする。
SSLに関する警告が二つ表示されるが、どちらも[OK]を選択する。
ログイン画面が表示される。
ユーザ名にadmin、パスワードにLuciの初期化の際入力したものを入力し、[ログイン]ボタンを押下する。
「Luci Homebase」画面が表示される。
[Cluster]タブ→[Create New Cluster]を選ぶ。
[Cluster Name]にcDom0s、[Node Hostname]および[Root Password]にそれぞれfs1.xenclusterおよび、fs1のrootのパスワードを入力し、[Submit]ボタンを押下する。
確認を求めるダイアログに対して[OK]を押下すると、進行状況が表示される。
クラスタ生成が完了すると、cDom0sの管理画面が表示される。
[Fence]タブを選ぶ。[Run XVM fence daemon]をチェックし、[Apply]ボタンを押下する。
確認のダイアログに対して、[OK]を選択すると、進行状況が表示される。設定がクラスタcDom0sに反映されると、再びcDom0sの管理画面が表示される。
XVMフェンスデーモンを起動するために、fs1を再起動する。fs1.xenclusterのリストボックスから[Reboot this node]を選択し、[Go]ボタンを押下する。
確認を求めるダイアログに対して、[OK]ボタンを押下すると、進行状況が表示される。五秒ほどでcDom0sの管理画面が表示される。まだfs1の再起動が完了していないため、[Node Name]が赤字で表示される。
再起動完了後、ブラウザをリロードすると、正常なcDom0sの管理画面が表示される。
デーモンfence_xvmdが起動されているかを確認する。
[root@fs1 ~]# ps aux | grep xvm
root 6018 0.0 0.0 4936 1760 ? Ss 16:02 0:00 /sbin/fence_xvmd
root 10656 0.0 0.0 3908 680 pts/1 S+ 16:21 0:00 grep xvm
[root@fs1 ~]#

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

2008/02/22

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その5・Luciの準備

Luciをbs1上で起動する。Dom0 fs2上で、
[root@fs2 ~]# xm create -c bs1
としてbs1を起動した後、Luciを初期化する。
[root@bs1 ~]# luci_admin init
Initializing the Luci server


Creating the 'admin' user

Enter password: パスワード
Confirm password: パスワード

Please wait...
The admin password has been successfully set.
Generating SSL certificates...
Luci server has been successfully initialized


Restart the Luci server for changes to take effect
eg. service luci restart

[root@bs1 ~]#
パスワードはエコーバックされないので表示されない。
次に、サービスluciを起動するのだが、どうも現在のバージョンにはバグがあるらしく、正常に起動しない場合がある。
[root@bs1 ~]# service luci status
luci is stopped
[root@bs1 ~]# service luci start
Starting luci: Generating https SSL certificates... done
[FAILED]
[root@bs1 ~]# service luci status
luci is stopped
[root@bs1 ~]# service luci start
Starting luci: [ OK ]

Point your web browser to https://bs1.xencluster:8084 to access luci

[root@bs1 ~]# service luci status
luci is running...
[root@bs1 ~]#
OS起動時にサービスluciが起動するよう設定しても、正常にサービスが起動しないようだ。
[root@bs1 ~]# chkconfig --list luci
luci 0:off 1:off 2:off 3:off 4:off 5:off 6:off
[root@bs1 ~]# chkconfig luci on
[root@bs1 ~]# chkconfig --list luci
luci 0:off 1:off 2:on 3:on 4:on 5:on 6:off
[root@bs1 ~]# shutdown -r now
<<略>>
INIT: version 2.86 booting
Welcome to CentOS release 5 (Final)
Press 'I' to enter interactive startup.
Setting clock (localtime): Fri Feb 21 23:35:01 JST 2008 [ OK ]
<<略>>
Starting HAL daemon: [ OK ]
Starting oddjobd: [ OK ]
Starting luci: [FAILED]
Starting Cluster Module - cluster monitor: Setting verbosity level to LogBasic
[ OK ]
Starting ricci: [ OK ]

CentOS release 5 (Final)
Kernel 2.6.18-53.1.13.el5xen on an i686

bs1.xencluster login:
解決策は見つかっていないので、bs1が起動した後、サービスluciを起動することで対応する。

ちなみにこの問題は、Red HatではBugzilla Bug 243072、CentOSではID 0002455IDで扱われている。どちらでもまだ解決されていない。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その4・DomU bs1のインストール

LuciサーバとなるDomU bs1のインストールは、dc*とほぼ同様。詳しい手順については、『Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール』を参照。
Kickstart設定ファイルhttp://repository.xencluster/centos/5/bsX-ks.cfgは以下の通り。
logging --host=192.168.55.192 --level=debug

install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$KAWvpPhY$2pUQEq/OY2NFyUpCq7OWe/
firewall --enabled --ssh --port=snmp:udp --port=8084:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=avahi-daemon,bluetooth,cpuspeed,cups,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,yum-updatesd

clearpart --all --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kmod-gfs-xen
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
-kmod-gfs
-kmod-gnbd
-kernel

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA!CUT!N someone@somehost
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`mx.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@xencluster
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all none all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@xencluster

disk / 100000

load 10

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc



その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その3・DomU dcXのインストール

DomU dc[123]をインストールする。既に述べたとおり、以下の通り実行する。
この様に構成すると、すぐにクリーンインストール状態に戻すことが可能。試行錯誤を繰り返しながら検証するような場合に便利。
  • dc[0-3]に対して、設定ファイル/etc/xen/dc[0-3]により、MACアドレス00:16:3e:3a:cb:0[0-3]を与える。
  • DHCPサーバは、00:16:3e:3a:cb:0[0-3]に対して、それぞれ固定IPアドレス192.168.55.[6-9]を与える。
  • DNSサーバは、これらの正引き・逆引きを提供する。つまり、dc1.xenclusterに192.168.55.7、dc2.xenclusterに172.168.55.8、…といった具合。
  • dc[0-3]は、DNS逆引きを使って自分自身のFQDNを決定する。
この様に構成すると、DomUの設定ファイルを変更し、ネットワークに投入するだけで、設定変更可能。直接dc*にログインする必要がない。

プロトタイプdc0のインストールに使用するKickstart設定ファイルks=http://repository.xencluster/centos/5/dcX-ks.cfgは以下の通り。
logging --host=192.168.55.192 --level=debug

install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
network --device eth0 --bootproto dhcp --hostname=localhost.localdomain
rootpw --iscrypted $1$KAWvpPhY$2pUQEq/OY2NFyUpCq7OWe/
firewall --enabled --ssh --port=snmp:udp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone Asia/Tokyo
bootloader --location=mbr --driveorder=xvda --append="console=xvc0"

services --enabled=ntpd,oddjobd,snmpd --disabled=avahi-daemon,bluetooth,cpuspeed,cups,hidd,lm_sensors,mdmonitor,microcode_ctl,nfslock,pcscd,smartd,yum-updatesd

clearpart --all --drives=xvda
part /boot --fstype ext3 --size=100 --ondisk=xvda
part pv.2 --size=0 --grow --ondisk=xvda
volgroup VolGroup00 --pesize=32768 pv.2
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroup00 --size=272 --grow --maxsize=544
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroup00 --size=1024 --grow
repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

reboot

%packages
@admin-tools
@base
@cluster-storage
@clustering
@core
@emacs
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@web-server
-smartmontools
-OpenIPMI*
-squid
-samba-*
-system-config-samba
lynx
tftp
kmod-gfs-xen
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
-kmod-gfs
-kmod-gnbd
-kernel

%post --log=/mnt/sysimage/root/install-post.log
### network
echo 'NOZEROCONF=yes' >> /etc/sysconfig/network

/bin/cp -p /etc/sysconfig/network-scripts/ifcfg-eth0 /tmp/ifcfg-eth0
/bin/sed 's/^HWADDR=/#HWADDR=/' < /tmp/ifcfg-eth0 > /etc/sysconfig/network-scripts/ifcfg-eth0

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### yum update from the local repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
Atf+JoYSVwnPqBR8vnbG68EaY/Y4sr570YywcWXUcsZD6BwQAMA0x62YIMSlHArX60JzvNeh95x7
!CUT!
6IA5qNzen6s+XVJnOw8k3zUbll2hDNHeSp4lXDvxu0b1o885eix+9G3PDnIk78pdW7==
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key
/sbin/restorecon /etc/cluster/fence_xvm.key

##### iptables
/bin/cp -p /etc/sysconfig/iptables /etc/sysconfig/iptables.dist
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### sshd
/bin/cp -p /etc/ssh/sshd_config /etc/ssh/sshd_config.dist
/bin/sed 's/^PasswordAuthentication yes/PasswordAuthentication no/' < /etc/ssh/sshd_config.dist > /etc/ssh/sshd_config

/bin/mkdir ~root/.ssh
/bin/chmod 600 ~root/.ssh
/bin/cat > ~root/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA!CUT!N someone@somehost
EOL
/bin/chmod 644 ~root/.ssh/authorized_keys2

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`mx.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@xencluster
EOL
/usr/bin/newaliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all none all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@xencluster

disk / 100000

load 10

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibs +REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL

### NTP on Xen DomU
/bin/cat >> /etc/sysctl.conf <<EOL

# For ntpd on Xen DomU.
xen.independent_wallclock = 1
EOL

### cron
/bin/cp -p /etc/crontab /etc/crontab.dist
/bin/sed 's/^\(..\) 4 /\1 5 /' < /etc/crontab.dist > /etc/crontab

### grub
log_mesg "grub"
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.dist
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.dist > /boot/grub/grub.conf

### /etc/bashrc
log_mesg "bashrc"
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc
%postスクリプトについては、以下の点に注意。
  • 仮想マシンフェンスを行うためのキーファイル/etc/cluster/fence_xvm.keyを作成する。これは、ノードfs1と共有される。
  • ファイアウォール(iptables)の設定ファイルを変更している。これは、クラスタ関係の通信を妨げないため。具体的には、192.168.55/24からの通信をすべて許可している(これは緩過ぎるのだが…)
  • DomUで、Dom0と独立して時刻を管理できるよう、/etc/sysctl.confを修正する(『XenのDomUでNTPを使う』参照)
  • Cronの実行時刻がDom0 fs1と競合しないよう、/etc/crontabを修正する(『日次実行時刻の変更』参照)

プロトタイプdc0のインストール作業は、fs1上で以下の様に実行する。
[root@fs1 ~]# lvcreate --name=LogVolDc0 --size=4G /dev/VolGroupXX
Logical volume "LogVolDc0" created
[root@fs1 ~]# virt-install --name=dc0 --ram=256 --file=/dev/VolGroupXX/LogVolDc0 --location=http://repository.xencluster/centos/5/os/i386 --nographics --paravirt --bridge=xenbr4000 --extra-args='ks=http://repository.xencluster/centos/5/dcX-ks.cfg' --mac=00:16:3e:3a:cb:00


Starting install...
Retrieving CentOS... 557 kB 00:00
Retrieving vmlinuz... 100% |=========================| 2.0 MB 00:00
...
インストールが完了したら、dc0を停止し、dc[123]に対するスナップショットLV LogVolDc[123]を作成する。
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc1 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc1" created
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc2 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc2" created
[root@fs1 ~]# lvcreate --snapshot --name=LogVolDc3 --size=1G /dev/VolGroupXX/LogVolDc0
Logical volume "LogVolDc3" created
[root@fs1 ~]#
DomUの設定ファイルを生成する。
[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc1/
s/"dc0"/"dc1"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:01/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc1

[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc2/
s/"dc0"/"dc2"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:02/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc2

[root@fs1 ~]# sed 's/LogVolDc0/LogVolDc3/
s/"dc0"/"dc3"/
s/00:16:3e:3a:cb:00/00:16:3e:3a:cb:03/
s/uuid = ".*"/uuid = "'`uuidgen`'"/
s/memory = .*/memory = 64/' < /etc/xen/dc0 > /etc/xen/dc3

[root@fs1 ~]#
以上でdc[123]を起動する準備が完了した。コマンドラインから、xm create -c dc1の様に起動する。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その2・Dom0 fsXのインストール

Dom0 fs1をインストールする。このマシンは、クラスタcDom0sの唯一のメンバとなる。

まず、fs1にCentOS 5.1をインストールする。手順の詳細は、『DRACでリモートからCentOS 5.1をAnaconda Kickstartで完全自動PXEインストール』を参照。キックスタート設定ファイルhttp://repository.xencluster/centos/5.1/fsX-ks.cfgは以下の通り。
logging --host=192.168.55.192

text
install
url --url http://repository.xencluster/centos/5/os/i386
lang en_US.UTF-8
keyboard jp106
monitor --monitor="LCD Panel 1024x768"
xconfig --startxonboot --driver ati --resolution 1024x768 --depth 24
network --device eth0 --bootproto static --ip 192.168.55.191 --netmask 255.255.255.0 --gateway 192.168.55.195 --nameserver 192.168.55.193,192.168.55.194 --hostname fs1.xencluster
network --device eth1 --onboot yes --bootproto static --hostname fs1.xencluster
rootpw --iscrypted $1$zthPniQJ$u8VAa0oCtLcKrpfk/WIjs0
user --name USERNAME --homedir /home/USERNAME --iscrypted --password=$1$DCVowOrU$N86i3KrFg2yftOqtXMB3w/ --shell=/bin/bash --groups=USERNAME,wheel
firewall --enabled --port=22:tcp
authconfig --enableshadow --enablemd5
selinux --permissive
timezone --utc Asia/Tokyo
bootloader --location=mbr --driveorder=sda --append="xencons=tty"

clearpart --all --drives=sda
part /boot --fstype ext3 --size=100 --ondisk=sda
part pv.6 --size=0 --grow --ondisk=sda
volgroup VolGroupXX --pesize=32768 pv.6
logvol swap --fstype swap --name=LogVol01 --vgname=VolGroupXX --size=1984
logvol / --fstype ext3 --name=LogVol00 --vgname=VolGroupXX --size=10240

repo --name=base --baseurl=http://repository.xencluster/centos/5/os/i386/
repo --name=updates --baseurl=http://repository.xencluster/centos/5/updates/i386/
repo --name=addons --baseurl=http://repository.xencluster/centos/5/addons/i386/
repo --name=extras --baseurl=http://repository.xencluster/centos/5/extras/i386/

services --enabled=oddjobd,ntpd --disabled=avahi-daemon,cpuspeed,cups,nfslock,pcscd,smartd,snmpd,yum-updatesd

reboot

%packages
@admin-tools
@base
@base-x
@cluster-storage
@clustering
@core
@dns-server
@editors
@emacs
@ftp-server
@gnome-desktop
@graphical-internet
@japanese-support
@legacy-network-server
@mail-server
@network-server
@ruby
@server-cfg
@system-tools
@text-internet
@virtualization
@web-server
lynx
tftp
-kernel
kernel-xen
-kmod-gfs
kmod-gfs-xen
-kmod-gfs
kmod-gnbd-xen
-NetworkManager
-bluez-utils
device-mapper-multipath
-irda-utils
-pcmciautils
net-snmp-utils
net-snmp-libs
net-snmp
OpenIPMI
OpenIPMI-libs
openhpi
-squid


%post --log=/mnt/sysimage/root/anaconda-post.log --erroronfail
/bin/cp /tmp/ks-script-* /root

### network
/bin/cat <<EOL >> /etc/sysconfig/network
NOZEROCONF=yes
VLAN=yes
VLAN_NAME_TYPE=DEV_PLUS_VID
EOL

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.4000
DEVICE=eth1.4000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.4000

/bin/cat <<EOL > /etc/sysconfig/network-scripts/ifcfg-eth1.1000
DEVICE=eth1.1000
BOOTPROTO=none
ONBOOT=yes
EOL
/sbin/restorecon /etc/sysconfig/network-scripts/ifcfg-eth1.1000

### logrotate
/bin/cat > /etc/logrotate.d/00local.conf <<EOL
rotate 20
compress
start 100
EOL
/sbin/restorecon /etc/logrotate.d/00local.conf

### local yum repository
/bin/cp -p /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.dist
/bin/sed 's/mirrorlist=/#mirrorlist=/
s/#baseurl=/baseurl=/
s/mirror.centos.org/repository.xencluster/' < /etc/yum.repos.d/CentOS-Base.repo.dist > /etc/yum.repos.d/CentOS-Base.repo

### sshd
/usr/bin/patch /etc/ssh/sshd_config <<EOL
39a40
> PermitRootLogin no
60c61
< PasswordAuthentication yes
---
> PasswordAuthentication no
EOL
/sbin/restorecon /etc/ssh/sshd_config

##### for User USERNAME
/bin/mkdir ~USERNAME/.ssh
/bin/chmod 700 ~USERNAME/.ssh
/bin/cat > ~USERNAME/.ssh/authorized_keys2 <<EOL
ssh-dss AAAA!CUT!N someone@somehost
EOL
/bin/chmod 644 ~USERNAME/.ssh/authorized_keys2
/bin/chown -R USERNAME.USERNAME ~USERNAME/.ssh

### DELL OpenManage
/usr/bin/wget -q -O - http://linux.dell.com/repo/hardware/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/software/bootstrap.cgi | bash
/usr/bin/wget -q -O - http://linux.dell.com/repo/firmware/bootstrap.cgi | bash
/usr/bin/yum install -y srvadmin-all
/usr/bin/yum install -y $(/usr/bin/inventory_firmware -b)
/usr/bin/update_firmware

### Mail
##### /etc/mail/sendmail.cf
/usr/bin/patch /etc/mail/sendmail.mc <<EOL
26c26
< dnl define(\`SMART_HOST', \`smtp.your.provider')dnl
---
> define(\`SMART_HOST', \`mx.xencluster')dnl
EOL
(cd /etc/mail; /usr/bin/make sendmail.cf)
/sbin/restorecon /etc/mail/sendmail.cf

##### /etc/aliases
/usr/bin/patch /etc/aliases <<EOL
96c96
< #root: marc
---
> root: root@xencluster
EOL
/usr/bin/newaliases
/sbin/restorecon /etc/aliases

### SNMP
/bin/cat > /etc/snmp/snmpd.conf <<EOL
com2sec localhost localhost COMMUNITY_STRING
com2sec localnet 192.168.55.0/24 COMMUNITY_STRING

group gOpLocalhost v1 localhost
group gOpLocalhost v2c localhost
group gOpLocalnet v1 localnet
group gOpLocalnet v2c localnet

view all included .1
view vDell included .1.3.6.1.4.1.674.10892.1
view systemview included REDHAT-CLUSTER-MIB:RedHatCluster

access gOpLocalhost "" any noauth exact all vDell all
access gOpLocalnet "" any noauth exact all none all

syslocation Unknown
syscontact root@xencluster

disk / 100000

load 10

# for DELL
smuxpeer .1.3.6.1.4.1.674.10892.1

# for cluster
dlmod RedHatCluster /usr/lib/cluster-snmp/libClusterMonitorSnmp.so
EOL
/sbin/restorecon /etc/snmp/snmpd.conf

/bin/cat > /etc/snmp/snmp.conf <<EOL
mibdirs +/opt/dell/srvadmin/omsa/mibs:/opt/dell/srvadmin/rac5/mibs:/opt/dell/srvadmin/rac3/mibs:/opt/dell/srvadmin/sm/mibs:/opt/dell/srvadmin/rac4/mibs
mibs +MIB-Dell-10892:DCS3FRU-MIB:DCS3RMT-MIB:DCS3RMT-MIB:StorageManagement-MIB:DCS3RMT-MIB:REDHAT-MIB:REDHAT-CLUSTER-MIB
EOL
/sbin/restorecon /etc/snmp/snmp.conf

##### iptables
/bin/cat > /etc/sysconfig/iptables <<EOL
*filter
:INPUT ACCEPT [0:0]
:FORWARD ACCEPT [0:0]
:OUTPUT ACCEPT [0:0]
:RH-Firewall-1-INPUT - [0:0]
-A INPUT -j RH-Firewall-1-INPUT
-A FORWARD -j RH-Firewall-1-INPUT
-A RH-Firewall-1-INPUT -i lo -j ACCEPT
-A RH-Firewall-1-INPUT -p icmp --icmp-type any -j ACCEPT
-A RH-Firewall-1-INPUT -p 50 -j ACCEPT
-A RH-Firewall-1-INPUT -p 51 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp --dport 5353 -d 224.0.0.251 -j ACCEPT
-A RH-Firewall-1-INPUT -p udp -m udp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -p tcp -m tcp --dport 631 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -s 192.168.55.0/24 -i eth0 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 22 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 443 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 80 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 123 -j ACCEPT
-A RH-Firewall-1-INPUT -j REJECT --reject-with icmp-host-prohibited
COMMIT
EOL

### For Xen
/usr/bin/base64 -di <<EOL | /bin/zcat > /etc/xen/scripts/network-vlan-bridge
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
f9k91baOyaixMWFoeDSA4yqMvH8D4vHg6zogAAA=
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge

/bin/cat <<EOL > /etc/xen/scripts/network-vlan-bridge-wrapper
#!/bin/sh
BRIDGE_SCRIPT=/etc/xen/scripts/network-vlan-bridge
\$BRIDGE_SCRIPT "\$@" vifnum=0 netdev=eth1.1000 bridge=xenbr1000
\$BRIDGE_SCRIPT "\$@" vifnum=1 netdev=eth1.4000 bridge=xenbr4000
EOL
/bin/chmod 755 /etc/xen/scripts/network-vlan-bridge-wrapper
/sbin/restorecon /etc/xen/scripts/network-vlan-bridge-wrapper

/bin/cp -p /etc/xen/xend-config.sxp /etc/xen/xend-config.sxp.dist
/bin/sed 's/^(network-script network-bridge)/(network-script network-vlan-bridge-wrapper)/' < /etc/xen/xend-config.sxp.dist > /etc/xen/xend-config.sxp

/bin/cat <<EOL > /etc/modprobe.d/xen-vlan
options netloop nloopbacks=32
EOL
/sbin/restorecon /etc/modprobe.d/xen-vlan

### For Cluster
##### /etc/cluster/fence_xvm.key
/usr/bin/base64 -di > /etc/cluster/fence_xvm.key <<EOL
Atf+JoYSVwnPqBR8vnbG68EaY/Y4sr570YywcWXUcsZD6BwQAMA0x62YIMSlHArX60JzvNeh95x7
!CUT!
6IA5qNzen6s+XVJnOw8k3zUbll2hDNHeSp4lXDvxu0b1o885eix+9G3PDnIk78pdW7==
EOL
/bin/chmod 600 /etc/cluster/fence_xvm.key
/sbin/restorecon /etc/cluster/fence_xvm.key

### CMAN init script
/usr/bin/base64 -di <<EOL | /usr/bin/patch /etc/init.d/cman
MTU2YzE1Ngo8ICAgICBlZ3JlcCAiXltbOmJsYW5rOl1dKlwoW1s6Ymxhbms6XV0qbmV0d29yay1z
Y3JpcHRbWzpibGFuazpdXStuZXR3b3JrLWJyaWRnZShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgPi9kZXYvbnVsbCAyPi9kZXYvbnVsbAotLS0K
PiAgICAgZWdyZXAgIl5bWzpibGFuazpdXSpcKFtbOmJsYW5rOl1dKm5ldHdvcmstc2NyaXB0W1s6
Ymxhbms6XV0rbmV0d29yay0ofHZsYW4tKWJyaWRnZSh8LXdyYXBwZXIpKFtbOmJsYW5rOl1dKlwp
fFtbOmJsYW5rOl1dKykiIC9ldGMveGVuL3hlbmQtY29uZmlnLnN4cCA+L2Rldi9udWxsIDI+L2Rl
di9udWxsCjE2NSwxNjZjMTY1LDE2Nwo8ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy9u
ZXR3b3JrLWJyaWRnZSBdOyB0aGVuCjwgICAgICAgICBpZiBbIC1mIC9ldGMveGVuL3NjcmlwdHMv
bmV0d29yay1icmlkZ2UgXTsgdGhlbgotLS0KPiAgICAgeGVuX2JyaWRnZV9zY3JpcHQ9YGVncmVw
ICJeW1s6Ymxhbms6XV0qXChbWzpibGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dK25l
dHdvcmstKHx2bGFuLSlicmlkZ2UofC13cmFwcGVyKShbWzpibGFuazpdXSpcKXxbWzpibGFuazpd
XSspIiAvZXRjL3hlbi94ZW5kLWNvbmZpZy5zeHAgfCBzZWQgJ3MvXltbOmJsYW5rOl1dKihbWzpi
bGFuazpdXSpuZXR3b3JrLXNjcmlwdFtbOmJsYW5rOl1dXCtcfFtbOmJsYW5rOl1dKilbWzpibGFu
azpdXSovL2cnYAo+ICAgICBpZiBbICEgLXggL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9z
Y3JpcHQgXTsgdGhlbgo+ICAgICAgICAgaWYgWyAtZiAvZXRjL3hlbi9zY3JpcHRzLyR4ZW5fYnJp
ZGdlX3NjcmlwdCBdOyB0aGVuCjE3NmMxNzcKPCAgICAgZXJybXNnPSQoL2V0Yy94ZW4vc2NyaXB0
cy9uZXR3b3JrLWJyaWRnZSBzdGFydCAyPiYxKSB8fCByZXR1cm4gMQotLS0KPiAgICAgZXJybXNn
PSQoL2V0Yy94ZW4vc2NyaXB0cy8keGVuX2JyaWRnZV9zY3JpcHQgc3RhcnQgMj4mMSkgfHwgcmV0
dXJuIDEKMTkyYzE5MywxOTUKPCAgICAgeG0gbGlzdCAtLWxvbmcgMj4gL2Rldi9udWxsIHwgZ3Jl
cCAtcSAiRG9tYWluLTAiIHx8IHJldHVybiAxCi0tLQo+ICAgICAjIFRoZSBmb2xsb3dpbmcgbGlu
ZSBpcyBjb21tZW50ZWQgb3V0IGJlY2F1c2UgdGhpcyBjaGVjayBkb2VzIG5vdAo+ICAgICAjIHdv
cmsgcHJvcGVybHkgYmVmb3JlIHhlbmQgaXMgc3RhcnRlZC4KPiAgICAgI3htIGxpc3QgLS1sb25n
IDI+IC9kZXYvbnVsbCB8IGdyZXAgLXEgIkRvbWFpbi0wIiB8fCByZXR1cm4gMQo=
EOL
/sbin/restorecon /etc/init.d/cman

### X fonts FOR racvnc
/bin/mkdir /usr/X11R6/lib
/bin/ln -s /usr/share/X11 /usr/X11R6/lib

### /etc/inittab
/usr/bin/patch /etc/inittab <<EOL
32c32,33
< ca::ctrlaltdel:/sbin/shutdown -t3 -r now
---
> #ca::ctrlaltdel:/sbin/shutdown -t3 -r now
> ca::ctrlaltdel:ca::ctrlaltdel:/usr/bin/logger 'CTRL-ALT-DELETE trap is disabled'
EOL
/sbin/restorecon /etc/inittab

### GDM
/usr/bin/patch /etc/gdm/custom.conf <<EOL
50a51
> SystemMenu=false
EOL
/sbin/restorecon /etc/gdm/custom.conf

### grub
/bin/cp -p /boot/grub/grub.conf /boot/grub/grub.conf.orig
/bin/sed 's/ rhgb quiet//' < /boot/grub/grub.conf.orig > /boot/grub/grub.conf

### /etc/bashrc
/bin/cp -p /etc/bashrc /etc/bashrc.dist
/bin/sed 's/xterm\*)/xterm*|vt100*)/' < /etc/bashrc.dist > /etc/bashrc
%postスクリプトについては、以下の点に注意。
インストールが完了し、OSが正常起動することを確認したら、不要な仮想ブリッジvirbr0を停止する(『192.168.122.0/24へのルーティングを消す(libvirt)』参照)
[root@fs1 ~]# virsh net-autostart default --disable
Network default unmarked as autostarted

[root@fs1 ~]#

また、現時点でsnmpdは、今回の様な構成では正常に動作しない。DELLの場合、chkconfigコマンドでsnmpdを無効化していても、snmpdが起動されてしまう。そのような場合は、手動で停止する。
[root@fs1 ~]# service snmpd stop
Stopping snmpd: [ OK ]
[root@fs1 ~]#

2008/6/20追記:
snmpd: ioctl 35123 returned -1』で書いた通り、VLANインターフェース名やブリッジ名を変更すればこの問題は解決可能。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験

2008/02/21

Red Hat Cluster: CentOS 5.1上でRHCSを使ってみる・その1・概要

滞っていたRed Hat Cluster Suiteの検証を再開。CentOS 5.1でRHCSを使い、以下に示すクラスタ環境を構成する。

ノード構成
FQDNIP addressClusterMemo
fs1.xencluster192.168.55.191
cDom0sa cluster node Dom0 and hosts Cluster Nodes dc1, dc2 and dc3.
fs2.xencluster192.168.55.195
N/Aa Dom0 and hosts Luci Server bs1
dc1.xencluster192.168.55.7
cDomUsa cluster node DomU hosted by fs1
dc2.xencluster192.168.55.8
cDomUsa cluster node DomU hosted by fs1
dc3.xencluster192.168.55.9
cDomUsa cluster node DomU hosted by fs1
bs1.xencluster192.168.55.12
N/Aa Luci server DomU hosted by fs2

クラスタ構成
  • クラスタcDom0sは、ノードfs1一台で構成される。本来一ノードのみならクラスタを構成する必要は無いが、Luciを用いてデーモンfence_xvmdを起動するよう設定できるのは、Luciが管理しているクラスタのメンバに対してのみ。デーモンfence_xvmdは、ホストするDomUに対して仮想マシンフェンス(Virtual Machine Fencing: VMF)を実行する。
  • クラスタcDomUsは、ノードdc1dc2およびdc3は、の三台からなる。これらのノードは、Dom0 fs1にホストされたDomUとして構成され、仮想マシンフェンスデバイスfVMでフェンスされる。
  • 以上二つのクラスタは、Luciサーバbs1から構成・管理される。Luciサーバbs1は、Dom0 fs2にホストされたDomUとして構成されている。
インストール
以下、詳細について述べる。

その1・概要
その2・Dom0 fsXのインストール
その3・DomU dcXのインストール
その4・DomU bs1のインストール
その5・Luciの準備
その6・クラスタcDom0sの生成
その7・クラスタcDomUsの生成
その8・クラスタ動作の試験