Hearbeat简介
1 | 在生产环境中,在很多场景中为了保证防止服务器出现单点故障,则会考虑使用高可用的一些软件来实现双机热备,例如常见的web服务就可以使用两台服务器进行双机热备解决单点故障的问题 |
Hearbeat原理
Heartbeat 主备的模式
1 | 通过修改 heartbeat 软件的配置文件可以指定哪一台 Heartbeat 服务器作为主服务器,则另一台将自动成为热备服务器。然后在热备服务器上配置 Heartbeat 守护程序来监听来自主服务器的心跳消息。如果热备服务器在指定时间内未监听到来自主服务器的心跳,就会启动故障转移程序,并取得主服务器上的相关资源服务的所有权,接替主服务器继续不间断的提供服务,从而达到资源及服务高可用性的目的。 |
Heartbeat 主主模式
1 | 即两台服务器互为主备,这时它们之间会相互发送报文来告诉对方自己当前的状态,如果在指定的时间内未收到对方发送的心跳报文,那么,一方就会认为对方失效或者宕机了,这时每个运行正常的主机就会启动自身的资源接管模块来接管运行在对方主机上的资源或者服务,继续为用户提供服务。一般情况下,可以较好的实现一台主机故障后,企业业务仍能够不间断的持续运行。 |
Heartbeat心跳连接
1 | 要部署 heartbeat 服务,至少需要两台服务器来完成,要实现高可用服务,需要heartbeat服务器之间互相通信和互相监测。 |
Heartbeat裂脑
1 | 由于某些原因,导致两台高可用服务器之间在指定时间内,无法互相检测到对方心跳而各自启动故障转移功能,取得了资源及服务的所有权,而此时的两台高可用服务器都还活着并在正常运行,这样就会导致同一个IP或服务在两端同时启动而发生冲突的严重问题,最严重的是两台主机占用同一个VIP地址,当用户写入数据时可能会分别写入到两端,这样可能会导致服务器两端的数据不一致或造成数据丢失,这种情况就被称为裂脑,也有人称其为分区集群或大脑垂直分割,英文为 split brain。 |
1 | 影响: |
1 | 预防: |
Heartbeat消息类型
Heart 高可用软件有三种消息类型,具体为:
1)心跳消息
2)集群转换消息
3)重传消息
心跳消息
1 | 心跳消息为约150字节的数据包,可能为串口、单播、广播或多播的方式,控制心跳频率及出现故障要等待多久进行故障转换 |
集群转换消息
1 | ip-request 和 ip-request-resp |
重传请求
1 | rexmit-request 控制重传心跳请求。此消息不太重要 |
Heartbeat IP 地址接管和故障转移过程
1 | Heartbeat 是通过IP地址接管和ARP广播进行故障转移的。 |
Heartbeat VIP/IP 与 别名/辅助IP
1 | 真实IP: |
1 | 别名IP(alias ip): |
1 | 辅助IP(secondary ip address): |
heartbeat 和 keepalived 在启动时就是分别利用上面命令来配置VIP的。在停止时利用下面的命令来删除VIP。
以上两种方式配置VIP,在高可用环境中的作用是一样的,没什么区别,只是由于当时的系统环境等历史原因,选择的配置命令方式不同。heartbeat3 版本起,不在使用别名,而是使用辅助IP提供服务,而 keepalived 软件一直都是使用的辅助IP技术。
- 本文作者: GaryWu
- 本文链接: https://garywu520.github.io/2017/08/02/HA高可用之Heartbeat-理论/
- 版权声明: 本博客所有文章除特别声明外,均采用 MIT 许可协议。转载请注明出处!