1、Keepalived介绍
Keepalived是一个基于VRRP协议来实现LVS服务高可用方案,可以利用其来避免单点故障。一个LVS服务会使用2台服务器运行Keepalived,一台为主服务器MASTER,另一台为备份服务器BACKUP,但是对外表现为一个虚拟IP,主服务器会发送特定的消息给备份服务器,当备份服务器收不到这个消息的时候,即主服务器宕机的时候,备份服务器就会接管虚拟IP,继续提供服务,从而保证高可用性。Keepalived是VRRP的完美实现
2、Keepalived设计
1、内核组件
1)LVS 框架:使用 getsockopt 和 setsockopt 调用来获取和设置套接字上的选项。
2)Netfilter框架:支持NAT和伪装的IPVS代码。
3)Netlink 接口:设置和删除网络接口上的 VRRP 虚拟 IP。
4)组播:VRRP 通告发送到保留的 VRRP MULTICAST 组 (224.0.0.18)。
2、原子元素
包含有控制平面(Control Plane)、调度器 - I/O 多路复用器(Scheduler - I/O Multiplexer)、内存管理(Memory Management)、看门狗(WatchDog)、VRRP协议栈(VRRP Stack)等
3、健康检查
采用tcp、http,udp 、echo请求等方式对实际的服务器进行保活,可以通过自定义监测脚本来自定义健康监测内容机制
4、故障切换
Keepalived 实现了用于控制器故障转移的VRRP 协议,VRRP数据包调度程序负责