†Heartbeatとの連携
†Heartbeatのインストール
* yumでインストールします。 先にstonithをインストールしないとheartbeatのインストールに失敗する事があります。
# yum -y install heartbeat-stonith
# yum -y install heartbeat
※以下のようなエラーメッセージが出力されてheartbeatのみインストールが失敗するので再度インストールを行う
useradd: ユーザ hacluster は存在します
error: %pre(heartbeat-2.1.3-3.el5.centos.i386) scriptlet failed, exit status 9
error: install: %pre scriptlet failed (2), skipping heartbeat-2.1.3-3.el5.centos
# yum -y install heartbeat ← heartbeatインストール再試行
†Heartbeatの設定
heartbeatの設定は特に記述がない限り、プライマリとセカンダリで全く同じ設定を行います。
†準備
* heartbeatの設定で利用するファイルは以下の通りです。
/etc/ha.d/ha.cf クラスタ構成を定義するメイン設定ファイル
/etc/ha.d/haresources Version1用のリソース設定ファイル Version2用のリソース設定ファイルを作成するために利用します。
/var/lib/heartbeat/crm/cib.xml Version2用のリソース設定ファイル
/etc/ha.d/authkeys 認証設定ファイル
* 設定ファイルはサンプルがあるのでコピーします。
# cp /usr/share/doc/heartbeat-2.1.3/authkeys /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/ha.cf /etc/ha.d/
# cp /usr/share/doc/heartbeat-2.1.3/haresources /etc/ha.d/
†ha.cfの設定
* ha.cfを編集します。ほとんどの設定がコメントアウトを解除しただけです。
# vi /etc/ha.d/ha.cf
keepalive 2
deadtime 30
warntime 10
initdead 120
udpport 694
#baud 19200 # シリアルケーブル用の設定(今回は利用しない)
#serial /dev/ttyS0 # シリアルケーブル用の設定(今回は利用しない)
ucast eth0 172.25.1.142 #相手のIP
auto_failback on
node Storage01 #uname -n
node Storage02 #uname -n
use_logd yes
crm on # Version2の設定を利用するための記述
# cp /usr/share/doc/heartbeat-*/logd.cf /etc/
# vi /etc/logd.cf
debugfile /var/log/ha-debug ← コメント解除(デバッグメッセージ用ファイル名)
logfile /var/log/ha-log ← コメント解除(ログファイル名)
logfacility none ← コメント解除&変更(syslogへログを出力しない)
†haresourcesの設定
* 共有リソースの設定はDRBDに関する設定を一行追加します。
o 書式 [node-name resource1 resource2 ... resourceN]
o resourceの部分は「/etc/ha.d/resource.d」配下のファイル名を記載します。
o 各リソースに渡す引数は「::」で区切って記述します。
o リソースがIPADDRの場合はリソース名を省略可能です。
# vi /etc/ha.d/haresources
ext3 sample
serv111 192.168.11.113/24 drbddisk::r0 Filesystem::/dev/drbd0::/data::ext3 tgtd
xfs sample
Storage01 172.25.171.137/24 drbddisk::r0 Filesystem::/dev/drbd0::/data::xfs::noatime,nodiratime,logbufs=8 tgtd
†cib.xmlの設定
* cib.xmlをゼロから作成することは非常に困難なため、haresources2cib.pyという移行ツールを利用してharesourcesからcib.xmlを作成します。
# /usr/lib/heartbeat/haresources2cib.py /etc/ha.d/haresources
errorの場合→# /usr/lib64/heartbeat/haresources2cib.py /etc/ha.d/haresources
# mkdir -p /etc/ha.d/backup
# cp /etc/ha.d/haresources /etc/ha.d/backup/haresources.org
# rm -rf /etc/ha.d/haresources
* 作成されたcib.xmlは、haresources2cib.pyのバグによりnicとcidr_netmaskの値が逆に設定されるため、修正を行います。
↓ 修正
* 最終的なcib.xml
filecib.xml
# vi /var/lib/heartbeat/crm/cib.xml
†authkeysの設定
* 認証の設定を行います。認証は現時点で最もセキュリティレベルの高いsha1を利用します。
# vi /etc/ha.d/authkeys
auth 2
2 sha1 gp1az2sx3dc
--------------------01-----------20110111-----
* セキュリティを確保するため、ファイルパーミッションを変更します。セカンダリ側も同様に設定します。
# chmod 600 /etc/ha.d/authkeys
†Heartbeatの起動
†自動起動の設定
* 自動起動をonに設定します。セカンダリ側も同様に設定します。
# chkconfig heartbeat on
†Heartbeatの起動
* DRBDボリュームはHeartbeat経由でマウントされるため、起動前にアンマウントしておきます。
# umount /data
* Heartbeatを起動します。
# /etc/init.d/heartbeat start
* 各ノードがonlineになっている事を確認します。
[root@serv111 ~]# crm_mon
Defaulting to one-shot mode
You need to have curses available at compile time to enable console mode
============
Last updated: Sat Jan 16 12:07:04 2010
Current DC: serv112 (f8d0bc86-5b18-4211-8750-443c2d49e0d2)
2 Nodes configured.
1 Resources configured.
============
Node: serv111 (169cd449-8918-4abb-ad3c-6c7363df99ac): online
Node: serv112 (f8d0bc86-5b18-4211-8750-443c2d49e0d2): online
Resource Group: group_1
IPaddr_192_168_11_113 (heartbeat::ocf:IPaddr): Started serv111
drbddisk_2 (heartbeat:drbddisk): Started serv111
Filesystem_3 (heartbeat::ocf:Filesystem): Started serv111
†Heartbeatの動作確認
プライマリ側のHeartbeatを停止させてフェイルオーバー、フェイルバックの動作確認を行います。
†初期状態の確認
* serv111の状態を確認します。
プライマリ側のため、仮想IPが割り当てられ、DRBD領域をマウントしています。
[root@serv111 ~]# ifconfig -a eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:82:38:64
inet addr:192.168.11.113 Bcast:192.168.11.255 Mask:255.255.255.0
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
[root@serv111 ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build
by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:02:24
m:res cs ro ds p mounted fstype
0:r0 Connected Primary/Secondary UpToDate/UpToDate C /data ext3
* serv112の状態を確認します。
セカンダリのため、仮想IPが割り当てられず、DRBD領域もマウントされていません。
[root@serv112 ~]# ifconfig -a eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:74:23:12
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
[root@serv112 ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build
by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:02:24
m:res cs ro ds p mounted fstype
0:r0 Connected Secondary/Primary UpToDate/UpToDate C
†フェイルオーバーの確認
* フェイルオーバーの確認をするため、serv111(プライマリ側)のheartbeatを停止させます。
[root@serv111 ~]# /etc/init.d/heartbeat stop
Stopping High-Availability services:
[ OK ]
* serv111の状態を確認します。
Heartbeatを終了させたため、仮想IPが割り当てられず、DRBD領域もアンマウントされています。
[root@serv111 ~]# ifconfig -a eth0:0
eth0:0 Link encap:Ethernet HWaddr 00:0C:29:82:38:64
UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1
Interrupt:177 Base address:0x1400
†フェイルバックの確認
* serv111側で停止させたHeartbeatを起動させてフェイルバックの確認を行います。
[root@serv111 ~]# /etc/init.d/heartbeat start
[root@serv111 ~]# /etc/init.d/drbd status
drbd driver loaded OK; device status:
version: 8.3.2 (api:88/proto:86-90)
GIT-hash: dd7985327f146f33b86d4bff5ca8c94234ce840e build
by mockbuild@v20z-x86-64.home.local, 2009-08-29 14:02:24
m:res cs ro ds p mounted fstype
0:r0 Connected Primary/Secondary UpToDate/UpToDate C /data ext3