heartbeat 是 Linux-HA 工程的一个组成部分,它实现了一个高可用集群系统.简单的来说,通过heartbeat,可以将资源、服务等从一台已故障的服务器,快速转移到另外一台正常运转的服务器上面.

  heartbeat跟另一款轻量级高可用开源软件keepalived有很多共同之处,在实际应用中我们应该对比两款软件的差异根据自己的需求选定最合适的软件.

  keepalived通过VRRP协议进行通信和选举

  heartbeat通过心跳进行通信和选举

  keepalived配置、使用简单,相对来说功能也比较简单

  heartbeat配置使用相对复杂但是功能强大,配套各种工具,适合做大型集群管理


 这里通过配置heartbeat实现对httpd的简单高可用

  环境:centos 6.4

         heartbeat3.0.4

   ha1  192.168.1.209

   ha2  192.168.1.208

   vip   192.168.1.253


首先配置ha1

  1. 修改主机名
    hostname ha1
    vi /etc/sysconfig/network

  2. 2.时间同步
    yum -y install ntp
    service ntpd start
    netpdate 192.168.1.208

  3. 建立双机互信
    ssh-keygen -t rsa -f ~/.ssh/id_rsa -P ''
    ssh-copy-id -i .ssh/id_rsa.pub root@192.168.1.209

  4. 安装heartbeat

      yum -y install heartbeat*

  5. 给heartbeat提供配置文件
     cp -p /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources} /etc/ha.d/
     vi authkeys
     最后一行添加
     auth 1
     a md5 ff49e8aba5208b0130ade78042877661(随便一个文件的md5值)
 
     vi/etc/ha.d/ha.cf
     debugfile /var/log/ha-debug
     logfile /var/log/ha-log
     keepalive 2
    deadtime 30
    warntime 10
    initdead 120
    udpport 694
    bcast eth0
    auto_failback on
    node ha1
    node ha2
    ping 192.168.1.1

   vi /etc/ha.d/haresources
   ha1 IPaddr::192.168.1.253/24/eth0 httpd


  6.安装httpd

  yum -y install httpd

  给httpd提供一个有标示的默认文档

  echo "hello h1"  >> /var/www/html/index.html

  关掉httpd的自启动

  wKioL1Y80NvD8CuzAACDpeCP7bQ242.jpg


配置ha2的的步骤同ha1


配置完成启动heartbeat

service heartbeat start

ssh ha2 "service heartbeat start"

查看vip是否在主节点ha1上面

wKioL1Y80gyCxjQ_AAH5VMTPmcU710.jpg


测试集群能否正常被访问

wKioL1Y80n3QUOzRAABKIeqP3tg518.jpg

把ha1关机到ha2查看集群ip是否被接管

wKioL1Y81hzDupRPAAH3jwilRhI802.jpg


测试网站能否正常访问

wKioL1Y81lWAn6DIAABYZWTeYFA382.jpg


heartbeat配置选项解析

/debugfile /var/log/ha-debug heartbeat的调试日志存放位置
logfile /var/log/ha-log heartbeat的日志存放位置
logfacility locall 在syslog服务中配置通过locall设备接受日志
keepalive 2 指定心跳时间为2秒
deadtime 30 指定若备用节点在30秒内没收到主节点的心跳信号,则接管主节点的资源
warntime 10 指定心跳延迟的时间为10秒.当10秒内备份节点不能接收主节点的心跳信号时,就写入警告日志
initdead 120 指定在heartbeat首次运行后,需要在12秒之后才启动主服务器的任何资源.该选项用于解决这种情况产生的时间间隔.取值至少为deadtime的两倍,单机启动时会遇到vip绑定很慢
#bacat eth1 指明心跳私用以太网广播方式在eth1接口上进行广播,如使用两个世纪网络来传送心跳则#bcast eth0 eth1
auto_failback on 定义当主节点恢复后,是否将服务自动切回
node ha1 节点名
node ha2
crm no 是否开启Cluster Resouree Manager(集群资源管理)功能