【无标题】Keepalived

核心知识总结

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 核心功能

  1. 基于 VRRP 实现VIP 地址漂移,主节点故障后备节点自动接管 VIP;

  2. 为 LVS 集群自动生成 IPVS 规则,并对后端 RS(真实服务器)做健康检测;

  3. 通过VRRP Script调用外部脚本,实现对 HAProxy/Nginx/MySQL 等非 LVS 服务的健康检测和故障切换;

  4. 支持主备(单主)和双主架构,提升服务器资源利用率;

  5. 故障切换时可触发通知脚本(如邮件告警),实现运维可视化

核心配置结构

Keepalived 主配置文件/etc/keepalived/keepalived.conf分为 3 部分,所有配置均围绕此结构展开:

  1. global_defs:全局配置,含邮件告警、router_id、VRRP 全局参数(如关闭 vrrp_strict);

  2. vrrp_instance:VRRP 实例配置,核心定义 VIP、主备状态、优先级、认证方式、通信规则;

  3. 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

相关推荐
鹏大师运维5 小时前
为什么信创电脑装软件总提示“软件包架构不匹配”?
linux·运维·架构·国产化·麒麟·deb·统信uos
007张三丰5 小时前
软件测试专栏(11/20):测试框架开发:pytest深度解析与插件体系
运维·服务器·自动化测试·pytest·测试框架
weixin_604236676 小时前
华三 路由器 极简核心配置
运维·服务器·网络·h3c·h3c路由器
鹤落晴春7 小时前
【Linux复习】管理SELinux安全性
linux·运维·服务器
yz_aiks7 小时前
Linux Jar包配置Systemd自启动实战:从排查到配置全流程
linux·python·jar·自启动·systemd
bjzhang758 小时前
CentOS下安装MySQL详解
linux·mysql·centos
换个昵称都难10 小时前
webrtc 音频模块FEC模块
网络·音视频·webrtc
Jason_chen10 小时前
Linux 6.2 音频机制深度解析:AI驱动的低延迟音频与零信任音频安全架构
linux
下午写HelloWorld10 小时前
Linux系统及Ubuntu常用指令
linux·ubuntu·操作系统
youngerwang10 小时前
【从搬运工到协处理器:网卡芯片架构、算法、验证与边缘演进深度剖析】
网络·算法·架构·芯片