准备
两台虚拟机
10.254.124.227
10.254.124.228
虚拟 IP
10.254.124.22
关闭防火墙
service iptables stop
配置网络和主机名
分别在两台服务器上的 /etc/hosts 加上
10.254.124.227 Master
10.254.124.228 Slave
修改主机名
vim /etc/sysconfig/network
HOSTNAME=Master
10.254.124.228 上的把 Master 改成 Slave 即可,重启服务器,并查看主机名。
[root@Master /]# hostname
Master
安装和配置
yum install -y heartbeat* libnet
Master 上配置
cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/
cd /etc/ha.d/
配置 authkeys
auth 2
#1 crc
2 sha1 HI!
#3 md5 Hello!
改变文件权限
chmod 600 authkeys
配置 ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 1
deadtime 15
warntime 5
initdead 60
udpport 694
baud 19200
bcast eth1
ucast eth1 10.254.124.228
auto_failback on
# 首先出现的是 node 是主节点,之后的便是从节点
node Master
node Slave
#ping 192.168.1.1
respawn hacluster /usr/lib64/heartbeat/ipfail
apiauth ipfail gid=haclient uid=hacluster
配置 haresources
# 10.254.124.22 为虚拟 IP,nginx 为 /etc/init.d 里的启动脚本或是 ./resource.d 里的脚本,前提是服务器要安装 nginx
Master 10.254.124.22/24/eth1 nginx
Slave 机子上也是如此,唯一不同的是 ha.cf 里的 ucast eth1 10.254.124.228 改成 ucast eth1 10.254.124.227。
启动
service heartbeat start
过一会儿,查看虚拟 ip 已经出现在 Master 服务器上了
ip addr
……
inet 10.254.124.22/24 brd 10.254.125.255 scope global eth1
……
注意点
1、ha.cf 里 auto_failback 如果为 off 的话,那么 Master 失效后,Slave 接替虚拟 ip,在 Master 重新生效后虚拟 ip 请求不会转到 Master 上
2、如果启动 heartbeat 后,发现没生效,查看日志 /var/log/ha-log 里有以下报错,说明在此网段内也有 heartbeat 在运行,解决办法只需把 ha.cf 里的 udpport 端口改成其他的端口即可
Jul 10 11:07:46 Master heartbeat: [26958]: WARN: Invalid authentication type [1] in message!
Jul 10 11:07:46 Master heartbeat: [26958]: WARN: string2msg_ll: node [test-121] failed authentication
Jul 10 11:07:46 Master heartbeat: [26958]: WARN: Invalid authentication type [1] in message!
Jul 10 11:07:46 Master heartbeat: [26958]: WARN: string2msg_ll: node [test-122] failed authentication