Heartbeat使用笔记

参考:

https://www.centos.bz/2012/03/achieve-drbd-high-availability-with-heartbeat/

http://blog.sina.com.cn/s/blog_7b6fc4c901012om0.html

http://www.mamicode.com/info-detail-917971.html

概念备忘:

  通过HeartBeat,可以将资源(IP以及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用的服务。在实际的生产应用场景中,heartbeat的功能和另一个高可用的开源软件keepalived有很多的相同之处。通过修改Heartbeat的软件的配置文件,可以制定那一台Heartbeat服务器作为主服务器,则另一台将自动成为热备服务器。然后在热备服务器上配置Heartbeat守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定时间内为监听到来自主服务器的心跳,就会启动故障转义程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源以及服务高可用的目的。

  heartbeat还支持主主模式,即两台服务器互为主备,这是他们之间还会互相发送报文来告诉对方自己的当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者是已经宕机了,这时每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者是服务,继续为用户提供服务。

关于脑裂问题:

  在“双机热备”高可用(HA)系统中,当联系2个节点的“心跳线”断开时,本来为一整体、动作协调的HA系统,就分裂成为2个独立的个体。

  由于相互失去了联系,都以为是对方出了故障,2个节点上的HA软件像“裂脑人”一样,“本能”地争抢“共享资源”、争起“应用服务”,就会发生严重后果:或者共享资源被瓜分、2边“服务”都起不来了;或者2边“服务”都起来了,但同时读写“共享存储”,导致数据损坏(常见如数据库轮询着的联机日志出错)。运行于备用主机上的Heartbeat可以通过以太网连接检测主服务器的运行状态,一旦其无法检测到主服务器的“心跳”则自动接管主服务器的资源。通常情况下,主、备服务器间的心跳连接是一个独立的物理连接,这个连接可以是串行线缆、一个由“交叉线”实现的以太网连接。Heartbeat甚至可同时通过多个物理连接检测主服务器的工作状态,而其只要能通过其中一个连接收到主服务器处于活动状态的信息,就会认为主服务器处于正常状态。从实践经验的角度来说,建议为Heartbeat配置多条独立的物理连接,以避免Heartbeat通信线路本身存在单点故障。

 


 

 

依赖: yum install heartbeat-stonith heartbeat-pils heartbeat heartbeat-devel heartbeat-gui libnet

Keepalived使用vrrp协议(虚拟路由冗余协议)而Heartbeat是基于(心跳)主机或网络的服务的高可用方式;
  • keepalived的目的是模拟路由器的双机,lvs的高可用建议用keepavlived
  • heartbeat的目的是用户service的双机,业务的高可用用heartbeat
在高可用设备间的hosts中指定对方:vim /etc/hosts 
  192.168.60.132   node1     #对外的publicIP
  192.168.60.133   node2
  10.1.1.1               priv1        #对内的priviteIP或高可用HA中对端的心跳地址
  10.1.1.2               priv2
 
主要配置文件有ha.cf、haresources、authkeys。在安装后默认并没有这3个文件, 可从官方网站下载或从解压的源码目录找到:
cp -rf /usr/share/doc/heartbeat-3.0.4/{authkeys,ha.cf,haresources}  /etc/ha.d/ 
 
/etc/ha.d/ha.cf          #主配置文件
logfile /var/log/ha-log     #日志位置
 
#crm yes                         #是否开启Cluster Resource Manager(集群资源管理)功能,很少用
bcast eth1                       #指明心跳使用以太网广播的方式并且在eth1接口进行
udpport 694                   #指明心跳端口:694
keepalive 2                     #心跳间隔
deadtime 20                   #对方的死亡时间:指定若在30s未收到主心跳则立即接管主的服务资源
warntime 10                     #警告心跳延迟。当10s内备不能接收到主心跳时即往日志写入警告但不会切换服务 
initdead 40                     #在某些OS启动或重启后需经一段时间网络才能正常工作,其用于解决这种情况产生的时间间隔。取值至少为deadtime两倍
#baud 19200                   #串行通信的波特率
#serial /dev/ttyS0             #选择串行设备,用于双机使用串口线连接的情况。若双机用以太网连接则应该关闭该选项。 
ucast eth0 192.168.1.2 694       #采用网卡eth0的udp单播来心跳,后面跟的IP地址应为备节点地址(此选项在备节点时指向主)   
#mcast eth0 225.0.0.1 694 1 0        #采用网卡eth0的Udp多播来心跳并指定端口为694,一般在备节点不止一台时使用(Bcast、ucast、mcast分别代表广播、单播、多播,是心跳的三种方式) 
auto_failback on            #定义当主恢复后是否将服务自动还回去(若为off则当主恢复后将变为备)
#stonith baytech /etc/ha.d/conf/stonith.baytech     #stonith的主要是使出现问题的节点从集群环境脱离进而释放集群资源,避免两个节点争用一个资源的情形发生。保证共享数据的安全和完整性
node node1                #HA集群中的节点,确保主机名称符合:uname -n
node node2                #HA集群中的节点
ping 192.168.60.1           #Ping的节点选择的越好集群就越强壮, 可选择固定的路由器作Ping节点,但最好不要选择集群的成员作为Ping节点(其仅用来测试网络连接)
respawn hacluster /usr/lib/heartbeat/ipfail    #可选,列出与heartbeat一起启动和关闭的进程,一般是和heartbeat集成的插件,当这些进程遇到故障可自动重新启动。
#最常用进程是ipfail,此进程用于检测和处理网络故障, 需配合ping语句指定的ping node来检测网络的连通性。其中hacluster表示启动ipfail进程的身份。
 
/etc/ha.d/haresources         
#资源文件(在两个HA节点上该文件必须完全一致)ha.cf文件设置了检验机制而没有执行机制、Haresources则用来设置当主出现问题时heartbeat的执行机制, 用于指定双机系统的主节点、集群IP、子网掩码、广播地址及启动的服务等集群资源,每行可包含一或多个资源脚本名( 资源间使用空格隔开而参数间用"::"隔开 )
 
  格式:
  node-name network  <resource-group>
      node-name  表示主节点主机名,须和ha.cf内指定的节点名一致。
      network  用于设定集群的IP、掩码和设备标识等。需注意的是这里指定的IP就是集群对外服务的VIP
      resource-group  指定需被其管理的服务,(即由Heartbeat来启动和关闭)若要托管这些服务须将其写成可通过start/stop来启动和关闭的脚本后放到/etc/init.d/或/etc/ha.d/resource.d/下
 
  实例:
      node1 IPaddr::192.168.60.200/24/eth0/  Filesystem::/dev/sdb5::/webdata::ext3  httpd tomcat   #在哪个服务器的哪个网卡上启动什么服务
      #其中node1是HA集群主节点,IPaddr为heartbeat自带的执行脚本,首先将执行"/etc/ha.d/resource.d/IPaddr 192.168.60.200/24 start"操作(格式:脚本名::参数)
      #即虚拟出一个192.168.60.200/24的对外提供服务的VIP,同时指定此VIP使用的网络接口为eth0。
      #接着Heartbeat将执行共享磁盘分区的挂载操作,"Filesystem::/dev/sdb5::/webdata::ext3" 相当于在命令行执行mount,即"mount -t ext3 /dev/sdb5 /webdata"
      #最后依次启动httpd和Tomcat服务
 
 
/etc/ha.d/authkeys  
#心跳信息的认证文件,用于设定认证方式,共有3种可用的认证方式,即:crc、md5、sha1。安全性依次提高但占用的系统资源也依次增加。此文件需设置权限:chmod 600 /etc/ha.d/authkeys
  • 若Heartbeat集群运行在安全的网络则使用crc方式
  • 若节点硬件配置很高则建议使用sha1,这种认证方式安全级别最高
  • 若处于网络安全和系统资源之间,可使用md5认证方式
  实例:
      auth 1      #开头指定加密编号,紧邻其下一行指定加密编号所使用的加密类型
      1 crc 
      #2 sha1 sha1_any_password 
      #3 md5 md5_any_password
 
配置备份节点的Heartbeat:   
#在备节点安装Heartbeat的方式与在主节点过程一样,安装完毕后在备份节点上使用scp命令把主节点的三个配置文件传到备
scp -r node1:/etc/ha.d/*  /etc/ha.d/      #注意!:在备的ha.cf文件内需修改ucast的内容:将其指向主
 
设置主节点和备份节点时间同步:
在双机高可用集群中主备节点的系统时间非常重要,因为节点间的监控都是通过设定时间来实现的。主备节点间的系统时间相差在10s内是正常的,若节点间时间相差太大有可能造成HA环境的故障
 
启动主节点的Heartbeat      # 启动备份节点的Heartbeat与主节点方法一样
[root@node1 ~]# /etc/init.d/heartbeat   
Usage: /etc/init.d/heartbeat {start|stop|status|restart|reload|force-reload}
[root@node1 ~]#service heartbeat start     #或:/etc/init.d/heartbeat start
 
启动时通过 " tail -f /var/log/messages" 查看主节点日志输出:
 

 
Heartbeat支持两种对共享磁盘的访问方式:( 独占访问和共享访问 )
  • 在独占访问下保持活动的节点独立使用磁盘设备,只有当活动节点释放了磁盘设备其他节点才能接管使用
  • 在共享访问下集群所有节点都可同时使用磁盘设备。当某个节点出现故障时其他节点无需接管。共享访问方式需集群文件系统的支持

转载于:https://www.cnblogs.com/bluevitality/p/6514338.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值