Heartbeat安装与部署及测试

Heartbeat作用:提供故障转移及高可用服务,与keepalived有很多相同之处,也有区别

 

Hearbeat和keepalived区别:

Keepalived使用的vrrp协议方式,虚拟路由冗余协议 (Virtual Router Redundancy Protocol,简称VRRP);

Heartbeat是基于主机或网络的服务的高可用方式;

keepalived的目的是模拟路由器的双机

heartbeat的目的是用户service的双机

lvs的高可用建议用keepavlived

业务的高可用用heartbeat

 

 

参考官方文档:http://www.linux-ha.org/doc/users-guide/users-guide.html

http://www.linux-ha.org/wiki/Downloads  三个安装包在此

参考博客:http://blog.51cto.com/wangzhijian/1708694

 

工作原理:

通过修改heartbeat的配置文件,可以指定一台heartbeat服务器作为主服务器,另一台自动成为热备服务器。在热备服务器上面配置heartbeat守护程序来监听来自主服务器的心跳信息。如果在规定时间内,无法监听到心跳信息,那么就启动故障转移,取得主服务器上的相关资源的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。

 

heartbeat支持主主模式,以及两台服务器互为主备,一般故障切换时间在5~20s之间

 

heartbeat裂脑:

两台服务器在一定时间内,无法相互检测到对方心跳而各自启动故障转移功能,取得资源和服务的所有权,会导致同一个IP在两端同时启动服务,存在两个相同的VIP,造成冲突的严重问题

 

裂脑的原因:

心跳链路故障,导致无法正常通信

  开启了防火墙阻挡了心跳信息传输

  心跳网卡地址等配置不正确

  心跳方式,心跳广播冲突,软件bug

 

防止裂脑方案:

  同时使用串行电缆和以太网电缆连接,同时使用两条心跳线

  检测到裂脑时,强制关闭一个节点(需要特殊设备支持,如stonish和fence),相当于程

序上的备节点发现心跳故障,发送关机指令到主节点

  做好监控预警

  启用磁盘锁

  仲裁机制(确定让哪个节点接管服务)

 

IP地址接管和故障转移: heartbeat通过ip地址接管和arp广播进行故障转移

 

Heartbeat 2.1.4之后被拆分为三个子项目: cluster-glue、resource-agents、heartbeat 导致了

配置更加复杂

 

源码编译比较复杂:需要安装各种依赖,比较麻烦

 

安装方式建议采用yum安装的方式: 但是centos6.2后的epel源里没有了,centos6.2后

的系统,只能采取源码编译方式安装heartbeat

   

源码编译安装方式:

  必须安装:

yum install gcc gcc-c++ autoconf automake libtool glib2-devel libxml2-devel bzip2 bzip2-devel e2fsprogs-devel libxslt-devel libtool-ltdl-devel asciidoc

 

  1、安装cluster-glue :

      groupadd  haclient

useradd  -g haclient hacluster

     下载:  wget http://hg.linux-ha.org/glue/archive/0a7add1d9996.tar.bz2

       tar -jxvf cluster-clue-1.0.12.tar.bz2

 cd Reusable-Cluster-Components-glue--0a7add1d9996/

 ./autogen.sh

 ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'  ##注:32位系统去掉64

 make

 make install

 

 

   2、安装Resource Agents : 为集群资源的访问提供了一系列的标准的接口

       wget https://github.com/ClusterLabs/resource-agents/archive/v3.9.6.tar.gz

       tar zxvf resource-agents-3.9.6.tar.gz

       ./autogen.sh

       ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

       make && make install

 

   3、安装Heartbeat :

       wget http://hg.linux-ha.org/heartbeat-STABLE_3_0/archive/958e11be8686.tar.bz2

       tar jxvf 958e11be8686.tar.bz2

       cd Heartbeat-3-0-958e11be8686/

       ./bootstarp

       export CFLAGS="$CFLAGS -I/usr/local/heartbeat/include -L/usr/local/heartbeat/lib"

       ./configure --prefix=/usr/local/heartbeat --with-daemon-user=hacluster --with-daemon-group=haclient --enable-fatal-warnings=no LIBS='/lib64/libuuid.so.1'

      make && make install

 

      复制源码包部分内容到安装目录:

      cd Heartbeat-3-0-958e11be8686/   #切换到heartbeat源码解压后的目录,复制一下内容:

      cp doc/{ha.cf,haresources,authkeys} /usr/local/heartbeat/etc/ha.d/

      chkconfig --add heartbeat  #加入到开机启动项

chkconfig heartbeat on   #设为开机启动,7以上的此命令:systemctl enable heartbeat.service

chmod 600 /usr/local/heartbeat/etc/ha.d/authkeys

mkdir -pv /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

