Keepalived 高可用集群概述
- 前言
- 一、高可用集群技术
- 二、Keepalived故障切换转移原理 -- VRRP
- 三、Keepalived 的功能
- 1、LVS directors failover
- 2、LVS cluster nodes healthchecks
前言
我们通过LVS、Nginx、Haproxy可以实现集群的负载均衡,但是为了提高集群的高可用性能,我们还需要结合负载均衡和其他的技术来实现集群的高可用性能。接下来,我将介绍Keepalived高可用技术。
一、高可用集群技术
目前主流的集群高可用技术
RHEL-6
- Heartbeat(V1、V2、V3)
- Rhcs
RHEL-7
- Pacemaker + cronsync
- DRBD(存储高可用)
LVS
- Keepalived
集群高可用的功能
- 心跳检测
- 故障隔离/故障转移
集群连接方式:
1、专用线缆
2、以太网
生产线上使用两者结合的方式,保证集群可靠性,方式裂脑的发生。
二、Keepalived故障切换转移原理 – VRRP
vrrp协议,英文名称:Virtual Router Redundancy Protocol,中文名称:虚拟路由器冗余协议。vrrp出现就是为了解决静态路由的单点故障,vrrp是通过一种竞选协议机制来将路由任务交给某台vrrp路由器。
MASTER 和 BACKUP
- 在一个VRRP虚拟路由器中,有多台物理的VRRP路由器,但是这多台物理的机器并不同时工作,而是由一台称为MASTER的负责路由工作,其他的都是BACKUP,MASTER并非一成不变,VRRP协议让每个VRRP路由器参与竞选,最终获胜的就是MASTER。MASTER有一些特权,比如拥有虚拟路由器的IP地址,我们的主机就是用这个IP地址作为静态路由的。拥有特权的MASTER要负责转发发送给网关地址的包和响应ARP请求。
- VRRP通过竞选协议来实现虚拟路由器的功能,所有的协议报文都是通过IP多播(multicast)包(多播地址224.0.0.18)形式发送的。虚拟路由器有VRID(范围0-255)和一组IP地址组成,对外表现为一个周知的MAC地址:00-00-5E-00-01{VRID}。所有,在一个虚拟路由器中,不管谁是MASTER,对外都是相同的MAC和IP(称之为VIP)。客户端主机并不需要因为MASTER的改变而修改自己的路由配置,对他们来说,这周主从的切换时透明的。
- 在一个虚拟路由器中,只有作为MASTER的VRRP路由器会一直发送VRRP广告包(VRRPAdvertisement message),BACKUP不会抢占MASTER,除非它的优先级(priority)更高。当MASTER不可用时(BACKUP收不到广告包),多台BACKUP中优先级最高的这台会被抢占为MASTER。这种抢占式非常快速的(<1s),以保证服务的连续性。
- 出于安全性考虑,VRRP包使用了加密协议进行加密。
keepalived主要特点
- Keepalived是LVS的扩展项目,因此它们之间具备良好的兼容性。 这点应该是 Keepalived部署比其他类似工具更简洁的原因,尤其是相对于Heartbeat而言,Heartbeat作为HA软件,其复杂的配置流程让许多人望而生畏。
- 通过对服务器池对象的健康检查,实现对失效机器/服务的故障隔离。
- 负载均衡器之间的失败切换,是通过VRRPv2(Virtual Router Redundancy Protocol)stack实现的,VRRP当初被设计出来就是为了解决静态路由器的单点故障问题。
- 通过实际的线上项目,我们可以得知,iptables的启用是不会影响Keepalived的运行的。 但为了更好的性能,我们通常会将整套系统内所有主机的iptables都停用。
- Keepalived产生的VIP就是整个系统对外的IP,如果最外端的防火墙采用的是路由模式,那就映射此内网IP为公网IP。
三、Keepalived 的功能
- LVS 健康检查(LVS directors failover)
- LVS 故障转移(LVS directors failover)
- 配置其他负载均衡技术实现集群的高可用 例如:Nginx + Keepalive 等
1、LVS directors failover
keepalived集群正常工作双主架构简图
- Ha failover功能:实现LB Master主机和Backup主机之间故障转移和自动切换。
- 这是针对有两个负载均衡器Director同时工作而采取的故障转移措施。当主负载均衡器(MASTER)失效或出现故障时,备份负载均衡器(BACKUP)将自动接管主负载均衡器的所有工作;一旦主负载均衡器(MASTER)故障修复,MASTER又会接管回它原来处理的工作,而备份负载均衡管理器(BACKUP)会释放master失效时它接管的工作,此时两者将恢复到最初各自的角色状态。
keepalived集群LVS director2宕机状态
keepalived集群DIP2 takeover图
keepalived集群takeover后正常架构简图
2、LVS cluster nodes healthchecks
- rs healthcheck功能:负载均衡定期检查RS的可用性决定是否非其分发请求。
- 当虚拟服务器中的某一个甚至是几个真实服务器同时发生故障无法提供服务时,负载均衡器会自动将失效的服务器从转发队列中清除出去,从而保证用户的访问不受影响;当故障的服务器被修复以后,系统又会自动地把他们加入转发队列,分发请求提供正常服务。
keepalived集群双主LVS cluser nodes意外宕机示意图
keepalived集群双主LVS cluster nodes意外宕机RS自动清理示意图