核心知识总结
Keepalived 是VRRP(虚拟路由冗余协议)的软件实现,核心解决服务单点故障问题,实现集群高可用(HA),原生为 LVS 设计,也可适配 HAProxy、Nginx、MySQL 等服务,其核心是通过 VIP 漂移实现故障自动切换,降低系统 MTTR(平均故障恢复时间),提升 SLA(服务等级协议)可用性。
核心基础概念
• VRRP 核心术语:虚拟路由器(VRID 唯一标识,0-255)、VIP(对外提供服务的虚拟 IP)、VMAC(虚拟 MAC)、Master(主节点,高优先级)、Backup(备节点,低优先级);
• VRRP 工作模式:抢占式(默认,主节点恢复后抢占 VIP)、非抢占式(主节点恢复不抢占,避免网络抖动);
• 通信方式:默认多播(224.0.0.18),可改为单播(减少网络拥塞);
• Keepalived 核心组件:VRRP Stack(VIP 消息通告)、Checkers(后端服务健康检测)、IPVS Wrapper(生成 LVS 规则)、WatchDog(监控自身进程)。
Keepalived 核心功能
-
基于 VRRP 实现VIP 地址漂移,主节点故障后备节点自动接管 VIP;
-
为 LVS 集群自动生成 IPVS 规则,并对后端 RS(真实服务器)做健康检测;
-
通过VRRP Script调用外部脚本,实现对 HAProxy/Nginx/MySQL 等非 LVS 服务的健康检测和故障切换;
-
支持主备(单主)和双主架构,提升服务器资源利用率;
-
故障切换时可触发通知脚本(如邮件告警),实现运维可视化
核心配置结构
Keepalived 主配置文件/etc/keepalived/keepalived.conf分为 3 部分,所有配置均围绕此结构展开:
-
global_defs:全局配置,含邮件告警、router_id、VRRP 全局参数(如关闭 vrrp_strict);
-
vrrp_instance:VRRP 实例配置,核心定义 VIP、主备状态、优先级、认证方式、通信规则;
-
virtual_server/real_server:LVS 相关配置,定义虚拟服务、后端 RS、健康检测规则(适配 LVS 场景)。
关键特性
非抢占模式:需将所有节点 state 设为 BACKUP,添加nopreempt,解决抢占式的网络抖动问题;
单播配置:关闭vrrp_strict,配置unicast_src_ip(本机 IP)和unicast_peer(对端 IP),替代多播;
健康检测:对 LVS 直接通过TCP_CHECK/HTTP_GET检测,对其他服务通过vrrp_script调用外部脚本;
双主架构:配置多个 VRRP 实例,两个节点互为主备,分别接管不同 VIP,提升资源利用率。
主要实验
实验环境配置(rh1 rh2 ka1 ka2)
root@rs1 \~\]# vmset.sh eth0 172.25.254.10 rs1 \[root@rs1 \~\]# dnf install httpd -y \[root@rs1 \~\]# echo RS1 - 172.25.254.10 \> /var/www/html/index.html \[root@rs1 \~\]# systemctl enable --now httpd \[root@rs2 \~\]# vmset.sh eth0 172.25.254.20 rs2 \[root@rs2 \~\]# dnf install httpd -y \[root@rs2 \~\]# echo RS2 - 172.25.254.20 \> /var/www/html/index.html \[root@rs2 \~\]# systemctl enable --now httpd \[root@KA1 \~\]# vmset.sh eth0 172.25.254.50 KA1 \[root@KA2 \~\]# vmset.sh eth0 172.25.254.60 KA6 ka1本地解析  设置时间同步 ka2查看  #### Keepalived虚拟路由配置 ka1 \[root@KA1 xia\]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@KA1 xia\]# dnf install keepalived.x86_64 -y ka2 \[root@KA6 xia\]# mount /dev/sr0 /mnt mount: /mnt: WARNING: source write-protected, mounted read-only. \[root@KA6 xia\]# dnf install keepalived.x86_64 -y Ka1  Ka2  记得要使用 当KA1 故障时  在KA2中看vip是否被迁移到当前主机(ipconfig) ### Keepalived的子文件设定 Ka1(改两个文件)   非抢占模式(文件修改后要使用systemctl stop keepalived.service) Ka1 \[root@KA1 log\]# vim /etc/keepalived/conf.d/webvip.conf  Ka2  测试 \[root@KA6 xia\]# systemctl start keepalived.service \[root@KA1 log\]# systemctl start keepalived.service   keepalived的单播模式   ka2  测试 \[root@KA1 xia\]# tcpdump -i eth0 -nn src host 172.25.254.50 and dst 172.25.254.60 \[root@KA2 xia\]# tcpdump -i eth0 -nn src host 172.25.254.60 and dst 172.25.254.50 \[root@KA1 log\]# systemctl stop keepalived.service  \[root@KA1 log\]# systemctl start keepalived.service IPVS的高可用性 \[root@rs1/2 xia\]# cd /etc/NetworkManager/system-connections/ \[root@rs1/2 system-connections\]# ls eth0.nmconnection \[root@rs1/2 system-connections\]# cp eth0.nmconnection lo.nmconnection -p \[root@rs1/2 system-connections\]# vim lo.nmconnection  \[root@rs1/2 system-connections\]# vim /etc/sysctl.conf  \[root@rs1/2 system-connections\]# sysctl -p net.ipv4.conf.all.arp_ignore = 1 net.ipv4.conf.all.arp_announce = 2 net.ipv4.conf.lo.arp_announce = 2 net.ipv4.conf.lo.arp_ignore = 1 #安装ipvsadm \[root@KA1/KA2 \~\]# dnf install ipvsadm -y ka1ka2  测试 \[root@KA1 \~\]# watch -n 1 ipvsadm -Ln  在RS1中关闭wen服务 \[root@rs1 system-connections\]# systemctl stop httpd.service  \[root@KA1 \~\]# systemctl stop keepalived.service  Keepalived + HAProxy 是生产环境最常用的高可用负载均衡架构: 1. HAProxy:实现七层负载均衡、会话保持、后端 RS 健康检测; 2. Keepalived:为 HAProxy 提供 VIP 漂移,解决 HAProxy 单点故障; 3. 核心流程:客户端访问 VIP → Keepalived 将 VIP 绑定到主 HAProxy 节点 → HAProxy 将请求转发到后端 RS → 主 HAProxy 故障 → Keepalived 漂移 VIP 到备 HAProxy 节点 → 服务不中断。 实验 \[root@KA1 \~\]# vim /etc/keepalived/scripts/haproxy_check.sh  \[root@KA1 \~\]# systemctl restart haproxy.service  \[root@KA1 \~\]# systemctl stop haproxy.service 