Keepalivedを使用したMemcachedデュアルマシンホットスペア

3337 ワード

1.ノードA
mkdir -p/etc/keepalived/
vi/etc/keepalived/keepalived.conf

global_defs
{
notification_email
{
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id HA_1
}

vrrp_instance VMH1 {
state MASTER
interface eth0
virtual_router_id 100
priority 120
smtp_alert
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.73.203
}
}

2.ノードB
mkdir -p/etc/keepalived/
vi/etc/keepalived/keepalived.conf

global_defs
{
notification_email
{
[email protected]
}
notification_email_from [email protected]
smtp_server 127.0.0.1
stmp_connect_timeout 30
router_id HA_2
}

vrrp_instance VMH1 {
state BACKUP
interface eth0
virtual_router_id 100
priority 150
smtp_alert
nopreempt
advert_int 1
authentication {
auth_type PASS
auth_pass 123456
}
virtual_ipaddress {
192.168.73.203
}
}

3.テスト
wiresharkパッケージツールをインストールします.
#yum install wireshark.wiresharkコマンドやグラフィックインタフェースは使用できません.しかし、パッケージの基本機能は提供されています.
#yum install wireshark-gnome.これで図形を使いやすくなります.
service keepalived restart
ログの表示
tail -f/var/log/messages
ip aでVIPが見えます
ノードAのservice keepalived stopの後、ノードBのログに表示されます.

un 20 01:25:38 localhost Keepalived_vrrp[1728]: VRRP_Instance(VMH1) Transition to MASTER STATE
Jun 20 01:25:39 localhost Keepalived_vrrp[1728]: VRRP_Instance(VMH1) Entering MASTER STATE
Jun 20 01:25:39 localhost Keepalived_vrrp[1728]: VRRP_Instance(VMH1) setting protocol VIPs.
Jun 20 01:25:39 localhost avahi-daemon[1760]: Registering new address record for 192.168.73.203 on eth0.IPv4.
Jun 20 01:25:39 localhost Keepalived_healthcheckers[1727]: Netlink reflector reports IP 192.168.73.203 added
Jun 20 01:25:39 localhost Keepalived_vrrp[1728]: VRRP_Instance(VMH1) Sending gratuitous ARPs on eth0 for 192.168.73.203
Jun 20 01:25:44 localhost Keepalived_vrrp[1728]: VRRP_Instance(VMH1) Sending gratuitous ARPs on eth0 for 192.168.73.203

pingで切り替えに成功したかどうかをテストできます.
[b]備考[/b]
1.nopreemptについて:
実際の生産環境では、masterが故障して停止した後、backupによって引き継がれ、このとき元のmasterが正常になったら、通常の場合、再び選挙され、主制御権を切り替えることは許されないので、このオプションがあります.このオプションはvrrp RFCドキュメントのpreempt_に対応します.modは、優先度の高いバックアップマシンに優先度の低いmasterのマスター権を再選挙させるかどうかを決定します.2つの値があり、1つはFALSEであり、1つはTRUEであり、デフォルトはTRUEであるため、nopreemptがある.
nopreemptノードの初期状態はBACKUP,keepalivedである必要がある.confのmanに説明があります
[quote]
# VRRP will normally preempt a lower priority
# machine when a higher priority machine comes
# online. "nopreempt"allows the lower priority
# machine to maintain the master role, even when
# a higher priority machine comes back online.
# NOTE: For this to work, the initial state of this
# entry must be BACKUP.
nopreempt
[/quote]
2.仮想マシンでの問題
仮想マシンではifdown eth 0という方法でテストすることはできません.私はテスト中にifdownに出会った後も、BackupでMasterのブロードキャストパッケージを受け取ることができます.仮想マシンではkill keepalivedプロセスでテストできます.
[b]ifdown eth 0は物理マシンでも同時にテストできない.[/b]
参照先:
http://blog.sina.com.cn/s/blog_5f190fff0101e9ht.html