2009-08-27追記: その後keepalivedに乗り換えました
CentOS-Testingからkeepalivedを入れてVRRPの実験に書きました。
選定理由
手元の本ではkeepalivedを使っていたので当初そちらにしようかと思いましたが、yum searchでは見つかりませんでした。調べてみると同等の機能としてheartbeatというパッケージがあるらしい。23. High Availability LVS: Failover protectionには以下のような説明がありました。
This is handled by having a redundant director available. Director failover is handled in the Ultra Monkey Project by heartbeat. Other code used for failover is vrrpd in keepalived.
Ultra Monkey Projectもyum searchでは見つからず、また調べてみるとheartbeat-ldirectordというパッケージで同等の機能が使えるっぽい。ということでこちらを試すことにしました。
セットアップ
以下のサイトを参考にしました。
$ sudo yum install ipvsadm heartbeat heartbeat-ldirectord
haclusterユーザが既に存在するという旨のエラーが出てheartbeatがインストールされないので、再度行う。
$ sudo yum install heartbeat
設定ファイル作成
/etc/ha.d/ha.cf
$ cd /etc/ha.d $ sudo cp /usr/share/doc/heartbeat-2.1.3/ha.cf . $ sudo vi ha.cf
変更内容
--- ha.cf 2009/08/21 10:57:54 1.1 +++ ha.cf 2009/08/21 11:42:22 @@ -49,7 +49,7 @@ # # keepalive: how long between heartbeats? # -#keepalive 2 +keepalive 2 # # deadtime: how long-to-declare-host-dead? # @@ -57,12 +57,12 @@ # split-brain (or cluster partition) problem. # See the FAQ for how to use warntime to tune deadtime. # -#deadtime 30 +deadtime 30 # # warntime: how long before issuing "late heartbeat" warning? # See the FAQ for how to use warntime to tune deadtime. # -#warntime 10 +warntime 10 # # # Very first dead time (initdead) @@ -72,12 +72,12 @@ # we have a separate dead time for when things first come up. # It should be at least twice the normal dead time. # -#initdead 120 +initdead 120 # # # What UDP port to use for bcast/ucast communication? # -#udpport 694 +udpport 694 # # Baud rate for serial ports... # @@ -92,7 +92,7 @@ # # What interfaces to broadcast heartbeats over? # -#bcast eth0 # Linux +bcast eth0 # Linux #bcast eth1 eth2 # Linux #bcast le0 # Solaris #bcast le1 le2 # Solaris @@ -212,8 +212,8 @@ # # Tell what machines are in the cluster # node nodename ... -- must match uname -n -#node ken3 -#node kathy +node vm10 +#node vm11 # # Less common options... # @@ -255,6 +255,7 @@ # #respawn userid /path/name/to/run #respawn hacluster /usr/lib/heartbeat/ipfail +respawn root /usr/lib/heartbeat/pingd -m 100 -d 5s -a default_ping_set # # Access control for client api # default is no access @@ -324,7 +325,7 @@ # more infomartion can be fould in http://www.linux-ha.org/ha_2ecf_2fUseLogdDirective # Setting use_logd to "yes" is recommended # -# use_logd yes/no +use_logd yes # # the interval we reconnect to logging daemon if the previous connection failed # default: 60 seconds @@ -342,3 +343,5 @@ # will be compressed, the default is 2 (KB) #compression_threshold 2 +# Enable cluster resource manager +crm yes
なお、ja/pingd_ja: Linux HAによるとpingdはipfailにとって代わるコマンドらしい。
/etc/ha.d/logd.cf
$ sudo cp /usr/share/doc/heartbeat-2.1.3/logd.cf . $ sudo vi logd.cf
変更内容
--- logd.cf 2009/08/21 11:45:09 1.1 +++ logd.cf 2009/08/21 11:45:46 @@ -1,18 +1,18 @@ # File to write debug messages to # Default: /var/log/ha-debug -#debugfile /var/log/ha-debug +debugfile /var/log/ha-debug # # # File to write other messages to # Default: /var/log/ha-log -#logfile /var/log/ha-log +logfile /var/log/ha-log # # # Facility to use for syslog()/logger # Default: daemon -#logfacility daemon +logfacility none # Entity to be shown at beginning of a message
/etc/ha.d/authkeys
$ sudo cp /usr/share/doc/heartbeat-2.1.3/authkeys . $ sudo chmod 600 /etc/ha.d/authkeys $ sudo vi authkeys
変更内容
--- authkeys 2009/08/21 11:46:47 1.1 +++ authkeys 2009/08/21 11:47:40 @@ -20,7 +20,7 @@ # crc adds no security, except from packet corruption. # Use only on physically secure networks. # -#auth 1 -#1 crc +auth 1 +1 crc #2 sha1 HI! #3 md5 Hello!
VMクローン
インストールや設定ファイルの変更をvm10と同様にvm11でも行うのは手間なので、vm10の1台でセットアップして、KVMのゲストOSイメージをコピーの手順でvm11を作り直しました。こっちのほうが楽です。
動作実験するも問題発生
サービス開始。2台で実行。
$ sudo /etc/init.d/heartbeat start
モニターしてみる。1台で実行。しかしエラー発生。
$ /usr/sbin/crm_mon -i 3 Defaulting to one-shot mode You need to have curses available at compile time to enable console mode Critical: Unable to connect to the CIB
調べてみると既知バグで0003226: heartbeat crm_mon not compiled with ncurses - CentOS Bug Trackerに登録されていました。