VRRP协议
keepalived 是一个基于 VRRP 协议来实现的服务高可用方案,从而可以避免 IP 单点故障。
一般与其他负载均衡技术,如 LVS,Nginx 等一起来工作来达到集群高可用的目的

VRRP 简介(转发机制)

  1. VRRP(Virtual Router Redundancy Protocol,虚拟路由器冗余协议)将可以承担网关功能的路由器加入到备份组中,形成一台虚拟路由器,由 VRRP 的选举机制决定哪台路由器承担转发任务,局域网内的主机只需将虚拟路由器配置为缺省网关
  2. VRRP 是一种选择协议,它可以把一个虚拟路由器的责任动态分配到局域网上的 VRRP 路由器中的一台。控制虚拟路由器 IP 地址的 VRRP 路由器称为主路由器,它负责转发数据包到这些虚拟 IP 地址。一旦主路由器不可用,这种选择过程就提供了动态的故障转移机制,这就允许虚拟路由器的 IP 地址可以作为终端主机的默认第一跳路由器 3.VRRP是一种容错协议,在提高可靠性的同时,简化了主机的配置。在具有多播或广播能力的局域网(如以太网)中,借助 VRRP 能在某台设备出现故障时仍然提供高可靠的缺省链路,有效避免单一链路发生故障后网络中断的问题,而无需修改动态路由协议、路由发现协议等配置信息
  3. VRRP 协议的实现有 VRRPv2 和 VRRPv3 两个版本, VRRPv2 基于 IPv4 , VRRPv3 基于 IPv6
  4. VRRP 路由器:所有运行 VRRP 协议的路由器就叫做 VRRP 路由器
  5. VRRP 备份组:多台路由器被分到一个组中,在这个组中选举出一台主路由器,其他作为备份路由器。平常时候都是主路由器一个工作,备份路由器空闲,当主路由器故障后,从多台备份路由器中选举出一台替代故障的主路由器工作。这一组中的路由器构成了一个备份组。
  6. 虚拟路由器:虚拟路由器是 VRRP 备份组中所有路由器的集合,它是一个逻辑概念,并不是正真存在的。从备份组外面看备份组中的路由器,感觉组中的所有路由器就像一个一样,可以理解为在一个组中:主路由器 + 所有备份路由器=虚拟路由器。虚拟路由器有一个虚拟的 IP 地址和 MAC 地址。如果虚拟 IP 和备份组中的某台路由器的 IP 相同的话,那么这台路由器称为 IP 地址拥有者,并且作为备份组中的主路由器。

    VRRP 状态

    VRRP 路由器在运行过程中有三种状态:
  • Initialize 状态:系统启动后就进入 Initialize ,此状态下路由器不对 VRRP 报文做任何处处理,可以理解为初始化
  • Master 状态:路由器会发送 VRRP 通告,发送免费 ARP 报文。
  • Backup状态:接受 VRRP 通告。

一般主路由器处于 Master 状态,备份路由器处于 Backup 状态。

VRRP工作过程如下

  1. 路由器使用 VRRP 功能后,会根据优先级确定自己在备份组中的角色。优先级高的路由器成为 Master 路由器,优先级低的成为 Backup 路由器。Master 路由器定期发送 VRRP 通告报文,通知备份组内的其他设备自己工作正常;Backup 路由器则启动定时器等待通告报文的到来。
  2. 在抢占方式下,当 Backup 路由器收到 VRRP 通告报文后,会将自己的优先级与通告报 文中的优先级进行比较。如果大于通告报文中的优先级,则成为 Master 路由器;否则将保持 Backup 状态
  3. 在非抢占方式下,只要 Master 路由器没有出现故障,备份组中的路由器始终保持 Master 或 Backup 状态,Backup 路由器即使随后被配置了更高的优先级也不会成为 Master 路由器
  4. 如果 Backup 路由器的定时器超时后仍未收到 Master 路由器发送来的 VRRP 通告报文,则认为 Master 路由器已经无法正常工作,此时 Backup 路由器会认为自己是 Master 路由器,并对外发送 VRRP 通告报文。备份组内的路由器根据优先级选举出 Master 路由器,承担报文的转发功能。

    在项目中的体现

    VRRP 协议 - 图1
    如图,可以看到前端在请求后端时,并不是让它直接将请求打到实际的服务器上面来,而是去请求虚拟 IP ,此时如果 master 服务器没有出现故障的话,就会由它将前端的请求打到真实的服务器上面去
    如果 master 不能工作的话,就会由 backup 服务器将前端请求打到真实的服务器上面(图中拿虚线来表示当 master 宕掉时,由 backup 来负责转发请求),这样就实现了服务高可用。