Heartbeat 简介
Heartbeat 是一款开源提供高可用(Highly-Available)服务的软件,通过 heartbeat 可以将资源(IP及程序服务等资源)从一台已经故障的计算机快速转移到另一台正常运转的机器上继续提供服务,一般称之为高可用服务。在实际生产应用场景中,heartbeat 的功能和另一个高可用软件 keepalived 有很多相同之处,但在生产中,对应实际的业务应用也是有区别的,例如: keepalived 主要是控制IP的漂移,配置、应用简单,而 heartbeat 则不但可以控制IP漂移,更擅长对资源服务的控制,配置、应用比较复杂。
heartbeat 官方地址:http://www.linux-ha.org/wiki/Heartbeat
Heartbeat 原理
通过修改 heartbeat 软件的配置文件可以指定哪一台 Heartbeat 服务器作为主服务器,则另一台将自动成为热备服务器。然后在热备服务器上配置 Heartbeat 守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源及服务高可用性的目的。
以上描述的是 heartbeat 主备的模式,heartbeat 还支持主主模式,即两台服务器互为主备,这时它们之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者宕机了,这时每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者服务,继续为用户提供服务。一般情况下,可以较好的实现一台主机故障后,企业业务仍能够不间断的持续运行。注意:所谓的业务部间断,在故障转移期间也是需要切换时间的(例如:停止数据库及存储服务等),heartbeat 的主备高可用的切换时间一般是在5-20秒左右(服务器宕机的切换比人工切换要快)
另外,和 keepalived 高可用软件一样,heartbeat 高可用是操作系统级别的,不是服务(软件)级别的,可用通过简单的脚本控制,实现软件级别的高可用。
高可用服务器切换的常见条件场景:
- 1)主服务器物理宕机(硬件损坏,操作系统故障),高可用的主要解决目标
- 2)Heartbeat 服务软件本身故障
- 3)两台主备服务器之间心跳连接故障
服务故障不会导致切换,可以通过服务宕机把 heartbeat 服务停掉