核心知识总结
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 是生产环境最常用的高可用负载均衡架构:
-
HAProxy:实现七层负载均衡、会话保持、后端 RS 健康检测;
-
Keepalived:为 HAProxy 提供 VIP 漂移,解决 HAProxy 单点故障;
-
核心流程:客户端访问 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
