heartbeat与高可用

来源:互联网 发布:linux换行 编辑:程序博客网 时间:2024/06/10 00:16

Heartbeat是Linux-HA项目中的一个组件,也是目前开源HA项目中最成功的一个例子,它提供了所有 HA 软件所需要的基本功能,比如心跳检测和资源接管、监测群集中的系统服务、在群集中的节点间转移共享 IP 地址的所有者等。

heartbeat (Linux-HA)的工作原理:heartbeat最核心的包括两个部分,心跳监测部分和资源接管部分,心跳监测可以通过网络链路和串口进行,而且支持冗 余链路,它们之间相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未受到对方发送的报文,那么就认为对方失效,这时需启动资源接管模块来接管运 行在对方主机上的资源或者服务。
实验环境:

server2:ip(172.6.6.20),heartbeat,apache
server3: ip(172.6.6.30),heartbeat,apache

双ip外部主机一台:ip(192.169.1.6,172.6.6.6),用来进行结果测试

1. 安装heartbeat软件(server2,server3都要安装):

这里写图片描述
这里写图片描述

2. 配置

Heartbeat的主要配置文件有ha.cf、haresources、authkeys,在Heartbeat安装后,默认并没有这三个文件,可以拷贝示例配置文件然后根据实际情况进行修改:

[root@rhel6-vm2 heartbeat]# cd /usr/share/doc/heartbeat-3.0.4/[root@rhel6-vm2 heartbeat-3.0.4]# lsapphbd.cf  authkeys  AUTHORS  ChangeLog  COPYING  COPYING.LGPL  ha.cf  haresources  README[root@rhel6-vm2 heartbeat-3.0.4]# cp ha.cf haresources authkeys /etc/ha.d

2.1 修改主配置文件(vim /etc/ha.d/ha.cf)
以下过滤结果为需要修改的条目:
[root@rhel6-vm3 ha.d]# sed -n ‘/#/!p’ ha.cf

debugfile /var/log/ha-debuglogfile /var/log/ha-loglogfacility local0keepalive 2deadtime 30warntime 10initdead 120udpport 694auto_failback onnode rhel6-vm2node rhel6-vm3#node后接名称必须与uname -n结果一致ping 172.6.6.6respawn hacluster /usr/lib64/heartbeat/ipfailapiauth ipfail gid=haclient uid=hacluster

2.2 修改认证文件(vim /etc/ha.d/authkeys)

 authkeys文件用于设定heartbeat的认证方式,共有三种可用的认证方式:crc、md5和sha1,三种认证方式的安全性依次提高,但是占用的系统资源也依次增加。如果heartbeat集群运行在安全的网络上,可以使用crc方式,如果HA每个节点的硬件配置很高,建议使用sha1,这种认证方式安全级别最高,如果是处于网络安全和系统资源之间,可以使用md5认证方式。这里我们使用crc认证方式,配置如下: auth 1 1 crc

修改完文件之后需要改权限:chmod 600 authkeys

2.3 修改资源文件(vim /etc/ha.d/haresources)

#       virtual in any sense of the word.####################################需配置项如下rhel6-vm2 IPaddr::172.6.6.99/24/eth2  httpd

三个配置文件修改完之后需要在两台主机上进行同步,并且修改具体的广播网卡和ip,与实际主机的配置对应

2.4 启动heartbeat在外部主机进行测试(两台主机都要启动)

 /etc/init.d/heartbeat start

然后通过 ap addr命令查看主节点的网络配置,可以看到,主节点已经自动绑定了集群的IP地址,在HA集群之外的主机上通过ping命令检测集群IP地址172.6.6.99是否可达,如果可达则配置成功

正常关闭和重启主节点的heartbeat来进行测试看集群IP是否切换以及apache应用是否切换
这里写图片描述

将节点server3上的heartbeat关闭,然后在外部主机通过curl命令来查看apache应用的返回结果

这里写图片描述

结果:

首先在两个节点上都启动了hearbeat服务,heartbeat服务会自动拉起我们配置的httpd服务,所以不要手动干预httpd服务的停启。在外部主机上通过curl命令来对节点的虚拟ip进行测试,可以看到一开始返回的结果是作为主节点的server3上的页面。

然后我们停掉了主节点server3上的heartbeat服务,在外部主机继续通过curl命令抓取虚拟ip172.6.6.99的数据,发现结果返回的是从节点server2上的内容。

最后我们将主节点Server3上的heartbeat服务重新启动,再通过curl 172.6.6.99抓取结果拿到的返回结果又是主节点server3的了

至此,测试成功!
这里写图片描述