Keepalived 原理及配置(高可用)

一、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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44
}
vrrp_instance VI_1 {state MASTER                # slave 主机设置为 BACKUPinterface eth0virtual_router_id 51priority 100                # 优先级,slave 主机设置为 80advert_int 1authentication {auth_type PASSauth_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 eth0virtual_router_id 51priority 100                # 优先级,另一台主机设置为 80nopreempt                   # 在抢占模式的基础上,添加此条,实现非抢占模式advert_int 1authentication {auth_type PASSauth_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                # 延迟抢占模式两台主机都为 BACKUPinterface eth0virtual_router_id 51priority 100                # slave 主机优先级 80preempt_delay 10            # 延迟时间配置,默认时间单位 s,不用加 sadvert_int 1authentication {auth_type PASSauth_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 BACKUPinterface eth0virtual_router_id 51priority 100preempt_delay 10advert_int 1authentication {auth_type PASSauth_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 inmaster)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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addr# vrrp_strictvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44enable_script_security               # 启用脚本安全机制,限制健康检查脚本的执行权限script_user root                     # 指定健康检查脚本的执行用户为 root
}
vrrp_instance VI_1 {state BACKUPinterface eth0virtual_router_id 51priority 100preempt_delay 10advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.67.150/24 dev eth0 label eth0:0}unicast_src_ip 192.168.67.100unicast_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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44
}
vrrp_instance WEB_VIP {state MASTER                    # 第二台 Keepalived 主机改为 BACKUPinterface eth0virtual_router_id 51priority 100                    # 第二台 Keepalived 主机改为 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.67.150/24 dev eth0 label eth0:0}
}
vrrp_instance DB_VIP {state BACKUP                    # 第二台 Keepalived 主机改为 MASTERinterface eth0virtual_router_id 52        priority 80                     # 第二台 Keepalived 主机改为 100advert_int 1authentication {auth_type PASSauth_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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44             # 组播
}
vrrp_instance WEB_VIP {state MASTER                            # 另一个主机设置为 BACKUPinterface eth0virtual_router_id 51priority 100                            # 另一个主机设置为 80advert_int 1authentication {auth_type PASSauth_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 6lb_algo rrlb_kind DRprotocol TCPreal_server 192.168.67.10 80 {          # 类似于 ipvsadm -a 后端主机weight 1HTTP_GET {url {path /status_code 200}connect_timeout 2retry 3delay_before_retry 3}}real_server 192.168.67.20 80 {          # 类似于 ipvsadm -a 后端主机weight 1TCP_CHECK {connect_timeout 2retry 3delay_before_retry 3connect_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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44                 # 组播
}
vrrp_instance WEB_VIP {state MASTER                                # 另一个主机设置为 BACKUPinterface eth0virtual_router_id 51priority 100                                # 另一个主机设置为 80advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.67.150/24 dev eth0 label eth0:0}
}
vrrp_instance DB_VIP {state BACKUP                                # 另一个主机设置为 MASTERinterface eth0virtual_router_id 52priority 80                                 # 另一个主机设置为 100advert_int 1authentication {auth_type PASSauth_pass 1111}virtual_ipaddress {192.168.67.160/24 dev eth0 label eth0:1}
}
virtual_server 192.168.67.150 80 {              # 提供 Web 服务的 VIP,端口 80delay_loop 6lb_algo rrlb_kind DRprotocol TCP
​real_server 192.168.67.10 80 {              # 提供 Web 服务的 RS1,端口80weight 1HTTP_GET {url {path /status_code 200}connect_timeout 2retry 3delay_before_retry 3}}real_server 192.168.67.20 80 {              # 提供 Web 服务的 RS2,端口80weight 1TCP_CHECK {connect_timeout 2retry 3delay_before_retry 3connect_port 80}}
}
virtual_server 192.168.67.160 3306 {            # 提供 Mysql 服务的 VIP,端口 3306delay_loop 6lb_algo rrlb_kind DRprotocol TCP
​real_server 192.168.67.10 3306 {            # 提供 Mysql 服务的 RS1,端口 3306weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 5connect_port 3306}}real_server 192.168.67.20 3306 {            # 提供 Mysql 服务的 RS2,端口 3306weight 1TCP_CHECK {connect_timeout 10retry 3delay_before_retry 5connect_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
# 除以下内容都注释掉
##########
globallog         127.0.0.1 local2chroot      /var/lib/haproxypidfile     /var/run/haproxy.pidmaxconn     4000user        haproxygroup       haproxydaemonstats socket /var/lib/haproxy/statsssl-default-bind-ciphers PROFILE=SYSTEMssl-default-server-ciphers PROFILE=SYSTEM
defaultsmode                    httplog                     globaloption                  httplogoption                  dontlognulloption http-server-closeoption forwardfor       except 127.0.0.0/8option                  redispatchretries                 3timeout http-request    10stimeout queue           1mtimeout connect         10stimeout client          1mtimeout server          1mtimeout http-keep-alive 10stimeout check           10smaxconn                 3000
listen webclusterbind    *:80mode    httpbalance roundrobinserver web1 192.168.67.10:80 check inter 3 fall 2 rise 2server 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.orgsmtp_server 127.0.0.0smtp_connect_timeout 30router_id ka-mastervrrp_skip_check_adv_addrvrrp_garp_interval 1vrrp_gna_interval 1vrrp_mcast_group4 224.0.0.44enable_script_security           # 启用脚本安全检查机制script_user root                 # 指定执行脚本时使用的用户身份为 root
}
vrrp_script TEST_CHECK {                        # 定义健康检查脚本script "/etc/keepalived/scrips/haproxy.sh"  # 脚本路径interval 1                                  # 脚本执行间隔,每1秒检查一次weight -30                                  # 脚本返回值非 0 时,当前节点优先级减少30fall 2                                      # 连续失败2次后,判定服务异常rise 2                                      # 连续成功2次后,判定服务恢复正常timeout 2                                   # 脚本执行超时时间,超过2秒视为执行失败
}
vrrp_instance WEB_VIP {state MASTER                                # 第二台主机配置为 BACKUPinterface eth0virtual_router_id 51priority 100                                # 第二台主机配置为 80advert_int 1authentication {auth_type PASSauth_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,第二台主机配置为本机 IPunicast_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 方案更适合七层复杂规则场景。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/news/916128.shtml
繁体地址,请注明出处:http://hk.pswp.cn/news/916128.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

从代码混乱到井然有序:飞算JavaAI的智能治理之道

文章目录一、前言二、飞算JavaAI平台三、飞算JavaAI安装流程3.1 Idea安装配置3.2 官网注册登入四、飞算JavaAI独特魅力:合并项目场景4.1 ERP老项目精准翻新&#xff1a;保留核心逻辑的智能改造方案4.2 智能合并&#xff1a;重构ERP系统的代码迷宫4.3 ERP接口智能导航&#xff1…

iOS打开开发者模式

启用开发者模式的方法在iOS设备上启用开发者模式通常需要连接Xcode或通过设置手动开启&#xff0c;以下是具体步骤&#xff1a;通过Xcode启用将iOS设备通过USB线连接到Mac电脑。打开Xcode&#xff08;需提前安装&#xff09;。在Xcode的菜单栏中选择 Window > Devices and S…

leetcode101.对称二叉树树(递归练习题)

文章目录一、 题目描述二、 核心思路&#xff1a;判断左右子树是否互为镜像三、 递归的终止条件 (Base Cases)四、 代码实现与深度解析五、 关键点与复杂度分析六、 总结与对比 (LC100 vs LC101)LeetCode 101. 对称二叉树 - 力扣【难度&#xff1a;简单&#xff1b;通过率&…

【国内电子数据取证厂商龙信科技】谁是躲在“向日葵”后的

一、前言大家可能每天都在使用在远控软件&#xff0c;我们在享受远控软件带来的便利同时&#xff0c;犯罪者也在使用远控软件进行违法犯罪活动&#xff0c;以达到隐藏自己的目的。市面上常用的远控软件有“向日葵”、“TeamViewer”。二、案件背景在一次电信诈骗案件支援中&…

SAP-PP-MRPLIST

MRP(物料需求计划)分析功能,主要包含以下要点: 程序通过选择工厂和物料/销售订单范围作为输入条件,支持两种展示方式:ALV表格和树形结构 核心功能包括: 物料主数据查询(MAKT/MARA表) 销售订单数据查询(VBAP表) BOM展开(CS_BOM_EXPL_MAT_V2函数) MRP数据获取(MA…

MIT线性代数01_方程组的几何解释

Linear Algebra Lecture #1 W. Gilbert Strangn linear equations, n unknowns row picturecol pictureMatrix form {2x−y0−x2y3 \left\{\begin{matrix} 2x - y 0 \\ -x 2y 3 \end{matrix}\right. {2x−y0−x2y3​ 1 Row Picture2 Column PictureWhat are all combination…

FreeRTOS-中断管理

学习内容中断概念中断是计算机系统中一种重要的事件驱动机制&#xff0c;用于在特定条件下打断正在执行的程序&#xff0c;并跳转到预定义的中断处理程序中执行特定的操作。当发生中断时&#xff0c;处理器会立即中止当前正在执行的指令&#xff0c;保存当前的执行状态&#xf…

图像梯度处理与边缘检测

在图像处理的世界里&#xff0c;我们常常需要从复杂的像素矩阵中提取有意义的信息 —— 比如一张照片中物体的轮廓、医学影像中病灶的边界、自动驾驶视野里的道路边缘。这些 “边界” 或 “轮廓” 在专业术语中被称为 “边缘”&#xff0c;而捕捉边缘的核心技术&#xff0c;离不…

GPU服务器与PC 集群(PC农场):科技算力双子星

在数字经济高速发展的今天&#xff0c;算力已成为驱动科技创新与产业变革的核心引擎。GPU服务器凭借其强大的并行计算能力&#xff0c;在图形渲染、人工智能训练等领域展现出不可替代的优势&#xff1b;而PC集群则通过分布式架构&#xff0c;以高性价比和灵活扩展特性&#xff…

秋招Day19 - 分布式 - 分布式锁

单体时代&#xff0c;可以直接用本地锁来实现对竞争资源的加锁&#xff0c;分布式环境下就要用到分布式锁了有哪些分布式锁的实现方案&#xff1f;MySQL分布式锁、Zookeeper分布式锁、Redis分布式锁MySQL分布式锁如何实现&#xff1f;创建一张锁表&#xff0c;对字段定义唯一性…

AIStarter平台亮点解析:从ComfyUI项目上架到一键运行的完整指南

大家好&#xff01;今天分享一个AIStarter平台的深度体验&#xff0c;带你了解如何通过这个平台轻松上架和运行AI项目&#xff01;视频中&#xff0c;博主在凌晨分享了AIStarter的强大功能&#xff0c;重点展示了ComfyUI 4.0和5.0整合包的上架过程&#xff0c;以及如何简化AI项…

电脑录屏软件推荐:如何使用oCam录制游戏、教程视频

在工作、学习或游戏过程中&#xff0c;我们经常需要录制电脑屏幕&#xff0c;比如制作教程视频、记录游戏操作、分享软件使用过程等。oCam 是一款功能强大且操作简单的屏幕录制工具&#xff0c;支持 Windows 系统&#xff0c;深受用户喜爱。今天简鹿办公就来手把手教你如何使用…

安装cuml报错

安装命令 &#xff08;注意cuda的版本&#xff09; pip install --no-cache-dir --extra-index-urlhttps://pypi.nvidia.com cuml-cu11 报错&#xff1a; 找了很多网上的教程 1.版本问题 没解决 pip install --upgrade pip pip install --upgrade setuptools 2.参考下面博…

【ECharts✨】解决Vue 中 v-show 导致组件 ECharts 样式异常问题

解决Vue 中 v-show 导致组件 ECharts 样式异常问题 问题概述 在使用 Vue 的 v-show 指令实现 <PageOne/>、<PageTwo/>、<PageThree/> 三个视图的定时切换时&#xff0c;<PageTwo/> 显示时出现了异常&#xff0c;具体表现为 ECharts 图表渲染图表尺寸异…

旅游管理虚拟仿真实训室:重构实践教学新生态

在旅游产业数字化转型与教育信息化深度融合的背景下&#xff0c;旅游管理虚拟仿真实训室成为连接理论教学与行业实践的关键纽带。它通过沉浸式技术还原旅游场景&#xff0c;解决传统实训中资源受限、风险较高、时空局限等问题&#xff0c;为旅游管理专业人才培养提供全新路径。…

【在线五子棋对战】十、对战玩家匹配管理模块

文章目录前言Ⅰ. 匹配队列实现Ⅱ. 匹配队列管理类实现完整代码前言 五子棋对战的玩家匹配是根据自己的天梯分数进行匹配的&#xff0c;而服务器中将玩家天梯分数分为三个档次&#xff1a; 青铜&#xff1a;天梯分数小于 2000 分白银&#xff1a;天梯分数介于 2000~3000 分之间…

k8s之ingress定义https访问方式

接上文&#xff1a;https://blog.csdn.net/soso678/article/details/149607069?spm1001.2014.3001.5502定义后端应用与service [rootmaster ingress]# cat my-nginx.yml apiVersion: apps/v1 kind: Deployment metadata:name: my-nginx spec:selector:matchLabels:run: my-n…

《C++ vector 完全指南:vector的模拟实现》

《C vector 完全指南&#xff1a;vector的模拟实现》 文章目录《C vector 完全指南&#xff1a;vector的模拟实现》一、定义vector的成员变量二、用vector实现动态二维数组三、vector的接口实现1.vector的默认成员函数&#xff08;1&#xff09;构造函数实现&#xff08;2&…

腾讯云代码助手使用指南

腾讯云代码助手使用指南什么是腾讯云代码助手功能区展示功能介绍功能演示一、创建新项目1.先用Chat 把口语化的需求转换成AI更容易接受的结构化提示词2.再用Craft 模式进行代码生成3.成果展示二、老项目探索1.使用Codebase 帮理解项目代码三、代码补全1.只需输入标准的函数名&a…

【vue3+vue-pdf-embed】实现PDF+图片预览

【vue3vue-pdf-embed】实现PDF图片预览项目背景项目代码分析代码项目背景 技术栈&#xff1a;vue3Tselementplus 需要实现PDF和图片预览 图片预览很好解决了&#xff0c;可以用elementplus 自带的组件el-image 可实现 PDF预览可以用搜了一圈&#xff0c;有两个方案&#xff0c…