heartbeat心跳检测和裂脑

heartbeat的心跳链接:html

  讲过上面的描述,要部署heartbeat服务,至少须要两台主机才能完成。那么,要实现高可用服务,这两台主机之间,是如何作到互相通讯互相监控的呢/数据库

  下面是两台heartbeat主机之间通讯的一些经常使用的可行的方法:服务器

    1)串行电缆,即所谓的串口(首选,缺点是距离不能太远)网络

    2)一根以太网电缆量网口直连(生产环境中经常使用的方式)ide

    3)以太网电缆,经过交换机等网络设备链接(次选,缘由是增长了故障点,很差排查故障,同时,线路不是专用的心跳线,容易受其余数据传输的影响,致使心跳报文发送问题)网站

Heartbeat裂脑:spa

     什么是裂脑?code

    因为两台高可用服务器之间在指定的时间内,没法互相检测到对方心跳而各自启动故障转移功能,取得了资源以及服务的全部权,而此时的两台高可用服务器对都还活着并做正常运行,这样就会致使同一个IP湖综合服务在两端同时启动而发生冲突的严重问题,最严重的就是两台主机同时占用一个VIP的地址,当用户写入数据的时候可能会分别写入到两端,这样可能会致使服务器两端的数据不一致或形成数据的丢失,这种状况就本成为裂脑,也有的人称之为分区集群或者大脑垂直分隔orm

 

致使裂脑发生的缘由:  htm

  通常来讲,裂脑的发生,主要是由如下的几个缘由致使的:

  1)高可用服务器对之间心跳线路故障,致使没法正常的通讯。缘由好比:

    (1).心跳线自己就坏了(包括断了,老化)

    (2).网卡以及相关驱动坏了,IP配置及冲突问题

    (3).心跳线间链接的设备故障(交换机的故障或者是网卡的故障)

    (4).仲裁的服务器出现问题

  2)高可用服务器对上开启了防火墙阻挡了心跳消息的传输

  3)高可用服务器对上的心跳网卡地址等信息配置的不正确,致使发送心跳失败。

  4)其余服务配置不当等缘由,如心跳的方式不一样,心跳广播冲突,软件出现了BUG等

防止脑裂发生的方法总结:

  发生脑裂的时候,对业务的影响是及其严重的,有的时候甚至是致命的。如:两台高可用的服务器对之间发生脑裂,致使互相竞争同一个IP资源,就如同咱们局域网内常见的IP地址冲突同样,两个机器就会有一个或者两个不正常,影响用户正常访问服务器。若是是应用在数据库或者是存储服务这种极重要的高可用上,那就致使用户发布的数据间断的写在两台服务器上的恶果,最终数据恢复及困难或者是难已恢复

  实际的生产环境中,咱们能够从如下几个方面来防止裂脑的发生:

  1)同时使用串行电缆和以太网电缆链接,同时用两条心跳线路,这样一条线路坏了,另外一个线路仍是好的,依然能传送消息(推荐的)

  2)检测到裂脑的时候强行的关闭一个心跳节点(须要特殊的节点支持,如stonith,fence),至关于程序上备节点发现心跳线故障,发送关机命令到主节点。

  3)作好对裂脑的监控报警(如邮件以及手机短信等),在问题发生的时候可以人为的介入到仲裁,下降损失。固然,在实施高可用方案的时候,要根据业务的实际需求肯定是否可以容忍这样的损失。对于通常的网站业务,这个损失是可控的(公司使用)

  4)启用磁盘锁。正在服务一方锁住共享磁盘,脑裂发生的时候,让对方彻底抢不走共享的磁盘资源。但使用锁磁盘也会有一个不小的问题,若是占用共享盘的乙方不主动解锁,另外一方就永远得不到共享磁盘。现实中介入服务节点忽然死机或者崩溃,另外一方就永远不可能执行解锁命令。后备节点也就截关不了共享的资和应用服务。因而有人在HA中涉及了“智能”锁,正在服务的一方只在发现心跳线所有断开时才启用磁盘锁,平时就不上锁了

  5)报警报在服务器接管以前,给人员处理留足够的时间就是1分钟内报警了,可是服务器不接管,而是5分钟以后接管,接管的时间较长。数据不会丢失,但就是会致使用户没法写数据。

  6)报警后,不直接自动服务器接管,而是由人员接管。

  7)增长仲裁的机制,肯定谁该得到资源,这里面有几个参考的思路:

    1)增长一个仲裁机制。例如设置参考的IP,小心跳彻底断开的时候,2个节点各自都ping一下参考的IP,不一样则代表断点就出如今本段,这样就主动放弃竞争,让可以ping通参考IP的一端去接管服务。

    2)经过第三方软件仲裁谁该得到资源,这个在阿里有相似的软件应用

HeartBeat的一些介绍和功能上的一些总结