hnakamur’s blog

ものすごい勢いで忘れる私のために未整理でもいいからとりあえずメモ

2009-08-21

CentOSでheartbeatを使おうとしたがうまくいかず

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に登録されていました。

0 件のコメント:

ブログ アーカイブ