安装
基础环境:主服务器:test11-192.168.37.11;从服务器:test12-192.168.37.12
系统版本:centos6.x
注:heartbeat不提供centos7的yum安装包,如果需要使用,推荐在centos6.x下安装使用
在主从服务器上添加hosts:
vim /etc/hosts
192.168.37.11 Master.HA
192.168.37.12 Slave.HA
配置主、从两台服务ssh互信,如下:
test11:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
ssh-copy-id -i .ssh/id_rsa.pub root@Slave.HA
test12:
ssh-keygen -t rsa -P "" -f ~/.ssh/id_rsa
ssh-copy-id -i .ssh/id_rsa.pub root@Master.HA
直接yump安装:yum install -y epel-release,heartbeat,libnet
配置:
cp /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
去掉下面注释
vim /etc/ha.d/authkeys
auth 3
3 md5 Hello!
修改权限为600,不然heartbeat无法启动:chmod 600 /etc/ha.d/authkeys
修改/etc/ha.d/haresource,在后面追加(nginx为监测那个服务,如果是Apache的,更改为:httpd):Master.HA IPaddr::192.168.139.10/24/eth0:0 nginx
修改/etc/ha.d/ha.cf:
debugfile /var/log/ha-debug #调试日志
logfile /var/log/ha-log #日志文件,和上面的调试记录的信息类似
logfacility local0 #日志的类型,级别
keepalive 2 #单位是秒,2s探测一次
deadtime 30 #如果30s没有响应,则认为死亡
warntime 10 #10s内没有响应,则警告一次
initdead 60 #服务初始化时间
udpport 694 #ha使用的端口
ucast eth0 192.168.37.12 #组播地址,通过eth0接口来探测从主机是否正常
auto_failback on #如果主恢复正常,是否回切
node Master.HA #主机节点
node Slave.HA #从节点
ping 192.168.37.1 #仲裁地址,来判断主从是否正常,一般会选择网关
respawn hacluster /usr/lib64/heartbeat/ipfail
#以hacluster的身份来执行后面的脚本,respawn是脚本的执行方式,这个脚本主要用来判断网络是否正常
复制上面的3个配置文件到从设备对应的/etc/ha.d目录下scp /etc/ha.d/{authkeys,ha.cf,haresources} 192.168.37.12:/etc/ha.d/
从设备上的配置文件,只需要修改/etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 30
warntime 10
initdead 60
udpport 694
ucast eth0 192.168.37.11 #这里填写主服务器的ip,和主服务器上的配置正好相反
auto_failback on
node Master.HA
node Slave.HA
ping 192.168.139.2
respawn hacluster /usr/lib64/heartbeat/ipfail
启动服务:启动主,再启动从。启动主服务时,虚拟ip要过一会才可以看到。
报错:
启动过程中如果出现这人错误的ERROR: Client child command [/usr/lib/heartbeat/ipfail] is not executable
解决:把/etc/ha.d/ha.cf下的
respawn hacluster /usr/lib/heartbeat/ipfail
更改为
respawn hacluster /usr/lib64/heartbeat/ipfail
测试:
在主从上分别修改两个index页面的内容,以作区分,这里公供测试
a、echo Master… > /usr/share/nginx/html/index.html
b、echo Slave… >/usr/share/nginx/html/index.html
初次在浏览器中输入:192.168.37.10,看到的是Master
主设备停掉heartbeat,或关机,看到的是Slave
主设备重启hearbeat或重新开机,看到的是Master