安装

基础环境:主服务器: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

文档更新时间: 2019-07-22 16:29   作者:子木