1. LVS(Linux Virtual Server)核心架构解析
LVS是构建在Linux内核上的四层负载均衡解决方案,由章文嵩博士在1998年提出并开源。其核心价值在于将多台真实服务器组成一个高性能、高可用的虚拟服务集群,对外表现为单一IP地址。经过二十余年的发展,LVS已成为互联网基础设施中流量调度的事实标准,支撑着全球众多亿级流量平台。
关键特性:LVS工作在传输层(TCP/UDP),相比应用层负载均衡(如Nginx)具有更低的开销,单机可处理百万级并发连接。实测在16核服务器上,LVS-DR模式处理HTTP请求的吞吐量可达Nginx的3倍以上。
1.1 三大工作模式对比
DR模式(Direct Routing)
- 原理:调度器修改请求MAC地址后直接转发,真实服务器处理后直接响应客户端
- 优势:性能最佳(响应不经过调度器),支持所有TCP/UDP协议
- 限制:要求真实服务器与调度器在同一二层网络
- 典型配置:
bash复制
ipvsadm -A -t 192.168.1.100:80 -s wrr ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101 -g -w 3 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102 -g -w 1
NAT模式(Network Address Translation)
- 原理:调度器同时修改请求的源/目的IP,形成双向地址转换
- 优势:真实服务器可位于不同网络,支持端口映射
- 瓶颈:调度器容易成为性能瓶颈(需处理双向流量)
- 典型场景:IDC内部服务暴露
TUN模式(IP Tunneling)
- 原理:通过IP隧道封装请求包,实现跨机房调度
- 适用场景:异地多活架构中的流量调度
- 特殊配置:需真实服务器支持IPIP隧道模块
bash复制modprobe ipip ip tunnel add tunl0 mode ipip remote 10.0.0.1 local 10.0.0.2
1.2 调度算法选型指南
| 算法类型 | 代表算法 | 适用场景 | 配置示例 |
|---|---|---|---|
| 静态算法 | rr(轮询) | 服务器性能均匀 | -s rr |
| wrr(加权轮询) | 服务器性能差异 | -s wrr -w 3,1 | |
| 动态算法 | lc(最少连接) | 长连接服务 | -s lc |
| wlc(加权最少连接) | 混合型业务 | -s wlc | |
| 特殊算法 | sh(源地址哈希) | 会话保持需求 | -s sh |
生产环境建议:Web类服务优先选用wlc,视频流媒体建议使用wrr,金融支付类需会话保持的场景使用sh。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 高可用集群搭建实战
2.1 基础环境准备
网络拓扑要求(以DR模式为例)
- 调度器:eth0(公网IP)、eth1(内网IP)
- 真实服务器:lo:0绑定VIP(arp_ignore=1, arp_announce=2)
- 交换机:需开启端口快速转发(避免MAC地址表抖动)
内核参数调优
bash复制# 所有节点执行
echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore
echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_ignore
echo 0 > /proc/sys/net/ipv4/conf/lo/arp_announce
# 调度器专用
echo 1 > /proc/sys/net/ipv4/vs/conntrack
echo 30 > /proc/sys/net/ipv4/vs/expire_nodest_conn
2.2 Keepalived集成方案
主备调度器配置
bash复制! Configuration File for keepalived
global_defs {
router_id LVS_DEVEL
}
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass 1111
}
virtual_ipaddress {
192.168.1.100/24 dev eth0 label eth0:0
}
}
virtual_server 192.168.1.100 80 {
delay_loop 6
lb_algo wlc
lb_kind DR
persistence_timeout 50
protocol TCP
real_server 192.168.1.101 80 {
weight 3
TCP_CHECK {
connect_timeout 10
nb_get_retry 3
delay_before_retry 3
connect_port 80
}
}
}
2.3 真实服务器配置要点
-
VIP绑定(所有RS节点执行):
bash复制
ip addr add 192.168.1.100/32 dev lo:0 -
抑制ARP响应:
bash复制echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce -
服务监听配置(以Nginx为例):
nginx复制server { listen 192.168.1.100:80; server_name www.example.com; # 必须关闭长连接保持 keepalive_timeout 0; }
3. 性能优化与问题排查
3.1 吞吐量瓶颈分析
常见性能限制因素
- 调度器:CPU软中断处理(查看
/proc/interrupts) - 网络:网卡队列长度(
ethtool -l eth0) - 内存:连接跟踪表大小(
ipvsadm -ln --timeout)
bash复制# 启用RPS/RFS(多队列网卡)
echo ff > /sys/class/net/eth0/queues/rx-0/rps_cpus
echo 32768 > /proc/sys/net/core/rps_sock_flow_entries
# 调整conntrack表大小
echo 1200000 > /proc/sys/net/netfilter/nf_conntrack_max
3.2 典型故障处理
问题1:客户端访问VIP超时
- 检查链:
ipvsadm -ln查看服务状态tcpdump -i eth0 host vip抓包分析- 验证RS的ARP抑制是否生效
问题2:长连接异常断开
- 解决方案:
bash复制# 调整TCP超时参数 ipvsadm --set 900 120 300 # 或禁用连接追踪 ipvsadm -p 0
问题3:负载不均
- 排查步骤:
watch -n 1 ipvsadm -ln --stats观察实时流量- 检查RS权重配置(
-w参数) - 考虑切换为lc/wlc算法
4. 生产环境最佳实践
4.1 灰度发布方案
基于权重的流量切量
bash复制# 初始阶段(新老版本1:9)
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101 -w 9
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.111 -w 1
# 全量阶段
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.101 -w 0
ipvsadm -e -t 192.168.1.100:80 -r 192.168.1.111 -w 10
4.2 监控指标体系建设
关键监控项
- 连接数:
ipvsadm -ln --stats | grep -o "Conns:[0-9]*" - 每秒新建连接:
ipvsadm -ln --rate | awk '{print $3}' - 后端健康状态:
ipvsadm -ln --timeout | grep -c "->"
Prometheus采集配置
yaml复制scrape_configs:
- job_name: 'ipvs'
static_configs:
- targets: ['localhost:9100']
metrics_path: /probe
params:
module: [ipvs]
4.3 安全防护策略
防CC攻击配置
bash复制# 限制单IP连接数
iptables -A INPUT -p tcp --dport 80 -m connlimit --connlimit-above 50 -j DROP
# 启用SYN Cookie防护
echo 1 > /proc/sys/net/ipv4/tcp_syncookies
VIP隐藏技巧
bash复制# 丢弃非调度器访问VIP的包
iptables -A INPUT -d 192.168.1.100 -j DROP
iptables -A OUTPUT -s 192.168.1.100 -j DROP
在金融级生产环境中,我们通常会将LVS与F5硬件负载均衡组成混合架构——F5处理SSL卸载和七层过滤,LVS负责四层流量调度。这种架构下,单集群曾稳定支撑过双十一期间每秒12万次的证券交易请求。实际部署时要注意,当RS节点超过50台时,建议采用分层调度架构避免广播风暴。
