はじめに
Amazon.co.jp: Linux-DB システム構築/運用入門 (DB Magazine SELECTION): 松信 嘉範: 本とググってみつけたHot Linux - heartbeat(1.2.x)のインストール/設定(Redhat9,WhiteBoxEL4)などのページを参考に試しました。heartbeatの設定ファイルはv1形式にしました。
cent1 (192.168.122.21)とcent2 (192.168.122.22)の2台で相互監視する例を試しました。
インストール
$ sudo install heartbeat heartbeat-pils heartbeat-stonith0002821: "yum install heartbeat" fails - CentOS Bug Trackerのバグのため、heartbeatのインストールはもう一度実行する必要がありました。
$ sudo install heartbeat
設定
ファイアウォールでUDPのポート694を開ける
言わずもがなということで巷の説明では省略されていますが、忘れててはまったので私の場合は注意が必要です。
$ sudo vi /etc/sysconfig/iptables
以下の行を適当なところに挿入します。
-A RH-Firewall-1-INPUT -p udp -m udp --dport 694 -j ACCEPT
$ sudo /etc/init.d/iptables restart $ sudo /sbin/iptables -L
以下の行が含まれることを確認。
ACCEPT udp -- anywhere anywhere udp dpt:ha-cluster
/etc/ha.d/ha.cf
cent1では以下のようにします。
use_logd yes keepalive 500ms deadtime 10 warntime 5 initdead 60 ucast eth0 192.168.122.22 auto_failback off #auto_failback on node cent1 node cent2 uuidfrom nodename
cent2ではucastの行を以下のようにします。
ucast eth0 192.168.122.21
当初uuidfrom nodename
の行を忘れてはまったので注意。この指定が無いと、/var/lib/heartbeat/hb_uuidをマシンのUUIDとして使うので、仮想イメージファイルをクローンして作ったためか同じ内容になってしまい、以下のようなエラーが延々とログに出ることになります。
heartbeat[14054]: 2009/11/12_18:17:32 WARN: nodename cent1 uuid changed to cent2 heartbeat[14054]: 2009/11/12_18:17:32 WARN: nodename cent2 uuid changed to cent1 heartbeat[14054]: 2009/11/12_18:17:32 WARN: nodename cent1 uuid changed to cent2
/etc/ha.d/haresources
プライマリのノードと仮想IPアドレスを設定します。ですのでcent1でもcent2でも同じ内容にします。
cent1 192.168.122.90
/etc/ha.d/authkeys
2台ともLAN内なので認証はcrcにしました。
auth 1 1 crc
$ sudo chmod 600 /etc/ha.d/authkeys
実験
cent1、cent2ともコマンドを実行する端末とは別に端末を起動しておいてtail -f /var/log/ha-log
を実行しておくと動きを見られてよいです。
まず、cent1でheartbeatを起動します。
cent1$ sudo /etc/init.d/heartbeat start
起動してしばらくすると、仮想IPアドレスが設定されます。ipコマンドで確認するなら以下のようにします。
cent1$ /sbin/ip addr show eth0 2: eth0:mtu 1500 qdisc pfifo_fast qlen 1000 link/ether 52:54:00:12:34:56 brd ff:ff:ff:ff:ff:ff inet 192.168.122.21/24 brd 192.168.122.255 scope global eth0 inet 192.168.122.90/24 brd 192.168.122.255 scope global secondary eth0:0 inet6 fe80::5054:ff:fe12:3456/64 scope link valid_lft forever preferred_lft forever
ifconfigで確認する場合は以下のようにします。
cent1$ /sbin/ifconfig -a eth0:0 eth0:0 Link encap:Ethernet HWaddr 52:54:00:12:34:56 inet addr:192.168.122.90 Bcast:192.168.122.255 Mask:255.255.255.0 UP BROADCAST RUNNING MULTICAST MTU:1500 Metric:1 Interrupt:10 Base address:0xc000
cent1だけ起動してcent2を起動しない場合はha.cfのinitdeadの設定値、この場合は60秒後に仮想IPアドレスが設定されました。
cent1を起動してすぐにcent2も起動した場合はcent1のログにLink cent2:eth0 up
と出力されてから13秒後に仮想IPアドレスが設定されました。ha.cfのdeadtimeが10秒という設定なので、これ+αということのようです。
次に、cent2でheartbeatを起動します。
cent2$ sudo /etc/init.d/heartbeat start
ログを見て起動が完了したことを確認したら、cent1でheartbeatを停止してみます。
cent1$ sudo /etc/init.d/heartbeat stop
ログを見て仮想IPが引き継がれた旨が表示されたらipまたはifconfigで確認してみると無事引き継がれていることを確認できました。