news 2026/8/7 19:29:21

Keepalived 原理及配置(高可用)

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
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 + HAProxy(Vrrp)脚本检测修改优先级

五、总结

一、Keepalived 原理

  • keepalived 基于 VRRP(虚拟路由冗余协议)实现高可用。

  • 核心原理是通过竞选机制在多台服务器(主 / 备节点)中选举出一台主节点承担服务,同时备节点持续监控主节点状态:主节点正常时,通过组播发送 VRRP 通告消息宣告存活,独占虚拟 IP(VIP)对外提供服务;

  • 当主节点故障(如服务中断、网络异常),备节点因超时未收到通告,会触发重新竞选,优先级最高的备节点升级为主节点并接管 VIP,实现服务无缝切换,确保业务不中断。

  • 此外,keepalived 还支持健康检查(如检测端口、URL 状态),可更精准判断服务可用性。

VRRP 原理

  • VRRP(虚拟路由冗余协议)是一种实现路由冗余的协议,核心是通过将多台物理路由器组成一个 “虚拟路由器”,对外提供统一的虚拟 IP(VIP)和虚拟 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.log

2.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.100

  • ka-slave 主机:192.168.67.200

  • rs1主机:192.168.13.10

  • rs2 主机:192.168.13.20

keepalived 主机配置

# 时间同步 # 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 { haha@haha.org } notification_email_from haha@haha.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.44

master 的主机会发送组播消息,告诉 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.service

master 没有 VIP,VIP 漂移到 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.200

3.5.Keepalived 邮件告警

Keepalived 下载软件

注意:Keepalived 主机的主机名要是域名的模式,这样发邮件才不会被卡住。

# 配置主机名 hostnamectl set-hostname ka-master.zyz.org ​ # 下载软件 dnf install s-nail sendmail -y ​ vim /etc/mail.rc ###### set from=zhaoyz0911@163.com set smtp=smtp.163.com set smtp-auth-user=zhaoyz0911@163.com set smtp-auth-password=QXbQYU3c48EWe8Ch # 此验证码要到邮箱里开启 POP3 并获得 set smtp-auth=login set ssl-verify=ignore ###### ​ systemctl restart sendmail.service netstat -antlupe | grep 25

# 测试邮件是否可以发出 echo hello | mailx -s test zhaoyz0911@163.com

邮箱收到此邮件

vim /etc/keepalived/mail.sh ###### #!/bin/bash mail_dest='zhaoyz0911@163.com' ​ mail_send() { mail_subj="$HOSTNAME to be $1 vip 转移" mail_mess="`date +%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 { haha@haha.org } notification_email_from haha@haha.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 { haha@haha.org } notification_email_from haha@haha.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 模式网卡

  • client:192.168.67.123

  • ka-master:192.168.67.100、VIP:192.168.67.150

  • ka-slave:192.168.67.200、VIP:192.168.67.150

  • rs1:192.168.67.10、VIP:192.168.67.150

  • rs2:198.168.67.20、VIP:192.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 -p

Keppalived 主机配置

安装 ipvsadm 工具、配置 Keepalived 实现后端检测和负载均衡

yum install ipvsadm -y

修改 Keepalived 配置文件

vim /etc/keepalived/keepalived.conf ######## ! Configuration File for keepalived ​ global_defs { notification_email { haha@haha.org } notification_email_from haha@haha.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 模式网卡

  • client:192.168.67.123

  • ka-master:192.168.67.100/24、VIP1:192.168.67.150/24、VIP2:192.168.67.160/24

  • ka-slave:192.168.67.200/24、VIP1:192.168.67.150/24、VIP2:192.168.67.160/24

  • rs1:192.168.67.10/24、VIP1:192.168.67.150/32、VIP2:192.168.67.160/32

  • rs2:198.168.67.20/24、VIP1:192.168.67.150/32、VIP2:192.168.67.160/32

