# vi /etc/ha.d/authkeys;#(Same on both DR servers);
--------------------------------------------------------------------------------
auth 1
1 sha1 46b61a7f417d395c712d9ecf30665aaf
--------------------------------------------------------------------------------
# chmod 600 /etc/ha.d//authkeys;
# vi /etc/init.d/startvip;#(Same on both DR servers);
--------------------------------------------------------------------------------
#!/bin/bash
VIP=192.168.57.200
case $1 in
start)
IP=`/sbin/ifconfig lo:0 | grep $VIP`
if [ ! -z "$IP" ] ; then
/sbin/ifconfig lo:0 down
fi
/sbin/ifconfig eth0:0 $VIP netmask 255.255.255.255 broadcast 192.168.57.255 up
/sbin/arping -q -c 1 -w 1 -I eth0 $VIP ; echo ""
;;
stop)
IP=`/sbin/ifconfig eth0:0 | grep $VIP`
if [ ! -z "$IP" ] ; then
/sbin/ifconfig eth0:0 down
fi
echo 0 > /proc/sys/net/ipv4/ip_forward
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
/sbin/ifconfig lo:0 $VIP netmask 255.255.255.255 broadcast 192.168.57.255 up
/sbin/route add -host $VIP dev lo:0
;;
status)
/sbin/ifconfig eth0:0
;;
*)
echo "Syntax incorrect. You need one of {start|stop|status}"
;;
esac
--------------------------------------------------------------------------------
chmod 755 /etc/init.d/startvip;
关于 apring 命令的说明:
/sbin/arping -q -c 1 -w 1 -I eth0 $VIP ; echo ""
如前所述,这行命令用于通知本地网络更新arp地址,因为在shell环境这个命令总是返回
大于0的结果,导致heartbeat误认为服务失败,所以我在此命令后跟了个echo命令以消除其
返回数值。请注意,使用 arping 命令不保证一定能够更新您的网络环境中的所有arp缓存
记录,在实用中请对照您的网络设备(路由器)的手册调整相关设置。
********************************************************************************
注意:在此案例中请不要使用Heartbeat资源所自带的IPAddr脚本来启动虚拟IP地址,因为
本案例设计架构所使用的本地 lo:0 含有与 eth0:0 相同的VIP地址,因此 IPAddr 脚本可
能会报错并会拒绝启动相关资源。
********************************************************************************
# vi /etc/ha.d/haresources;#(Same on both DR servers);
--------------------------------------------------------------------------------
centos6-ocfs2-1 startvip ldirectord
--------------------------------------------------------------------------------
Note: 这里不需要加入ipvsadm服务,因为现在ipvsadm服务改由ldirectord服务负责启动。
DR1# vi /etc/ha.d/ha.cf;#(on DR centos6-ocfs2-1);
--------------------------------------------------------------------------------
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
bcast eth0
ucast eth0 192.168.57.102
keepalive 2
auto_failback on
node centos6-ocfs2-1
node centos6-ocfs2-2
--------------------------------------------------------------------------------
Note: 这里的IP地址是对端node主机的IP地址。
DR2# vi /etc/ha.d/ha.cf;#(on DR centos6-ocfs2-2);
--------------------------------------------------------------------------------
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
bcast eth0
ucast eth0 192.168.57.101
keepalive 2
auto_failback on
node centos6-ocfs2-1
node centos6-ocfs2-2
--------------------------------------------------------------------------------
Note: 这里的IP地址是对端node主机的IP地址。
设置并启动服务:
# chkconfig --list ipvsadm;
# chkconfig ipvsadm off;
# chkconfig ldirectord off;
# chkconfig heartbeat on;
注意:在这里,Centos 只需要启动heartbeat,然后由heartbeat负责启动ldirectord服务,
再由ldirectord服务启动并管理ipvsadm服务。
最后,分别在 RS1 和 RS2 主机启动 heartbeat 服务:
RS1# service heartbeat start;
RS2# service heartbeat start;
观察启动结果:
# service ldirectord status;
# service ipvsadm status;
# ip addr show;