Keepalived 介绍
Keepalived 是由 c 语言编写的一个路径选择软件,是 IPVS 的一个扩展性项目,为 IPVS 提供高可用性(故障转移)特性,它的高可用性是通过 VRRP 协议实现的,并实现了对负载均衡服务器池中的 real server 进行健康状态检测,当 real server 不可用时,自身实现了故障的隔离,这弥补了 IPVS 不能对 real server 服务器进行健康检测的不足,这也是 keepalived 运用最广泛的场景,当然 keepalived 不只限于实现 IPVS 的高可用。
Keepalived 软件架构
Keepalived 是一个模块化设计的软件,其有多个组件共同组成,每个组件各司其职共同完成 Keepalived 的各项功能。
Checkers
:对后端服务器节点(RS)进行健康状态监测和故障隔离,我们知道,LVS 本身是没有健康状态监测功能,keepalived 起初就是为 LVS 生成 IPVS 规则和增加健康状态检测功能而设计的。
VRRP Stack
:这是 keepalived 实现 VRRP 功能的模块,VRRP 功能可以实现对前端调度器集群的故障切换(failover)。
SMTP
:Checkers 和 VRRP Stack 都是对节点进行状态监测,不同的是监测前端调度器和监测后端RS,但是这两个模块都可以通过SMTP通知管理员故障信息的邮件。
System Call
:Checkers 和 VRRP Stack 同样都可以调用系统内核功能完成故障隔离和故障切换。
IPVS wrapper
:Checkers 通过监测后端 RS 的工作状态得出信息,IPVS wrapper 通过这些信息添加 IPVS 规则,内核中的 IPVS 则通过这些规则进行工作。
Netlink Reflector
:在调度器发生故障切换的时候,该模块充当调用内核 NETLINK 的接口,完成虚拟 IP 的设置和切换。
Watch Dog
:keepalived 的核心模块就是 Checkers 和 VRRP Stack,当这两个模块发生故障的时候怎么办呢,这时候 Watch Dog 就发生了作用,它是一个检测工具,周期性的去检测 Checkers 和 VRRP Stack 的运行状态,一旦 Checkers 和 VRRP Stack 发生故障,Watch Dog 就能够检测到并采取恢复措施(重启)。