Keepalive工作原理

Keepalive工作原理

1.1软件介绍

Keepalived软件起初是专为LVS负载均衡软件设计的,用来管理并监控LVS集群系统中各个服务节点的状态,后来又加入了可以实现高可用的VRRP功能。因此,Keepalived除了能够管理LVS软件外,还可以作为其他服务(例如:Nginx、Haproxy、MySQL等)的高可用解决方案软件。

Keepalived采用模块化设计,不同模块实现不同的功能

Keepalivd主要有三个模块,分别是core,check,vrrp

core:是Keepalived的核心,负责主进程的启动和维护,全局配置文件的加载解析等
check:负责healthchecker(健康检查)
vrpp:VRRPD子进程,VRRPD子进程就是来实现VRRP协议的

Keepalived配置文件:

Keepalived配置文件为:keepalived.conf;
主要有三个配置区域,分别是:全局配置(Global Configuration)、VRRPD配置、LVS配置 
全局配置又包括两个子配置: 全局定义(global definition) 静态IP地址/路由配置(static ipaddress/routes)

1.2Keepalived高可用原理

Keepalived高可用服务之间的故障切换转移,是通过VRRP(虚拟路由冗余协议)来实现的。
在Keepalived服务正常工作时,主master节点会不断的向备节点发送心跳信息,用来告诉备Backup节点自己还活着,当主master节点发生故障时候,就无法发送心跳信息了,备节点也就因此无法继续检测到来自主 Master节点的心跳了,于是调用自身的接管程序,接管主Master节点的 IP资源及服务。而当主 Master节点恢复时,备Backup节点又会释放主节点故障时自身接管的IP资源及服务,恢复到原来的备用角色。

VRRP作用

vrrp是虚拟路由冗余协议,就是当出现单点故障问题通过竞选方式决定vip走向的一种机制

1.3Keepalived服务vrrp的工作原理

Keepalived高可用是通过vrrp协议通信的,vrrp是通过竞选机制决定主备,住的优先级高于被服务器的,所以在工作时主会优先获取所有的资源,备节点处于准备状态,当主节点宕机时候,备节点会接管主节点的资源,然后顶替主节点对外提供服务。
在 Keepalived服务对之间,只有作为主的服务器会一直发送 VRRP广播包,告诉备它还活着,此时备不会枪占主,当主不可用时,即备监听不到主发送的广播包时,就会启动相关服务接管资源,保证业务的连续性.接管速度最快;

1.4出现脑裂的原因

一般来说,脑裂的发生有以下几种原因:

高可用服务器对之间心跳线链路发生故障,导致无法正常通信。
心跳线坏了(包括断了,老化)。
网卡及相关驱动坏了,ip配置及冲突问题(网卡直连)。
心跳线间连接的设备故障(网卡及交换机)。
仲裁的机器出问题(采用仲裁的方案)。
高可用服务器上开启了 iptables防火墙阻挡了心跳消息传输。
高可用服务器上心跳网卡地址等信息配置不正确,导致发送心跳失败。
其他服务配置不当等原因,如心跳方式不同,心跳广插冲突、软件Bug等。
Keepalived配置里VRRP实例如果 virtual_router_id两端参数配置不一致也会导致裂脑问题发生。

1.5如何解决脑裂

①同时使用串行电缆和以太网电缆连接,同时用两条心跳线路,这样一条线路坏了,另一个还是好的,依然能传送心跳消息。
②当检测到裂脑时强行关闭一个心跳节点(这个功能需特殊设备支持,如Stonith、feyce)。相当于备节点接收不到心跳消患,通过单独的线路发送关机命令关闭主节点的电源。
③做好对裂脑的监控报警(如邮件及手机短信等或值班).在问题发生时人为第一时间介入仲裁,降低损失。
管理员可以通过手机回复对应数字或简单的字符串操作返回给服务器.让服务器根据指令自动处理相应故障这样解决故障的时间更短。
上一篇:【Java并发编程】阿里最喜欢问的几道线程池的面试题?


下一篇:java并发编程的艺术——第五章总结(Lock锁与队列同步器)