cp /usr/lib/ocf/lib/heartbeat/ocf-* /usr/local/heartbeat/usr/lib/ocf/lib/heartbeat/

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/RAExec/*/usr/local/heartbeat/lib/heartbeat/plugins/RAExec/  #主备heartbeat都需要设置

ln -svf /usr/local/heartbeat/lib64/heartbeat/plugins/* /usr/local/heartbeat/lib/heartbeat/plugins/  ##主备heartbeat都需要设置

 

 

Heartbeat配置:

  Heartbeat的配置主要涉及到ha.cf、haresources、authkeys这三个文件。其中ha.cf是主配置文件,haresource用来配置要让Heartbeat托管的服务,authkey是用来指定Heartbeat的认证方式

 

1、配置ha.cf  : 主配置文件

注:192.168.56.102是主heartbeat节点IP,192.168.56.101是备heartbeat节点IP

cat /usr/local/heartbeat/etc/ha.d/ha.cf  去掉空行和注释行后的内容如下:

debugfile /var/log/ha-debug           ##用于记录heartbeat的调试信息

logfile/var/log/ha-log                ##用于记录heartbeat的日志信息

logfacilitylocal0                    ##设置heartbeat的日志,这里用的是系统日志

keepalive 2                              ##设定心跳(监测)时间时间为2秒

deadtime 30     ##指定若备用节点在30秒内未收到主节点心跳信号,则接管主服务器资源

warntime 10           ##指定心跳延迟的时间为10秒,10秒内备节点不能接收主节点心跳信号,即往日志写入警告日志,但不会切换服务

initdead 120       ##系统启动或重启后预留的忽略时间段,取值至少为deadtime的两倍

udpport  694                         ##广播/单播通讯使用的Udp端口

bcast enp0s8  # Linux             ##使用网卡enp0s8发送心跳检测

#mcast eth0 225.0.0.1 694 1 0       ##采用网卡eth0的Udp多播来组织心跳,一般在备用节点不止一台时使用。Bcast、ucast和mcast分别代表广播、单播和多播,是组织心跳的的方式,任选其一,可选配置

#ucast enp0s8 192.168.10.102        ##采用网卡enp0s8的udp单播来组织心跳,后面跟的IP地址为双机对方IP地址,可选配置

auto_failback on                ##定义当主节点恢复后,是否将服务自动切回#watchdog /dev/watchdog        ##可选配置,通过Heartbeat监控系统运行状态。

node node1                     ##主节点名称,与uname -n显示一致,即主节点主机名

node node2                     ##备用节点名称,即备节点主机名

ping 192.168.10.1              ##通过ping网关检测心跳是否正常,仅用来测试网络

respawn hacluster /usr/local/heartbeat/libexec/heartbeat/ipfail   ##指定和heartbeat一起启动、关闭的进程,可选配置

#apiauth ipfail gid=haclient uid=hacluster ##设置启动IPfail的用户和组,可选配置

 

2、配置Haresources资源文件:

  Haresources文件用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动服务集群资源,文件每一行可包含一个或多个资源脚本名,资源间使用空格隔开,参数间使用两个冒号隔开,主节点和备份节点中资源文件haresources要完全一样

  编辑haresources文件: vim  /usr/local/heartbeat/etc/ha.d/haresources

     一般格式为: node-name  network <resource-group>

          node-name表示主节点的主机名,必须和ha.cf文件中指定的节点名一致。

network用于设定集群的IP地址、子网掩码和网络设备标识等。

          resoure-group 用于指定需Heartbeat托管的服务(即这些服务可由Heartbeat来启动和关闭)

  如:

    

    IP 192.168.56.110是虚拟IP

   two是HA集群的主节点,IPaddr为heartbeat自带的执行脚本,heartbeat首先将执行/etc/ha.d/resource.d/IPaddr 192.168.56.102/24 start的操作,即虚拟一个子网掩码为255.255.255.0,IP为192.168.56.102的地址,此IP为heartbeat对外提供服务的网络地址,同时指定此IP使用的网络接口

  

3、配置authkeys : 心跳密钥验证文件

  编辑 vim  /usr/local/heartbeat/etc/ha.d/authkeys

  

  注:auth后填序号,可任意填写,但第二行开头必须为序列号,然后为验证方式,支持三种(crc md5 sha1)方式验证,最后面是自定义密钥

配置双机互信(可选)并复制文件至备机 :  即配置ssh双机通信:

ssh-keygen -t rsa

ssh-copy-id -i .ssh/id_rsa.pub root@对端IP

 

4、复制配置文件至备heartbeat:

scp /usr/local/heartbeat/etc/ha.d/* root@备heartbeat机IP地址:/usr/local/heartbeat/etc/ha.d/

注意:备heartbeat节点各配置文件与主heartbeat节点各配置文件大体相同

 

5、测试:在主备heartbeat机上都执行

启动httpd: systemctl start httpd

启动heartbeat: /etc/init.d/heartbeat start或systemctl start heartbeat

设置selinux为Permissive模式:getenforce 0

停止防火墙:systemctl stop  firewalld

查看heartbeat启动后的信息:

   netstat -tulnp|grep heartbeat

   tail -f /var/log/ha-log   #日志文件在ha.cf里已经指定了

ifconfig命令查看虚拟IP 192.168.56.110是否存在:

停掉主heartbeat服务,会发现192.168.56.110 IP会漂移到备heartbeat

在浏览器里输入: 192.168.56.110 访问会发现当主备heartbeat切换时,网页内容会在主备heartbeat上的httpd服务内容之间切换

 

 

 

 

 

 

 

 

 

       

       

 

 

      

      

 

 

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值