一 介绍

Heartbeat是Linux-HA项目中的一个组件,Linux-HA的全称是High-Availability Linux,这个开源项目的目标是:通过社区开发者的共同努力,提供一个增强linux可靠性(reliability)、可用性 (availability)和可服务性(serviceability)(RAS)的群集解决方案.
Heartbeat提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等, 和keepalived服务一样,heartbeat高可用是服务器级别的,不是服务器级别的,如果主上面的apache,mysqld服务出现问题,是不会切换的,只有服务器宕机,heartbeat服务本身故障或者heartbeat主备之间的连接线路出现问题才会发生切换。所以如果服务宕机了,就需要手动把heartbeat停掉。

二 安装和配置

2.1 环境说明

准备两台liunx主机,在各自的/etc/hosts/里面添加两行内容
192.168.141.131  master(主机名)
192.168.141.132  slave   (主机名)
每个服务器上面有两块网卡,其中eth1作为两台机器间的心跳线,eth0用作普通的通信用(用一块网卡也可以做实验)
把两台主机的iptables 和selinux关闭,然后两个服务器安装nginx服务,让nginx具有高可用

2.2 安装

安装软件包  yum install -y heartbeat,在安装这个软件包之前需要先安装个epel的扩展源
wget www.lishiming.net/data/attachment/forum/epel-release-6-8_32.noarch.rpm

然后再 yum install heartbeat 和yum install libnet -y  (依赖关系)

2.3 更改配置文件(主)

拷贝配置文件

cd /usr/share/doc/heartbeat-3.0.4/
cp authkeys ha.cf haresources /etc/ha.d/

编辑 authkeys

auth 3  (用第三种方式认证)
#1 crc
#2 sha1 HI!
3 md5 Hello!  (加密)
更改权限
chmod 600 authkeys  (是当前用户可以执行)

编辑  haresources这个配置文件

master 192.168.141.110/24/eth0:0 nginx

说明:master 是指当前主机的主机名  这个ip地址是自定义的如果在实际环境中,这个一般是公网ip地址,后面可以添加别的服务,例如:mysql apache等

编辑ha.cf

debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility     local0
keepalive 2    //多长时间探测一次
deadtime 30   //   如果30秒ping不通了,就认为死掉了

warntime 10    #10秒ping不通会发出警告

initdead 60    #防止对方服务器重启预留一段时间

udpport 694   #心跳线通讯端口

ucast eth1 192.168.141.198(slave的主机地址)
auto_failback on
node    master     #你的主服务器的主机名(不能写错)
node    slave       #从的服务器的主机名
ping 192.168.141.1(仲裁地址,判断谁死谁活)
respawn hacluster /usr/lib64 /heartbeat/ipfail(检测网络的连通性)如果系统是32位则不用加这个64

2.4 更改配置文件(从)

把三个文件拷贝到从上面
scp authkeys haresources ha.cf 192.168.1.2:/etc/ha.d/
只更改ha.cf这个配置文件
ucast eth0 192.168.141.131 (主服务器的ip)

三安装NGINX

由于我们这里测试的是ngInx,所有两台机器需要安装nginx软件包,这里我们用yum 安装
yum install nginx 安装完之后,在两台机器上做些设置
主上:echo "master1111111111111111" > /usr/share/nginx/html/index.html
从上:echo "slave22222222222222222" > /usr/share/nginx/html/index.html
这样有助于我们看的明白

四 启动和测试

先启动主的heartbeat服务,然后再启用从的,nginx服务不用手动启动,会跟随heartbeat 这个服务自己启动
最后,用ifconfig -a 或者ip add 查看,如果看到etho0:0 这个ip ,代表成功,
测试:把主的heartbeat服务停掉,或者在主上面加一条禁止ping的,iptables -A INPUT -p icmp -j DROP
看是否从的nginx服务会自动启动,如果可以自己启动,则代表成功,
注意:当主的heartbeat 服务停止时 ,它上面的nginx服务同样会停止,当主的heartbeat服务恢复启动时,从的hearbeat服务会自动停止,nginx服务也会停止。
也可以用浏览器去访问产生的虚拟ip
说明:heartbeat日志路径/var/log/ha-log