高可用集群Keepalived+LVS双机热备配置实战指南

高可用集群是服务器运维中保障业务连续性的核心架构。Keepalived基于VRRP协议实现VIP漂移,配合LVS(Linux Virtual Server)做负载均衡,可以在主节点宕机时实现1-3秒内自动切换到备节点。本教程在CentOS 9 / Rocky Linux 9环境下搭建完整的双机热备负载均衡集群。

服务器高可用集群架构规划与环境准备

典型的双机热备架构包含两台调度器和多台后端真实服务器(RS)。调度器对外暴露VIP(Virtual IP),内部通过LVS-DR模式将请求转发到后端RS。

网络规划示例:

# 调度器1 (MASTER)
内网IP: 192.168.1.10
# 调度器2 (BACKUP)
内网IP: 192.168.1.11
# VIP
192.168.1.100
# 后端RS
192.168.1.20 (Nginx Web)
192.168.1.21 (Nginx Web)
192.168.1.22 (Nginx Web)

在所有节点安装必要软件包:

yum install -y keepalived ipvsadm
# 确认内核已加载IPVS模块
lsmod | grep ip_vs
# 如果没有加载,执行
modprobe ip_vs
modprobe ip_vs_rr
modprobe ip_vs_wrr

LVS-DR模式工作原理与网络配置

DR(Direct Routing)模式中,调度器只处理入站流量,后端RS直接将响应返回给客户端,调度器不成为流量瓶颈。要求调度器和RS在同一物理网络段,且RS需要在lo接口配置VIP。

后端RS上的网络配置(三台RS都需要执行):

cat > /etc/sysconfig/network-scripts/ifcfg-lo:0 << 'EOF'
DEVICE=lo:0
IPADDR=192.168.1.100
NETMASK=255.255.255.255
ONBOOT=yes
EOF

systemctl restart network

# 抑制ARP响应,防止ARP冲突
cat >> /etc/sysctl.conf << 'EOF'
net.ipv4.conf.all.arp_ignore = 1
net.ipv4.conf.all.arp_announce = 2
net.ipv4.conf.lo.arp_ignore = 1
net.ipv4.conf.lo.arp_announce = 2
EOF

sysctl -p

arp_ignore设为1表示仅当目标IP配置在入站接口上才回应ARP请求;arp_announce设为2表示始终使用最佳本地地址作为ARP请求源地址。这两个参数是DR模式正常工作的关键。

Keepalived主调度器配置详解

主调度器(MASTER)的Keepalived配置文件位于/etc/keepalived/keepalived.conf:

global_defs {
router_id LVS_MASTER
enable_script_security
script_user root
}

vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass MyPass123
}
virtual_ipaddress {
192.168.1.100/24
}
}

virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wrr
lb_kind DR
persistence_timeout 50
protocol TCP

real_server 192.168.1.20 80 {
weight 10
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.1.21 80 {
weight 10
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}

real_server 192.168.1.22 80 {
weight 10
TCP_CHECK {
connect_port 80
connect_timeout 3
nb_get_retry 3
delay_before_retry 3
}
}
}

delay_loop 6表示每6秒检查一次后端RS健康状态。lb_algo wrr使用加权轮询算法。persistence_timeout 50设置50秒会话保持,同一客户端IP的请求在超时时间内转发到同一RS,这对需要会话的应用很关键。

备调度器配置与VRRP优先级调优

备调度器(BACKUP)的配置与MASTER几乎相同,区别在于state和priority:

vrrp_instance VI_1 {
state BACKUP
interface eth0
virtual_router_id 51
priority 90 # 低于MASTER的100
advert_int 1
authentication {
auth_type PASS
auth_pass MyPass123
}
virtual_ipaddress {
192.168.1.100/24
}
}

virtual_router_id必须在主备一致(这里都是51),同一网段内不同VRRP组的router_id不能冲突。priority值的范围是0-255,MASTER必须高于BACKUP。当MASTER宕机恢复后,priority 100 > 90会重新抢占VIP,实现故障恢复自动回切。

如果不希望恢复后抢占(避免切换抖动),可以添加nopreempt选项,但需要将state都设为BACKUP,通过priority决定谁是主。

健康检查脚本与故障切换验证

除了TCP_CHECK,还可以使用自定义脚本做应用层健康检查。例如检测HTTP返回码:

vrrp_script chk_nginx {
script "/etc/keepalived/check_nginx.sh"
interval 2
weight -20
fall 2
rise 1
}

check_nginx.sh脚本内容:

#!/bin/bash
if [ $(curl -s -o /dev/null -w "%{http_code}" http://127.0.0.1/) -ne 200 ]; then
exit 1
fi
exit 0

weight -20表示当脚本失败时,priority降低20。MASTER原本priority 100,降为80后低于BACKUP的90,触发VIP切换。fall 2表示连续2次失败才判定异常,rise 1表示1次成功即恢复。

验证故障切换的命令操作:

# 在主调度器上查看VRRP状态
systemctl status keepalived

# 查看VIP绑定
ip addr show eth0 | grep 192.168.1.100

# 查看LVS转发规则
ipvsadm -Ln

# 模拟主节点宕机测试切换
systemctl stop keepalived

# 在备节点上确认VIP已漂移
ip addr show eth0 | grep 192.168.1.100

高可用集群监控告警体系配置

基于Keepalived的自带通知机制,可以在状态切换时发送告警邮件或调用webhook:

vrrp_instance VI_1 {
state MASTER
...
notify_master "/etc/keepalived/notify.sh master"
notify_backup "/etc/keepalived/notify.sh backup"
notify_fault "/etc/keepalived/notify.sh fault"
}

notify.sh脚本可以发送钉钉或企业微信告警:

#!/bin/bash
STATE=$1
HOST=$(hostname)
TIME=$(date "+%Y-%m-%d %H:%M:%S")
MSG="${TIME} ${HOST} Keepalived切换到 ${STATE} 状态"

curl -s -X POST "https://qyapi.weixin.qq.com/cgi-bin/webhook/send?key=YOUR_KEY" \
-H 'Content-Type: application/json' \
-d "{"msgtype":"text","text":{"content":"${MSG}"}}"

结合Prometheus + node_exporter的Blackbox Exporter可以做更完善的监控。对VIP的HTTP探测间隔建议设为5秒,连续3次失败触发告警。监控指标包括VRRP状态、LVS连接数、RS健康状态、切换次数等。切换次数是衡量集群稳定性的重要指标,频繁切换通常意味着网络不稳定或健康检查阈值设置过敏感。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/gao-ke-yong-ji-qun-keepalivedlvs-shuang-ji-re-bei-pei-zhi/

(0)
小编小编
上一篇 17小时前
下一篇 17小时前

相关推荐