keepalived 简介
1.keepalived 起源
keepalived 软件起初是专门为了 LVS 负载均衡软件设计的,用来管理并监控 LVS 集群系统中
各个服务节点的状态,后台又加入了可以实现高可用的 VRRP 功能。可以只用它提供双机浮
动的 vip,这样可以简单实现一个双机热备高可用功能。
因此 Keepalived 除了能够管理 LVS 软件外,还可以作为其他服务(如:
HAproxy/MySQL)的高可用解决方案软件。
2.常见运作场景
一个集群里至少有 2 台服务器运行 Keepalived,一台作为主服务器(master),一台作为备份
服务器(Backup),但是对外表现为一个虚拟 IP,在 Keepalived 工作时,Master 节点会不
断地向备节点发送(多播的方式,组播地址为 224.0.0.18)心跳消息,用以告诉备节点自己还
活着。
当 Master 节点发生故障时,就无法发送心跳消息,备节点也就因此无法继续监测到来自
Master 节点的心跳,于是调用自身接管程序,接管 Master 节点的 IP 资源。
而当主 Master 节点恢复时,Backup 节点又会释放主节点故障时自身接管的 IP 资源,恢复到
原来的备用角色。(抢占模式,也可以设置成非抢占模式,让其保持主,而不释放资源给原
主)
Keepalived 是可以工作在网络的 3,4,7 层,即网络层(IP 层),传输层(TCP 层),及应用
层,在很多场景下代替了原始的 LVS 软件方案。
1. 网络层(3):Keepalived 通过 ICMP 协议向服务器集群中的每一个节点发送一个
ICMP 数据包(有点类似与 Ping 的功能),如果某个节点没有返回响应数据包,那么认
为该节点发生了故障,Keepalived 将报告这个节点失效,并从服务器集群中剔除故障
节点。
2. 传输层(4):Keepalived 在传输层里利用了 TCP 协议的端口连接和扫描技术来判断
集群节点的端口是否正常,Keepalived 一旦在传输层探测到这些端口号没有数据响应
和数据返回,就认为这些端口发生异常,然后强制将这些端口所对应的节点从服务器
集群中剔除掉。
3. 应用层(7):用户可以通过自定义 Keepalived 工作方式,例如:可以通过编写程序
或者脚本来运行 Keepalived,而 Keepalived 将根据用户的设定参数检测各种程序或
者服务是否运行正常,如果 Keepalived 的检测结果和用户设定的不一致时,
Keepalived 将把对应的服务器从服务器集群中剔除。
3.keepalived 核心模块
分别是 core/check/vrrp
1. core:keepalived 的核心,负责主进程的启动、维护以及全局配置文件的加载和解析。
2. check:负责健康检查,包括常见的各种检查方式。
3. vrrp:是用来实现 VRRP 协议的。
4.keepalived 的实现模式
Keepalived 工作模式分为抢占和非抢占模式。
a.抢占模式
评论