heartbeatの設定

昨日に引き続きheartbeatの設定。やりたいことは、

ってこと。昨日の設定では/etc/ha.d/ha.cfでCRMをonにしたんだけれども、CRMを使った設定の例がどうしてもうまくいかなくて、挫折。CRMを使わない方法でやりました。

目的

IP:1.2.3.4(仮想IPアドレス)をクラスタで実現する。クラスタのメンバは2つ。

  • marron(1.2.3.10)
  • verde(1.2.3.11)

/etc/ha.d/ha.cfを編集

こんな内容。

logfacility     daemon  # Log to syslog as facility "daemon"
keepalive       1       # 1秒毎にお互いのノードの生死を確認
deadtime        10      # 10秒死んでたら切り替える
warntime        5
initdead        120
udpport         694
ping            1.2.100.1 # これよくわかんないな。デフォルトGWを書くみたい。
bcast           eth0  #生死の確認に使うインタフェイス
auto_failback   on
node            marron  # クラスタのメンバ
node            verde   # クラスタのメンバ
use_logd        yes

/etc/ha.d/haresourceを編集

デフォルトで有効にする機器と、仮想IPアドレスを記述します。

marron 1.2.3.4

heartbeatを再起動

設定が済んだら、両方の機器でheartbeatを再起動

# /etc/init.d/heartbeat restart

ちょっと確認

marronでifconfigを実行するとちゃんと仮想インタフェイスが追加されています。

eth0:0    Link encap:Ethernet  HWaddr XX:XX:XX:90:29:63
          inet addr:1.2.3.4  Bcast:1.2.3.127  Mask:255.255.255.0
          UP BROADCAST RUNNING MULTICAST  MTU:1514  Metric:1

別の機器からpingを打ちながらクラスタを構成している機器のLANケーブルを抜き差ししてみると、10秒のタイムアウトの後、ちゃんとクラスタの別ノードに仮想IPが引き継がれます。

今回クラスタを構成した目的は、本来ならばデータベースの同期とか、ウェブアプリケーションの同期だとかバックエンドのややこしい話があるんでしょうが、今回はパケットをリレーするだけが目的なのでこれで終了。