一、Heartbeat是什么?

       Heartbeat是Linux-HA开源项目发布的高可靠应用环境集群服务的核心软件。从1998年创建以来到现在, 历经了V1、V2、V3等多个版本,在全球开源HA领域具有举足轻重的知名度, 应用日益广泛, 并且得到了众多主流Linux操作系统厂商的支持。在Linux-HA中heartbeat负责节点健康信息检测、可靠的节点间通讯和集群管理等工作。

      早期,heartbeat主要被设计用来配置双机热备功能的系统软件。系统由两台服务器构成,一台为工作服务器,另一台为备份机。该软件通过心跳检测协议在两台服务器间通讯,检测系统的健康状况。当工作服务器down机时,软件会自动检测到,并将原来工作机上的相关服务转移到备份机上,从而对外达到服务不间断的能力。

     随着高可用系统技术的不断发展,以及Linux下对高可靠应用机器软件的需求,软件创始人Alan Robertson联合一些其它社区技术人员重新设计了软件架构,成功的扩展了原有软件的功能和结构,使它能够不断满足用户新的需求。新增加的功能中包括提供多于两个节点集群的支持,系统应用的健康检测,网络连接的健康检测,STONITH设备的支持等功能,还提供了一组集群管理工具。可以说,Heartbeat的产生和发展是一个典型的Open Source软件的案例。该软件所应用的体系架构OCF(Open Cluster Framework)就是开源社区合作的结晶,并努力使其成为一个非排他的国际标准。

    但是随着2008年corosync的推出,另外貌似在支持的监控的节点数上heartbeat最多好像是16个,而corosync能多达100多个(关于这里所说的node数没有去查询对不对不清楚),总之短短四五年的时间里,corosync逐渐取代了heartbeat在HA集群中的地位成为未来的趋势。

二、关于Heartbeat的crm配置模式

       heartbeat v1: haresources

       heartbeat v2: crm

       heartbeat v3:(heartbeat, Cluster-glue, pacemaker)

三、用heartbeat实现一个web高可用的测试实例

   1、准备工作:

       1.1、同步各node的时间,既然测试我们就简单的找个时间服务器,每间隔15分钟同步一次时间;

           */15 * * * * /usr/sbin/ntpdate 192.168.1.38 &> /dev/null

       1.2、建立双机互信,实现互信登陆;

       1.3、规划资源;

           webip:192.168.1.100        webserver:nginx

   2、安装heartbeat:

       # sudo apt-get install heartbeat;

       查看版本

       # cat /usr/share/heartbeat/ha_config

       最后一行:

       # Version number of package

       # VERSION="3.0.5"

   3、配置集群服务:

       3.1、ha读取的配置是/etc/ha.d/,所以我们将/usr/share/doc/heartbeat/ 的配置示例模版拷贝过来编辑

           # cd /usr/share/doc/heartbeat/

           # sudo cp -p authkeys ha.cf.gz haresources.gz /etc/ha.d/

       3.2、文件说明

           authkeys           定义加密方式 (保持600或400的权限)

           ha.cf                  主配置文件

           haresources     定义资源

       3.3、配置authkeys

           # openssl rand -hex 8 >> authkeys

           # sudo vim authkeys  调整加密方式

           # sudo chmod -R 600 authkeys

       3.4、简单编辑主配置文件

           # sudo gzip -d ha.cf.gz

           # sudo vim ha.cf

           # debugfile /var/log/ha-debug          调整日志存放位置

           # mcast eth0 255.3.30.4 694 1 0        设置组播范围及端口地址等

           # auto_failback on                     主节点故障修复上线后,资源是否自动切换到主节点

           # node    node-s1                      设置集群的工作节点

           # node    node-s2

           # ping    192.168.1.38                由于是偶数个节点,无法取得合法票数故需要引入ping机制保证集群能做出正确的决策保证那个节点是否存活                                                                        

           # compression                         bz2开启日志压缩

           # compression_threshold 2

       3.5、 配置资源  

           # sudo gzip -d haresources.gz

           # sudo vim haresources

           # 活动节点(主)      VIP                 服务资源

           # node-s1      192.168.1.100/24/eth0  nginx

       3.6、复制配置文件到另一节点主机上去

           # sudo scp -p authkeys ha.cf haresources name@node-s2:/etc/ha.d/

四、启动heartbeat,并测试最终效果

   # sudo service heartbeat start

   # cat /var/log/ha-log    查看日志

   启动的时候尽量在一节点上启动自己或另一个节点,关闭的时候先关闭P节点上的服务再关闭A节点上的heartbeat服务

   查看效果:

   服务在node-s1上运行正常,我尝试将node-s1待机或停止heartbeat服务,运行standby或heartbeat stop,结果如下图:

   测试结果一切正常,资源能按预期自动转移........