简介

  • Keepalived是Linux下一个轻量级别的高可用解决方案,Keepalived起初是为LVS设计的,专门用来监控集群系统 中各个服务节点的状态,如果某个服务器节点出现故障,Keepalived将检测到后自动将节点从集群系统中剔除。
  • 后来Keepalived又加入了VRRP的功能,VRRP(VritrualRouterRedundancyProtocol,虚拟路由冗余协议)出现的目的是解决静态路由出现的单点故障问题,通过VRRP可以实现网络不间断稳定运行,因此Keepalvied一方面具有服务器状态检测和故障隔离功能,另外一方面也有HAcluster功能。
  • 健康检查和失败切换是keepalived的两大核心功能。

    • 所谓的健康检查,就是采用tcp三次握手,icmp请求,http请 求,udp echo请求等方式对负载均衡器后面的实际的服务器(通常是承载真实业务的服务器)进行保活;
    • 而失败切换主要是应用于配置了主备模式的负载均衡器,利用VRRP维持主备负载均衡器的心跳,当主负载均衡器出现问题时, 由备负载均衡器承载对应的业务,从而在大限度上减少流量损失,并提供服务的稳定性。

      VRRP(虚拟路由冗余协议):解决单点路由出现故障的问题

  • VRRP协议是一种容错的主备模式的协议,保证当主机的下一跳路由出现故障时,由另一台路由器来代替出现故障的 路由器进行工作,通过VRRP可以在网络发生故障时透明的进行设备切换而不影响主机之间的数据通信。

  • 虚拟路由器:VRRP组中所有的路由器,拥有虚拟的IP+MAC(00-00-5e-00-01-VRID)地址
  • 主路由器:虚拟路由器内部通常只有一台物理路由器对外提供服务,主路由器是由选举算法产生,对外提供各种网络功能。
  • 备份路由器:VRRP组中除主路由器之外的所有路由器,不对外提供任何服务,只接受主路由的通告,当主路由器挂掉之后,重新进行选举算法接替master路由器。

    VRRP选举机制

  • 三种状态:

    • Initialize状态:系统启动后进入initialize状态
    • Master状态
    • Backup状态
  • 选举机制:

    • 优先级
    • 抢占模式下,一旦有优先级高的路由器加入,即成为Master
    • 非抢占模式下,只要Master不挂掉,优先级高的路由器只能等待

      工作原理

  • 网络层:通过icmp协议向后端服务器集群中发送数据报文

  • 传输层:利用TCP协议的端口连接和扫描基数检测后端服务器集群是否正常
  • 应用层:自定义keepalived工作方式(脚本)

    体系结构

    image.png

  • Scheduler-I/O Multiplexer:是一个IO服用分发调度器,它负责安排keepalived所有内部的任务请求

  • Memory Mngt:没存管理机制,提供访问内存的一些通用方法
  • Control Plane:是Keeplived控制版面,可以实现对配置文件进行编译和解析
  • Core conponents:
    • Watchdog:检测工具,Keeplived可以通过它监控Checkers和VRRP进程
    • Checkers:这是Keepalived基础的功能,也是主要的功能,可以实现对服务器运行状态检测和故障隔离。
    • VRRP Stack:这是keepalived后来引用VRRP功能,可以实现HA集群中失败切换功能。负责负载均衡器之间的 失败切换FailOver
    • IPVS wrapper:这个是IPVS功能的一个实现,IPVSwarrper模块将可以设置好的IPVS规则发送的内核空间并且 提供给IPVS模块,终实现IPVS模块的负载功能。
    • Netlink Reflector:用来实现高可用集群Failover时虚拟IP(VIP)的设置和切换
  • keepalived运行时,会启动3个进程:

    • core:负责主进程的启动,维护和全局配置文件的加载;
    • check:负责健康检查
    • vrrp:用来实现vrrp协议

      对比

  • Keepalived的目的是模拟路由器的高可用

  • Heartbeat或Corosync的目的是实现Service的高可用
  • Keepalived是实现前端高可用,常用的前端高可用的组合有,就是我们常见的LVS+Keepalived、 Nginx+Keepalived、HAproxy+Keepalived
  • Heartbeat或Corosync是实现服务的高可用,常见的组合有Heartbeat v3(Corosync)+Pacemaker+NFS+Httpd 实现Web服务器的高可用、Heartbeat v3(Corosync)+Pacemaker+NFS+MySQL 实现MySQL服务器的高可用。