LVS负载均衡集群实战:DR模式部署与Keepalived高可用配置

LVS(Linux Virtual Server)是Linux内核自带的负载均衡方案,转发性能远超Nginx等应用层代理,常用于高并发Web、接口网关等场景。本文以DR模式为主线,从网络规划、节点配置到Keepalived整合与故障切换验证,给出完整的服务器集群部署过程,配置在Rocky Linux 9上可验证执行。

LVS三种工作模式对比:NAT、DR与TUN

模式 转发方式 后端要求 适用场景
NAT 改写IP与端口,响应经负载均衡器回传 无特殊要求 后端规模小、同网段
DR 改写MAC地址转发,响应直连客户端 后端绑定VIP并抑制ARP 高吞吐Web集群,同二层网络
TUN IP隧道封装转发 内核支持隧道 跨网段、跨机房集群

生产环境最常用DR模式:入站请求经过负载均衡器,出站响应由RealServer直接发回客户端,均衡器只处理一半流量,单点瓶颈被大幅压缩。

DR模式网络规划与集群IP分配

以两台均衡器加两台RealServer为例:

主负载均衡器:192.168.10.11     VIP: 192.168.10.100
备负载均衡器:192.168.10.12     VIP: 192.168.10.100
RealServer1 :192.168.10.20
RealServer2 :192.168.10.22

VIP需要同时绑定在负载均衡器和所有RealServer上,RealServer的VIP只配在回环接口,通过ARP抑制保证不对外响应,避免VIP冲突。

RealServer节点配置:VIP绑定与ARP抑制

每台RealServer绑定回环地址并调整ARP内核参数,让VIP对客户端不可见:

# 在RealServer上执行
ip addr add 192.168.10.100/32 dev lo
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce

# 写入开机自启
cat >> /etc/rc.local <<'EOF'
ip addr add 192.168.10.100/32 dev lo
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce
EOF
chmod +x /etc/rc.d/rc.local

arp_ignore=1表示只响应本机网卡地址的ARP请求;arp_announce=2表示ARP应答源地址使用发送网卡的IP。两个参数配合,RealServer不会暴露自己的VIP,客户端的请求只会到达负载均衡器。

主节点安装与ipvsadm转发规则配置

yum install -y ipvsadm keepalived

# 配置转发规则:DR模式(-g),加权轮询(wrr)
ipvsadm -A -t 192.168.10.100:80 -s wrr
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.20:80 -g -w 2
ipvsadm -a -t 192.168.10.100:80 -r 192.168.10.22:80 -g -w 1
ipvsadm -S

-g指定DR模式,-w设置节点权重。调度算法按场景选择:后端配置均衡用rr,差异用wrr,长连接用lc,后端性能参差不齐用wlc。HTTP短连接集群默认wrr足够。

Keepalived配置:VIP漂移与后端健康检查

keepalived负责两件事:VRRP心跳实现主备切换,健康检查摘除故障节点。主节点配置:

global_defs {
    router_id LVS_MASTER
}

vrrp_instance VI_1 {
    state MASTER
    interface ens33
    virtual_router_id 55
    priority 100
    advert_int 1
    authentication {
        auth_type PASS
        auth_pass KEEPALIVED
    }
    virtual_ipaddress {
        192.168.10.100/24 dev ens33
    }
}

virtual_server 192.168.10.100 80 {
    delay_loop 6
    lb_algo wrr
    lb_kind DR
    protocol TCP

    real_server 192.168.10.20 80 {
        weight 2
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            connect_port 80
        }
    }
    real_server 192.168.10.22 80 {
        weight 1
        TCP_CHECK {
            connect_timeout 3
            nb_get_retry 3
            connect_port 80
        }
    }
}

备份节点配置与主节点基本相同,state改为BACKUP、priority降低到90。主节点宕机后,备份节点在心跳超时内接管VIP,并通过keepalived重新下发ipvs规则。

故障切换验证与集群压测

# 主节点停keepalived模拟故障
systemctl stop keepalived
# 在备份节点观察VIP是否接管
ip addr | grep 192.168.10.100
ipvsadm -L

# 压测验证
ab -n 100000 -c 2000 http://192.168.10.100/

验证要点:主节点掉电后VIP漂移时长是否在预期内;一台节点故障后,请求是否只转发到存活节点;恢复后权重调度是否自动归位。这套检查纳入月度演练,切换演练不能跳过。

整套方案落地后,负载均衡器单点故障切换在秒级完成。DR模式要求均衡器与后端在同一二层网络内,跨VLAN场景改用TUN或网关模式;后端业务做健康检查接口,不要用TCP_CHECK裸探端口,检查到业务层才能保证摘除的准确性。

原创文章,作者:小编,如若转载,请注明出处:https://www.yunthe.com/lvs-fu-zai-jun-heng-ji-qun-shi-zhan-dr-mo-shi-bu-shu-yu/

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

相关推荐