share facebook facebook2 twitter menu hatena pocket slack

2014.11.20 THU

UbuntuでPacemaker + Heartbeatを使う

比嘉 啓太

WRITTEN BY比嘉 啓太

cloudpack比嘉です。

Pacemaker + Heartbeat

Pacemaker インストール準備

Active / Standby 両方で実施

/etc/apt/sources.list へリポジトリ追加し、インストール

deb http://ppa.launchpad.net/ubuntu-ha/ppa/ubuntu karmic main
deb-src http://ppa.launchpad.net/ubuntu-ha/ppa/ubuntu karmic main
# atp-get update
# apt-get install pacemaker heartbeat fence-agents

Heartbeat の設定

Active / Standby 両方で実施

/etc/ha.d/ha.cf を作成

pacemaker on
logfile /var/log/ha-log
keepalive 3
deadtime 30
deadping 40
warntime 10
initdead 60
udpport 694
node HOST_A
node HOST_B
ucast eth0 HOST_A_PrivateIP
ucast eth0 HOST_B_PrivateIP
uuidfrom nodename

/etc/ha.d/authkeys を作成

auth 1
1 crc
# chmod 600 /etc/ha.d/authkeys

Heartbeat の lrmd を Pacemaker に変更

# mv /usr/lib/heartbeat/lrmd /usr/lib/heartbeat/lrmd.org
# ln -sf /usr/lib/pacemaker/lrmd /usr/lib/heartbeat/lrmd

lrmdの変更をしたらcrm_monでのステータスがONLINEになる
(変更していなかったらSSH接続が1〜2分程度で切れていました)

Active サーバで実施

*どちらか一方のサーバでやればOKです

crmコマンドで設定をする

# crm configure property stonith-enabled="false"
(STONITHの停止)

# crm configure property no-quorum-policy="ignore"
(Quorumの設定をignoreへ変更)

ついでに Zabbix の設定もする

# crm configure primitive zabbix-server lsb:zabbix-server 
 op start interval="0s" timeout="60s" on-fail="restart" 
 op monitor interval="30s" timeout="60s" on-fail="restart" 
 op stop interval="0s" timeout="60s" on-fail="fence"

Pacemaker, Heartbeat の起動

# /etc/init.d/heartbeat start
# /etc/init.d/pacemaker start

crm_monコマンドで確認

# crm_mon -i1
Last updated: Thu Nov 13 08:37:28 2014
Last change: Tue Nov 11 11:28:17 2014 via crm_resource on active
Stack: heartbeat
Current DC: standby (xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx) - partition with quorum
Version: 1.1.10-42f2063
2 Nodes configured
1 Resources configured


Online: [ active standby ]

zabbix-server   (lsb:zabbix-server):    Started active

activeサーバでZabbixServerが起動中であることがわかる

テスト

注意: ZabbixServerのDBをRDSにしているのでDBの切替とか特に設定してません

activeサーバでZabbixServerが起動してるのがわかったのでサーバを停止する
この後StandbyサーバでZabbixServerが起動すればOK

  • activeサーバ停止前の状態
root@active:~# /etc/init.d/zabbix-server status
 * zabbix_server is running

root@standby:~# /etc/init.d/zabbix-server status
 * zabbix_server is not running

実際にサーバを停止してみる

Last updated: Thu Nov 13 08:46:31 2014
Last change: Tue Nov 11 11:28:17 2014 via crm_resource on active
Stack: heartbeat
Current DC: standby  (xxxxxxxx-xxx-xxxx-xxxx-xxxxxxxxxxxx)  - partition with quorum
Version: 1.1.10-42f2063
2 Nodes configured
1 Resources configured


Online: [ standby ]
OFFLINE: [ active ]

zabbix-server   (lsb:zabbix-server):    Started standby

standbyサーバでZabbixServerが起動していることがわかる

  • activeサーバ停止後の状態
root@standby:~# /etc/init.d/zabbix-server status
 * zabbix_server is running

activeサーバを起動し、standbyサーバでZabbixServerが停止するのを確認する

Last updated: Thu Nov 13 10:21:23 2014
Last change: Tue Nov 11 11:28:17 2014 via crm_resource on active
Stack: heartbeat
Current DC: standby (32f23505-7a3b-e54c-9310-b26f6b13bece) - partition with quorum
Version: 1.1.10-42f2063
2 Nodes configured
1 Resources configured


Online: [ active standby ]

zabbix-server   (lsb:zabbix-server):    Started active

ZabbixServerがactiveに切り替わっていることを確認

  • activeサーバ起動後の状態
root@active:~# /etc/init.d/zabbix-server status
 * zabbix_server is running

root@standby:~# /etc/init.d/zabbix-server status
 * zabbix_server is not running

これで自動的にフェイルバックまで実施されるようになる。
フェイルバックしない時はcrmで以下の設定を追加する

  • どちらかのサーバで実行

元記事はこちらです。
UbuntuでPacemaker + Heartbeatを使う

比嘉 啓太

比嘉 啓太

沖縄出身エンジニア。サーバ構築等のインフラを担当しています。最近はWindowsとUbuntuをさわっていることが多いです。