1. LVS-NAT负载均衡架构解析
IPVS(IP Virtual Server)作为Linux内核的核心模块,自2.4版本起就集成在主流发行版中。它通过netfilter框架在INPUT链前截获流量,相比应用层代理(如Nginx)能减少两次上下文切换和三次数据拷贝。NAT模式特别适合客户端与真实服务器不在同一网段的场景,比如跨机房流量调度。
1.1 核心组件交互流程
典型数据包路径示例:
- 客户端(CIP: 192.168.1.100)请求VIP 10.0.0.1:80
- LVS修改目标地址为RIP 172.16.0.2:80
- Real Server处理后将源地址改为VIP返回
- LVS将源地址还原为VIP
关键内核参数:
bash复制# 开启IP转发
echo 1 > /proc/sys/net/ipv4/ip_forward
# 关闭ICMP重定向(避免干扰路由)
echo 0 > /proc/sys/net/ipv4/conf/all/send_redirects
1.2 会话保持机制对比
| 类型 | 实现方式 | 适用场景 | 缺点 |
|---|---|---|---|
| 源地址哈希 | ip_vs_sh调度算法 | 固定客户端访问 | 代理服务器会失效 |
| Cookie插入 | -p tcp -s persistent | HTTP应用 | 需要应用层支持 |
| 时间窗口 | --expire 3600 | 短连接业务 | 可能造成会话中断 |
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 实战部署全流程
2.1 环境准备阶段
硬件建议配置:
- Director: 至少双网卡(VIP/RIP分属不同网段)
- Real Server: 默认网关必须指向Director的RIP接口
- 网络带宽: 千兆环境下NAT模式吞吐量约为直接路由的70%
软件依赖安装:
bash复制# CentOS系
yum install ipvsadm -y
modprobe ip_vs
# 查看内核模块加载
lsmod | grep ip_vs
2.2 详细配置步骤
VIP配置示例(ens192为外网卡):
bash复制ip addr add 10.0.0.1/24 dev ens192
创建负载均衡规则:
bash复制ipvsadm -A -t 10.0.0.1:80 -s wrr
ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.2:80 -m -w 3
ipvsadm -a -t 10.0.0.1:80 -r 172.16.0.3:80 -m -w 1
权重分配技巧:
- 根据服务器CPU核心数设置基准权重(如4核设为4)
- 通过
ipvsadm -Ln --stats观察连接分布情况动态调整
3. 深度故障排查手册
3.1 典型问题现象库
案例1:Real Server收不到请求
- 检查项:
ipvsadm -lnc查看连接状态tcpdump -i any host RIP抓包验证- Real Server的
route -n确认默认路由
案例2:客户端连接超时
- 排查路径:
- Director的
conntrack -L检查NAT表项 sysctl -a | grep tcp_tw_reuse确认端口复用- 防火墙规则
iptables -L -nv检查过滤
- Director的
3.2 性能调优参数
内存优化(适用于高并发场景):
bash复制# 增加hash表大小
echo 2097152 > /proc/sys/net/ipv4/vs/conn_tab_bits
# TIME_WAIT快速回收
echo 1 > /proc/sys/net/ipv4/tcp_tw_recycle
中断绑定(针对多队列网卡):
bash复制# 查看中断分布
cat /proc/interrupts | grep eth
# 绑定CPU核心
echo 1 > /proc/irq/XX/smp_affinity
4. 生产环境进阶技巧
4.1 健康检查实现方案
自定义脚本示例(结合keepalived):
bash复制#!/bin/bash
curl -s --connect-timeout 3 http://$RIP/healthcheck | grep "OK" || {
ipvsadm -d -t $VIP:80 -r $RIP:80
logger "LVS removed $RIP from pool"
}
4.2 流量监控方案
IPVS统计信息解读:
bash复制watch -n 1 'ipvsadm -ln --rate --exact'
输出字段说明:
- conns: 当前活动连接数
- inpps: 入包速率(包/秒)
- outbps: 出带宽(字节/秒)
4.3 无缝升级方案
连接保持迁移步骤:
- 新Director同步配置
ipvsadm-save > rules.backup - 旧Director设置
ipvsadm --set 3600 60 300延长超时 - 逐步将VIP迁移到新Director
- 通过
conntrackd同步连接状态表
5. 架构设计注意事项
5.1 网络拓扑限制
必须避免的拓扑错误:
- Real Server与Director间存在多层NAT设备
- VIP和RIP在同一广播域但未做ARP抑制
- 后端服务器默认网关未指向Director
5.2 安全防护要点
必要防护措施:
bash复制# 限制管理接口访问
iptables -A INPUT -p tcp --dport 8080 ! -s 管理IP -j DROP
# 防止SYN Flood
echo 1 > /proc/sys/net/ipv4/vs/synproxy
5.3 容量规划建议
性能估算公式:
code复制最大并发 ≈ (Director内存GB × 1024 × 0.8) / 连接内存占用KB
其中每个连接约占用:
- 非NAT模式:256字节
- NAT模式:384字节
- 持久化会话:512字节
