Heartbeatのインストールおよび設定 | クールガイのブログ

クールガイのブログ

ブログの説明を入力します。

------------------------------------------------------------------Heartbeat-------------------------------------------------------------------------------------------------

†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