一、keepalived的工作原理
1、Keepalived高可用对之间的通信原理
  1) VRRP,全称Virtual Router Redundancy Protocol,中文名为虚拟路由冗余协议,VRRP是为了解决静态路由的单点故障。
  2) VRRP是通过一种竞选协议机制来将路由任务交给某台VRRP路由器的。
  3) VRRP用IP多播的方式(默认多播地址(224.0.0.18 ))实现高可用对之间通信。
4) 工作时主节点发包, 备节点接包, 当备节点接收不到主节点发的数据包的时候, 就启动接管程序接管主节点的资源。备节点可以有多个, 通过优先级竞选, 但一般Keepalived 系统运维工作中都是一对。
5) VRRP使用了加密协议加密数据,但Keepalived官方目前还是推荐用明文的方式配置认证类型和密码。ed官方目前还
是推荐用明文的方式配置认证类型和密码。
2、Keepalived服务的工作原理
  Keepalived 高可用对之间是通过V R R P 进行通信的, V R R P 是通过竞选机制来确定主备的,主的优先级高于备, 因此,工作时主会优先获得所有的资源, 备节点处于等待状态, 当主挂了的时候,备节点就会接管主节点的资源,然后顶替主节点对外提供服务。在Keepalived服务对之间,只有作为主的服务器会一直发送V R R P 广播包, 告诉备它还活着, 此时备不会抢占主,当主不可用时, 即备监听不到主发送的广播包时, 就会启动相关服务接管资源,保证业务的连续性。接管速度最快可以小于1秒。
二、裂脑
1、什么是“裂脑”
无法检测心跳————各自工作,取各自资源————用户写入导致数据丢失
由于某些原因,导致两台高可用服务器对在指定时间内,无法检测到对方的心跳消息,各自取得资源及服务的所有权,而此时的两台高可用服务器对都还活着并在正常运行,这样就会导致同一个IP或服务在两端同时存在而发生冲突,最严重的是两台主机占用同一个VIP地址,当用户写人数据时可能会分别写入到两端,这可能会导致服务器两端的数据不一致或造成数据丢失,这种情况就被称为裂脑。
2、导致裂脑的原因及解决办法
导致原因
● 高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
● 心跳线坏了(包括断了,老化)。
● 网卡及相关驱动坏了,IP配置及冲突问题(网卡直连)。
● 心跳线间连接的设备故障(网卡及交换机)。
● 仲裁的机器出问题(采用仲裁的方案)。
● 高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
● 高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
● 其他服务配置不当等原因,如心跳方式不同,心跳广播冲突、软件Bug等。
解决办法
● 同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
● 当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith.fence)。相当于备节点接收不到心跳消息,通过单独的线路发送关机命令关闭主节点的电源。
● 做好对裂脑的监控报警(如邮件及手机短信等或值班),在问题发生时人为第一时间介人仲裁,降低损失。例如,百度的监 控报警短信就有上行和下行的区别。报警信息发送到管理员手机上,管理员可以通过手机回复对应数字或简单的字符串操作 返回给服务器,让服务器根据指令自动处理相应故障,这样解决故障的时间更短。