heartbeat主要由心跳检测和资源管理两大部分组成。系统正常工作时各服务器会向其他节点发送心跳信息并予以收集、分析,判断该节点的状态,从而认为该节点是否有效。当服务器长时间检测不到其他节点的心跳时,会认为对方节点失效。此时,服务器启动资源接管模块接管失效节点上的资源。

heatbeat支持主备模式和主主模式。

heartbeat版本:heartbeat v1,heartbeat v2,heartbeat v3

heartbeat v3在v2基础上进行了拆分,分为heartbeat、pacemaker、cluster-gule(集群黏合器)。heartbeat负责节点间通讯及传递信息,pacemaker(CRM)负责管理和配置集群。

heartbeat默认的配置目录为/etc/ha.d,该目录包含三个配置文件:

authkey:集群认证文件

ha.cf:集群基本配置文件

haresources:资源配置文件

服务器A:
主机名:master
操作系统:CentOS6.8 64位
eth0网卡地址:192.168.0.18
eth1网卡地址:172.16.254.18(测试脑裂)

服务器B:
主机名:slave
操作系统:CentOS6.8 64位
eth0网卡地址:192.168.0.28
eth1网卡地址:172.16.254.28

虚拟VIP:
VIP:192.168.0.38

三、设置主机名

master节点设置hostname

hostname master
vim /etc/sysconfig/network
编辑配置文件:
HOSTNAME=master
slave节点设置hostname

# hostname slave
# vim /etc/sysconfig/network
编辑配置文件:
HOSTNAME=slave

四、关闭防火墙和selinux(2台节点都要操作)

  关闭iptables

    # iptables -F
    # service iptables save
    # service iptables stop
			
 关闭selinux:

 # setenforce 0
 # sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

五、配置hosts文件(2台节点都操作)

# vim /etc/hosts
增加内容如下:
192.168.0.18 master
192.168.0.28 slave

六、安装epel扩展源 (2台都操作)

# yum install -y epel-release

七、安装heartbeat (2台都操作)

# yum install -y heartbeat* libnet nginx

八、主master节点配置

1、拷贝配置文件:

# cd /usr/share/doc/heartbeat-3.0.4/
# cp authkeys ha.cf haresources /etc/ha.d/
# cd /etc/ha.d
	
2、修改authkeys

# vim authkeys
	
更改或增加如下内容:
	
auth 3
3 md5 Hello!
	
然后修改其权限
	
# chmod 600 authkeys

3、编辑haresources文件

# vim haresources
	
加入下面一行:

master 192.168.0.38/24/eth0:0 nginx

说明:master为主节点hostname,192.168.0.38为vip,/24为掩码为24的网段,eth0:0为vip的设备名,nginx为heartbeat监控的服务,也是两台机器对外提供的核心服务。

4、编辑ha.cf

复制代码
	
# vim 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 eth1 172.16.254.28(必配)
auto_failback on
node master   (必配)
node slave        (必配)
ping 172.16.254.1
respawn hacluster /usr/lib64/heartbeat/ipfail

5、配置说明:

debugfile /var/log/ha-debug:该文件保存heartbeat的调试信息。
logfile /var/log/ha-log:heartbeat的日志文件。
keepalive 2:心跳的时间间隔,默认时间单位为秒s。
deadtime 30:超出该时间间隔未收到对方节点的心跳,则认为对方已经死亡。
warntime 10:超出该时间间隔未收到对方节点的心跳,则发出警告并记录到日志中。
initdead 60:在某系统上,系统启动或重启之后需要经过一段时间网络才能正常工作,该选项用于解决这种情况产生的时间间隔,取值至少为deadtime的2倍。
udpport 694:设置广播通信使用的端口,694为默认使用的端口号。
ucast eth1 172.16.254.28:设置对方机器心跳检测的网卡和IP。
auto_failback on:heartbeat的两台主机分别为主节点和从节点。主节点在正常情况下占用资源并运行所有的服务,遇到故障时把资源交给从节点由从节点运行服务。在该选项设为on的情况下,一旦主节点恢复运行,则自动获取资源并取代从节点,否则不取代从节点。
respawn heartbeat /usr/lib/heartbeat/ipfail:指定与heartbeat一同启动和关闭的进程,该进程被自动监视,遇到故障则重新启动。最常用的进程是ipfail,该进程用于检测和处理网络故障,需要配合ping语句指定的ping node来检测网络连接。如果你的系统是64bit,请注意该文件的路径。

九、把主节点上的三个配置文件拷贝到从节点

# cd /etc/ha.d
# scp authkeys ha.cf haresources slave:/etc/ha.d

十、从节点slave编辑ha.cf

# vim /etc/ha.d/ha.cf
	
只需要更改一个地方如下:
	
ucast eth1 172.16.254.28改为ucast eth1 172.16.254.18

十一、启动heartbeat服务

配置完毕后,先master启动,后slave启动。

# service heartbeat start

十二、检查测试

# ifconfig
	
看是否有接口 eth0:0

# ps aux | grep nginx
	
看是否有nginx进程