(VIP1 是提供 Nginx 服务的 VIP,VIP2 是提供 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-id=10 # 添加此行,注意两个主机的 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_id

Keppalived 主机配置

安装 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 { haha@haha.org } notification_email_from haha@haha.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 + HAProxy(Vrrp)脚本检测修改优先级

实验准备:关闭所有主机的 SElinux 和 防火墙,全都为 NAT 模式网卡

  • client:192.168.67.123

  • ka-master:192.168.67.100/24、VIP:192.168.67.150/24

  • ka-slave:192.168.67.200/24、VIP:192.168.67.150/24

  • rs1:192.168.67.10/24

  • rs2:198.168.67.20/24

Haproxy 实现后端检测和流量分发,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 localhost

Keepalived 主机配置 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 PROFILE=SYSTEM ssl-default-server-ciphers PROFILE=SYSTEM 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 { haha@haha.org } notification_email_from haha@haha.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 客户端访问 VIP,Web 服务不停滞,客户端感受不到服务的故障,实现了高可用。


五、总结

  1. LVS + Keepalived

    • LVS 本身是内核态的负载均衡模块(工作在 TCP/IP 协议栈的传输层),但它的管理和后端健康检查依赖 Keepalived实现。

    • Keepalived 不仅负责 LVS 的主备高可用(VIP 漂移),还内置了对后端 RS 的健康检查(如 ICMP、TCP 端口检测),并能动态调整 LVS 的路由表(通过 ipvsadm 接口)。

    • 简单说:Keepalived 是 “大脑”,既管高可用,又管后端检测和指挥 LVS 做流量分发;LVS 更像 “执行器”,只负责按 Keepalived 的规则转发流量。

  2. HAProxy + Keepalived

    • HAProxy 是用户态的负载均衡软件(工作在应用层),自带完整的流量分发逻辑(支持 HTTP/HTTPS 等七层规则)和后端 RS 健康检查(更精细,如 URL 返回码检测)。

    • 此时 Keepalived 的作用被简化:仅负责 HAProxy 的主备高可用(监控 HAProxy 进程状态,通过优先级调整实现 VIP 漂移),不参与流量分发和后端检测。

    • 简单说:HAProxy 是 “全能选手”,自己管流量分发和后端检测;Keepalived 只当 “保镖”,确保 HAProxy 本身不单点故障。

底层核心差异: LVS 与 Keepalived 的耦合度更高(Keepalived 原生支持 LVS 配置),而 HAProxy 是独立的负载均衡器,Keepalived 仅为其提供高可用保障。这种差异导致 LVS 方案更适合四层高性能场景,HAProxy 方案更适合七层复杂规则场景。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/8/7 19:28:36

Tox21毒性预测案例:Chainer Chemistry多任务学习最佳实践

Tox21毒性预测案例&#xff1a;Chainer Chemistry多任务学习最佳实践 【免费下载链接】chainer-chemistry Chainer Chemistry: A Library for Deep Learning in Biology and Chemistry 项目地址: https://gitcode.com/gh_mirrors/ch/chainer-chemistry Chainer Chemistr…

作者头像 李华
网站建设 2026/8/7 19:21:23

如何让Firefox性能飙升47%:3个颠覆性技巧告别卡顿

如何让Firefox性能飙升47%&#xff1a;3个颠覆性技巧告别卡顿 【免费下载链接】Betterfox Firefox user.js for optimal privacy and security. Your favorite browser, but better. 项目地址: https://gitcode.com/GitHub_Trending/be/Betterfox 还在为Firefox启动慢如…

作者头像 李华
网站建设 2026/8/7 19:19:00

​ ⛳️赠与读者[特殊字符]第一部分——内容介绍基于DPWMA调制与正负序分离的ANPC三电平并网逆变器前馈控制策略研究摘要针对传统三电平并网逆变器谐波含量高、电网不平衡工况适应性差

&#x1f4a5;&#x1f4a5;&#x1f49e;&#x1f49e;欢迎来到本博客❤️❤️&#x1f4a5;&#x1f4a5; &#x1f3c6;博主优势&#xff1a;&#x1f31e;&#x1f31e;&#x1f31e;博客内容尽量做到思维缜密&#xff0c;逻辑清晰&#xff0c;为了方便读者。 &#x1f381…

作者头像 李华