Keepalived 原理及配置(高可用)
目录一、Keepalived 原理二、Keepalived 日常配置2.1.Keepalived 日志独立2.2.Keepalived 子配置文件三、Keepalived 模式配置3.1.Keepalived 单主模式3.2.Keepalived 非抢占模式3.3.Keepalived 延迟抢占模式3.4.Keepalived 单播模式3.5.Keepalived 邮件告警3.6.Keepalived 双主模式四、Keepalived 高可用4.1.Keepalived LVS - DR 单主模式4.2.Keepalived LVS - DR 双主模式4.3.Keepalived HAProxyVrrp脚本检测修改优先级五、总结一、Keepalived 原理keepalived 基于 VRRP虚拟路由冗余协议实现高可用。核心原理是通过竞选机制在多台服务器主 / 备节点中选举出一台主节点承担服务同时备节点持续监控主节点状态主节点正常时通过组播发送 VRRP 通告消息宣告存活独占虚拟 IPVIP对外提供服务当主节点故障如服务中断、网络异常备节点因超时未收到通告会触发重新竞选优先级最高的备节点升级为主节点并接管 VIP实现服务无缝切换确保业务不中断。此外keepalived 还支持健康检查如检测端口、URL 状态可更精准判断服务可用性。VRRP 原理VRRP虚拟路由冗余协议是一种实现路由冗余的协议核心是通过将多台物理路由器组成一个 “虚拟路由器”对外提供统一的虚拟 IPVIP和虚拟 MAC 地址避免单点故障。工作时虚拟路由器内的设备通过优先级竞选主 / 备角色优先级最高的成为主路由器承担数据包转发任务并定期发送 VRRP 通告消息组播宣告存活备份路由器则监听通告若超时未收到主路由器消息判定主节点故障则触发重新竞选优先级最高的备份节点升级为主路由器接管 VIP 和虚拟 MAC继续提供路由服务整个过程对客户端透明确保网络持续可用。二、Keepalived 日常配置2.1.Keepalived 日志独立vim /etc/sysconfig/keepalived ######## KEEPALIVED_OPTIONS-D -S 6 ######## vim /etc/rsyslog.conf ######## local7.* /var/log/boot.log local6.* /var/log/keepalived.log # 添加此条 ######## systemctl restart rsyslog.service systemctl restart keepalived.service # 测试查看新日志文件有内容则实验成功 cat /var/log/keepalived.log2.2.Keepalived 子配置文件vim /etc/keepalived/keepalived.conf ###### include /etc/keepalived/conf.d/*.conf # 在主配置文件添加此条表示包含 conf.d 目录下 .conf 结尾的文件 ###### # 检查语法 keepalived -t -f /etc/keepalived/keepalived.conf # 重启服务 systemctl restart keepalived.service三、Keepalived 模式配置3.1.Keepalived 单主模式实验准备两台 keepalived 主机两台 rs 主机一台 client 主机ka-master 主机192.168.67.100ka-slave 主机192.168.67.200rs1主机192.168.13.10rs2 主机192.168.13.20keepalived 主机配置# 时间同步 # 100 作为服务vim /etc/chrony.conf端200 作为客户端 # 服务端配置100 vim /etc/chrony.conf ... allow 192.168.67.0/24 # 开启服务端允许 67 网段连接本机 ... systemctl restart chronyd.service #客户端配置200 vim /etc/chrony.conf ... server 192.168.67.100 iburst ... systemctl restart chronyd.service # 客户端测试查看时间同步结果显示 ^* 则同步成功 chronyc sources -v# 安装 keepalived 并配置 dnf install keepalived -y vim /etc/keepalived/keepalived.conf ################## ... ! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr # vrrp_strict vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 } vrrp_instance VI_1 { state MASTER # slave 主机设置为 BACKUP interface eth0 virtual_router_id 51 priority 100 # 优先级slave 主机设置为 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } ... # 其他都注释掉 ################## # 重启服务 systemctl restart keepalived.service systemctl enable --now keepalived.service # 测试在优先级高的主机上查看 VIP ifconfig# 查看组播情况 tcpdump -i eth0 -nn host 224.0.0.44master 的主机会发送组播消息告诉 slave 的主机自己存活如果 master 的主机故障则会出现 VIP 飘逸到 slave 的主机。如果 master 主机恢复运行VIP 会重新漂移到 master 主机因为 master 主机的优先级高于 slave 主机。问题VIP 反复飘逸会导致网络波动。所以产生了非抢占模式。3.2.Keepalived 非抢占模式在抢占模式的基础上修改 Keepalived 主机配置文件vim /etc/keepalived/keepalived.conf ####### vrrp_instance VI_1 { state BACKUP # 两个主机的 state 都需要是 BACKUP因为非抢占模式没有主备之分 interface eth0 virtual_router_id 51 priority 100 # 优先级另一台主机设置为 80 nopreempt # 在抢占模式的基础上添加此条实现非抢占模式 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } #######测试systemctl restart keepalived.service# 停止 master 主机服务 # 发生 VIP 飘逸 systemctl stop keepalived.service# 再次重启 master 服务VIP 不发生飘逸 # master 优先级高于 slave 主机但是服务恢复后不发生 VIP 抢占 systemctl start keepalived.service # VIP 仍然在 slave 上非抢占模式弊端如果 slave 主机的性能没有 master 主机好那么让 slave 注意一直承载 VIP 会发生性能瓶颈所以出现了延迟抢占模式。3.3.Keepalived 延迟抢占模式在抢占模式的基础上修改 Keepalived 主机配置文件vim /etc/keepalived/keepalived.conf ####### vrrp_instance VI_1 { state BACKUP # 延迟抢占模式两台主机都为 BACKUP interface eth0 virtual_router_id 51 priority 100 # slave 主机优先级 80 preempt_delay 10 # 延迟时间配置默认时间单位 s不用加 s advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } #######测试延迟抢占模式master 主机故障VIP 会飘逸到 slave 主机如果 master 主机恢复 VIP 会在设置的延迟抢占时间完毕后抢占 VIP。systemctl stop keepalived.servicemaster 没有 VIPVIP 漂移到 slave 上。10 s 后 VIP 会飘逸回 master。3.4.Keepalived 单播模式因为 Keepalived 的心跳检测默认是发送组播的形式保活会造成网络拥堵所以需要配置单播模式减少网络流量。vim /etc/keepalived/keepalived.conf ####### vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 preempt_delay 10 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } unicast_src_ip 192.168.67.100 # 本机 IP注意两台主机需按需配置 unicast_peer { 192.168.67.200 # 对端主机 IP注意两台主机需按需配置 } } #######测试# 在承载 vIP 的主机上查看单播情况 tcpdump -i eth0 -nn src host 192.168.67.100 and dst 192.168.67.2003.5.Keepalived 邮件告警Keepalived 下载软件注意Keepalived 主机的主机名要是域名的模式这样发邮件才不会被卡住。# 配置主机名 hostnamectl set-hostname ka-master.zyz.org # 下载软件 dnf install s-nail sendmail -y vim /etc/mail.rc ###### set fromzhaoyz0911163.com set smtpsmtp.163.com set smtp-auth-userzhaoyz0911163.com set smtp-auth-passwordQXbQYU3c48EWe8Ch # 此验证码要到邮箱里开启 POP3 并获得 set smtp-authlogin set ssl-verifyignore ###### systemctl restart sendmail.service netstat -antlupe | grep 25# 测试邮件是否可以发出 echo hello | mailx -s test zhaoyz0911163.com邮箱收到此邮件vim /etc/keepalived/mail.sh ###### #!/bin/bash mail_destzhaoyz0911163.com mail_send() { mail_subj$HOSTNAME to be $1 vip 转移 mail_messdate %F\ %T: vrrp 转移,$HOSTNAME 变为 $1 echo $mail_mess | mail -s $mail_subj $mail_dest } case $1 in master) mail_send master ;; backup) mail_send backup ;; fault) mail_send fault ;; *) exit 1 ;; esac ###### chmod x /etc/keepalived/mail.sh# 修改 Keepalived 配置文件添加 keepalived 的状态变化时可以自动触发脚本的功能 vim /etc/keepalived/keepalived.conf ###### ! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr # vrrp_strict vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 enable_script_security # 启用脚本安全机制限制健康检查脚本的执行权限 script_user root # 指定健康检查脚本的执行用户为 root } vrrp_instance VI_1 { state BACKUP interface eth0 virtual_router_id 51 priority 100 preempt_delay 10 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } unicast_src_ip 192.168.67.100 unicast_peer { 192.168.67.200 } notify_master /etc/keepalived/mail.sh master # 当当前节点从其他状态切换为 master 状态时触发 notify_backup /etc/keepalived/mail.sh backup # 当当前节点从其他状态切换为 backup 状态时触发 notify_fault /etc/keepalived/mail.sh faild #当前节点因故障进入 fault 状态时触发 } ######测试systemctl restart keepalived.service收到 VIP 转移的邮件试验成功3.6.Keepalived 双主模式Keepalived 主机配置! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 } vrrp_instance WEB_VIP { state MASTER # 第二台 Keepalived 主机改为 BACKUP interface eth0 virtual_router_id 51 priority 100 # 第二台 Keepalived 主机改为 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } vrrp_instance DB_VIP { state BACKUP # 第二台 Keepalived 主机改为 MASTER interface eth0 virtual_router_id 52 priority 80 # 第二台 Keepalived 主机改为 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.160/24 dev eth0 label eth0:1 } }重启服务测试systemctl restart keepalived.service关闭一台 Keepalived 主机VIP 自动漂移到第二台 Keepalived 主机则有两个 VIP。systemctl stop keepalived.service四、Keepalived 高可用4.1.Keepalived LVS - DR 单主模式实验准备关闭所有主机的 SElinux 和 防火墙全都为 NAT 模式网卡client192.168.67.123ka-master192.168.67.100、VIP192.168.67.150ka-slave192.168.67.200、VIP192.168.67.150rs1192.168.67.10、VIP192.168.67.150rs2198.168.67.20、VIP192.168.67.150后端 rs 配置配置 nginx 服务、配置虚拟网卡添加 VIP、arp 抑制yum install nginx -y echo 192.168.67.10 /usr/share/nginx/html/index.html # 另一个主机配置自己的 IP 作为默认发布文件内容 systemctl enable --now nginx curl localhost# 两个主机都需要配置 VIP nmcli connection add type dummy ifname rstest ipv4.method manual ipv4.addresses 192.168.67.150/32 connection.autoconnect yes nmcli connection up dummy-rstest ip a# arp 抑制 echo net.ipv4.conf.all.arp_ignore 1 /etc/sysctl.conf echo net.ipv4.conf.rstest.arp_ignore 1 /etc/sysctl.conf echo net.ipv4.conf.all.arp_announce 2 /etc/sysctl.conf echo net.ipv4.conf.rstest.arp_announce 2 /etc/sysctl.conf sysctl -pKeppalived 主机配置安装 ipvsadm 工具、配置 Keepalived 实现后端检测和负载均衡yum install ipvsadm -y修改 Keepalived 配置文件vim /etc/keepalived/keepalived.conf ######## ! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 # 组播 } vrrp_instance WEB_VIP { state MASTER # 另一个主机设置为 BACKUP interface eth0 virtual_router_id 51 priority 100 # 另一个主机设置为 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } virtual_server 192.168.67.150 80 { # 类似于 ipvsadm -A 调度主机 delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.67.10 80 { # 类似于 ipvsadm -a 后端主机 weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 2 retry 3 delay_before_retry 3 } } real_server 192.168.67.20 80 { # 类似于 ipvsadm -a 后端主机 weight 1 TCP_CHECK { connect_timeout 2 retry 3 delay_before_retry 3 connect_port 80 } } } ######## systemctl restart keepalived.service验证查看 VIP在持有 VIP 的主机上查看 ipvs 策略客户端测试轮询结果4.2.Keepalived LVS - DR 双主模式实验准备关闭所有主机的 SElinux 和 防火墙全都为 NAT 模式网卡client192.168.67.123ka-master192.168.67.100/24、VIP1192.168.67.150/24、VIP2192.168.67.160/24ka-slave192.168.67.200/24、VIP1192.168.67.150/24、VIP2192.168.67.160/24rs1192.168.67.10/24、VIP1192.168.67.150/32、VIP2192.168.67.160/32rs2198.168.67.20/24、VIP1192.168.67.150/32、VIP2192.168.67.160/32VIP1 是提供 Nginx 服务的 VIPVIP2 是提供 Mariadb 服务的 VIP后端 rs 配置配置 nginx 服务安装软件、默认发布文件、测试配置虚拟网卡添加 VIP、arp 抑制yum install nginx -y echo 192.168.67.10 /usr/share/nginx/html/index.html # 另一个主机配置自己的 IP 作为默认发布文件内容 systemctl enable --now nginx curl localhost# 两个主机都需要配置 VIP nmcli connection add type dummy ifname rstest ipv4.method manual ipv4.addresses 192.168.67.150/32 connection.autoconnect yes nmcli connection add type dummy ifname dbtest ipv4.method manual ipv4.addresses 192.168.67.160/32 connection.autoconnect yes nmcli connection up dummy-rstest nmcli connection up dummy-dbtest ip a# arp 抑制 echo net.ipv4.conf.all.arp_ignore 1 /etc/sysctl.conf echo net.ipv4.conf.rstest.arp_ignore 1 /etc/sysctl.conf echo net.ipv4.conf.all.arp_announce 2 /etc/sysctl.conf echo net.ipv4.conf.rstest.arp_announce 2 /etc/sysctl.conf sysctl -p配置 Mariadb 服务安装软件、配置 server-id、授权用# 安装 mariadb yum install mariadb-server -y vim /etc/my.cnf.d/mariadb-server.cnf [mysqld] ... server-id10 # 添加此行注意两个主机的 id 需要不一致 ... systemctl enable --now mariadb mysql -e grant all on *.* to zyz% identified by zyz # 添加可远程登录的用户 # 测试远程登录 mysql mysql -uzyz -pzyz -h192.168.13.10 mysql -uzyz -pzyz -h192.168.13.20测试 mysql server_idKeppalived 主机配置安装 ipvsadm 工具、配置 Keepalived 实现后端检测和负载均衡yum install ipvsadm -y修改 Keepalived 配置文件双主模式需要配置两个 vrrp_instance 和两个 virtual_server一个提供 Web 服务一个提供 Mysql 服务。vim /etc/keepalived/keepalived.conf ######## ! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 # 组播 } vrrp_instance WEB_VIP { state MASTER # 另一个主机设置为 BACKUP interface eth0 virtual_router_id 51 priority 100 # 另一个主机设置为 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } } vrrp_instance DB_VIP { state BACKUP # 另一个主机设置为 MASTER interface eth0 virtual_router_id 52 priority 80 # 另一个主机设置为 100 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.160/24 dev eth0 label eth0:1 } } virtual_server 192.168.67.150 80 { # 提供 Web 服务的 VIP端口 80 delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.67.10 80 { # 提供 Web 服务的 RS1端口80 weight 1 HTTP_GET { url { path / status_code 200 } connect_timeout 2 retry 3 delay_before_retry 3 } } real_server 192.168.67.20 80 { # 提供 Web 服务的 RS2端口80 weight 1 TCP_CHECK { connect_timeout 2 retry 3 delay_before_retry 3 connect_port 80 } } } virtual_server 192.168.67.160 3306 { # 提供 Mysql 服务的 VIP端口 3306 delay_loop 6 lb_algo rr lb_kind DR protocol TCP real_server 192.168.67.10 3306 { # 提供 Mysql 服务的 RS1端口 3306 weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 5 connect_port 3306 } } real_server 192.168.67.20 3306 { # 提供 Mysql 服务的 RS2端口 3306 weight 1 TCP_CHECK { connect_timeout 10 retry 3 delay_before_retry 5 connect_port 3306 } } } ######## systemctl restart keepalived.service验证查看 VIP查看 ipvs 策略两个 Keepalived 主机都可查到客户端测试Web 结果客户端测试Mysql 结果4.3.Keepalived HAProxyVrrp脚本检测修改优先级实验准备关闭所有主机的 SElinux 和 防火墙全都为 NAT 模式网卡client192.168.67.123ka-master192.168.67.100/24、VIP192.168.67.150/24ka-slave192.168.67.200/24、VIP192.168.67.150/24rs1192.168.67.10/24rs2198.168.67.20/24Haproxy 实现后端检测和流量分发Keepalived 实现 HAProxy 的健康检测如果 HAProxy 故障通过 VRRP 健康检测脚本实现动态改变优先级实现 VIP 的漂移。Keepalived HAProxy 模式只能使用抢占模式和延迟抢占模式不适用于非抢占模式。后端 rs 配置配置 nginx 服务安装软件、默认发布文件、测试yum install nginx -y echo 192.168.67.10 /usr/share/nginx/html/index.html # 另一个主机配置自己的 IP 作为默认发布文件内容 systemctl enable --now nginx curl localhostKeepalived 主机配置 HAProxy 服务两个 Keepalived 主机都需配置 HAProxy 服务内容相同。yum install haproxy -y vim /etc/haproxy/haproxy.cfg # 除以下内容都注释掉 ########## global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats ssl-default-bind-ciphers PROFILESYSTEM ssl-default-server-ciphers PROFILESYSTEM defaults mode http log global option httplog option dontlognull option http-server-close option forwardfor except 127.0.0.0/8 option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen webcluster bind *:80 mode http balance roundrobin server web1 192.168.67.10:80 check inter 3 fall 2 rise 2 server web2 192.168.67.20:80 check inter 3 fall 2 rise 2 #############Keepalived 主机配置 Keepalived 服务mkdir /etc/keepalived/scrips/ cat /etc/keepalived/scrips/haproxy.sh EOF #!/bin/bash killall -0 haproxy /dev/null EOF chmod x /etc/keepalived/scrips/haproxy.sh vim /etc/keepalived/keepalived.conf ############# ! Configuration File for keepalived global_defs { notification_email { hahahaha.org } notification_email_from hahahaha.org smtp_server 127.0.0.0 smtp_connect_timeout 30 router_id ka-master vrrp_skip_check_adv_addr vrrp_garp_interval 1 vrrp_gna_interval 1 vrrp_mcast_group4 224.0.0.44 enable_script_security # 启用脚本安全检查机制 script_user root # 指定执行脚本时使用的用户身份为 root } vrrp_script TEST_CHECK { # 定义健康检查脚本 script /etc/keepalived/scrips/haproxy.sh # 脚本路径 interval 1 # 脚本执行间隔每1秒检查一次 weight -30 # 脚本返回值非 0 时当前节点优先级减少30 fall 2 # 连续失败2次后判定服务异常 rise 2 # 连续成功2次后判定服务恢复正常 timeout 2 # 脚本执行超时时间超过2秒视为执行失败 } vrrp_instance WEB_VIP { state MASTER # 第二台主机配置为 BACKUP interface eth0 virtual_router_id 51 priority 100 # 第二台主机配置为 80 advert_int 1 authentication { auth_type PASS auth_pass 1111 } virtual_ipaddress { 192.168.67.150/24 dev eth0 label eth0:0 } track_script { # 关联健康检查脚本 TEST_CHECK # 引用上面定义的 TEST_CHECK 脚本监控haproxy 状态 } unicast_src_ip 192.168.67.100 # 单播配置源 IP第二台主机配置为本机 IP unicast_peer { 192.168.67.200 # 单播配置目标 IP第二台主机配置为对方 IP } } ############# echo net.ipv4.ip_nonlocal_bind 1 /etc/sysctl.conf sysctl -p systemctl start keepalived.service systemctl enable --now keepalived.service systemctl start haproxy systemctl enable --now haproxy测试持有 VIP 的主机查看单播情况可以看到 vrid 51 的优先级是 100.在此主机上关闭 HAProxy 服务Keepalived 检测到 HAProxy 故障运用脚本降低此主机的优先级为 70。再开启此主机上的 HAProxy 服务可以看到优先级恢复为 100。在以上的操作过程中client 客户端访问 VIPWeb 服务不停滞客户端感受不到服务的故障实现了高可用。五、总结LVS KeepalivedLVS 本身是内核态的负载均衡模块工作在 TCP/IP 协议栈的传输层但它的管理和后端健康检查依赖 Keepalived实现。Keepalived 不仅负责 LVS 的主备高可用VIP 漂移还内置了对后端 RS 的健康检查如 ICMP、TCP 端口检测并能动态调整 LVS 的路由表通过 ipvsadm 接口。简单说Keepalived 是 “大脑”既管高可用又管后端检测和指挥 LVS 做流量分发LVS 更像 “执行器”只负责按 Keepalived 的规则转发流量。HAProxy KeepalivedHAProxy 是用户态的负载均衡软件工作在应用层自带完整的流量分发逻辑支持 HTTP/HTTPS 等七层规则和后端 RS 健康检查更精细如 URL 返回码检测。此时 Keepalived 的作用被简化仅负责 HAProxy 的主备高可用监控 HAProxy 进程状态通过优先级调整实现 VIP 漂移不参与流量分发和后端检测。简单说HAProxy 是 “全能选手”自己管流量分发和后端检测Keepalived 只当 “保镖”确保 HAProxy 本身不单点故障。底层核心差异 LVS 与 Keepalived 的耦合度更高Keepalived 原生支持 LVS 配置而 HAProxy 是独立的负载均衡器Keepalived 仅为其提供高可用保障。这种差异导致 LVS 方案更适合四层高性能场景HAProxy 方案更适合七层复杂规则场景。