在Linux系统中实现网络负载均衡,核心是通过软件层面的流量分发机制,将客户端请求均匀分配到多个后端服务器,避免单台服务器过载,同时提升整体服务的可用性。Linux生态下有多种成熟的负载均衡实现方案,可满足不同规模和场景的需求。
常见Linux负载均衡方案分类
Linux下的网络负载均衡方案主要分为用户空间和内核空间两类,不同方案的工作原理和适用场景有明显区别,具体对比如下:
| 方案名称 | 工作层级 | 核心优势 | 适用场景 |
|---|---|---|---|
| iptables | 网络层、传输层 | 系统原生自带,无需额外安装组件,配置灵活 | 小规模流量分发,简单的负载均衡需求 |
| LVS | 传输层 | 内核级转发,性能极高,支持多种转发模式 | 高并发、大流量的核心负载均衡场景 |
| keepalived | 传输层、应用层 | 自带高可用机制,可配合LVS实现主备切换 | 需要负载均衡节点高可用的生产环境 |
基于iptables的简单负载均衡配置
iptables是Linux系统自带的防火墙工具,同时支持基于随机、轮询等策略的流量分发,适合入门级负载均衡需求。
配置前提
- 准备一台Linux负载均衡器,假设IP为192.168.0.100
- 准备两台后端服务器,IP分别为192.168.0.101和192.168.0.102,均开启80端口的Web服务
- 关闭负载均衡器的防火墙或者开放对应转发端口
配置随机分发策略
通过iptables的 statistic 模块实现请求随机分配到两台后端服务器,具体配置命令如下:
# 开启系统IP转发功能 echo 1 > /proc/sys/net/ipv4/ip_forward # 添加PREROUTING链规则,将到达80端口的流量随机分发 iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode random --probability 0.5 -j DNAT --to-destination 192.168.0.101:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.0.102:80 # 添加POSTROUTING链规则,做源地址转换 iptables -t nat -A POSTROUTING -j MASQUERADE # 保存iptables规则,避免重启后丢失 iptables-save > /etc/iptables.rules
上述配置中,--probability 0.5表示50%的概率将流量转发到第一台后端服务器,剩余流量自动转发到第二台,实现基础的负载均衡效果。
基于LVS的高性能负载均衡配置
LVS(Linux Virtual Server)是Linux内核自带的负载均衡模块,运行在内核空间,转发性能远高于用户空间的方案,适合高并发场景。
LVS的三种转发模式
- NAT模式:请求和响应都经过负载均衡器,配置简单但负载均衡器压力较大
- DR模式:响应直接由后端服务器返回给客户端,性能最高,需要后端服务器和负载均衡器在同一网段
- TUN模式:通过IP隧道转发请求,后端服务器可以跨网段部署
DR模式配置示例
以下是LVS DR模式的配置步骤,负载均衡器IP为192.168.0.100,虚拟IP(VIP)为192.168.0.200,后端服务器为192.168.0.101和192.168.0.102。
负载均衡器配置
# 安装ipvsadm管理工具 yum install -y ipvsadm # 配置VIP到网卡子接口 ifconfig eth0:0 192.168.0.200 netmask 255.255.255.255 up # 添加LVS集群服务,使用轮询调度算法 ipvsadm -A -t 192.168.0.200:80 -s rr # 添加两台后端服务器,使用DR模式 ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.101:80 -g ipvsadm -a -t 192.168.0.200:80 -r 192.168.0.102:80 -g # 查看配置结果 ipvsadm -Ln
后端服务器配置
DR模式下后端服务器需要绑定VIP到回环接口,并且关闭ARP响应,避免IP冲突:
# 绑定VIP到lo接口 ifconfig lo:0 192.168.0.200 netmask 255.255.255.255 up # 调整ARP内核参数 echo 1 > /proc/sys/net/ipv4/conf/lo/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/lo/arp_announce echo 1 > /proc/sys/net/ipv4/conf/all/arp_ignore echo 2 > /proc/sys/net/ipv4/conf/all/arp_announce
基于keepalived的高可用负载均衡配置
keepalived可以在LVS的基础上提供主备高可用能力,当主负载均衡节点故障时,自动切换到备节点,避免单点故障。
基础配置示例
假设主节点IP为192.168.0.100,备节点IP为192.168.0.103,VIP为192.168.0.200,后端服务器为192.168.0.101和192.168.0.102。
主节点keepalived配置文件/etc/keepalived/keepalived.conf内容如下:
global_defs {
router_id LVS_DEVEL_01 # 节点唯一标识
}
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.0.200 # 绑定的VIP
}
}
virtual_server 192.168.0.200 80 {
delay_loop 6
lb_algo rr # 轮询调度算法
lb_kind DR # DR转发模式
persistence_timeout 50
protocol TCP
real_server 192.168.0.101 80 {
weight 1
TCP_CHECK { # 健康检查
connect_timeout 3
retry 3
delay_before_retry 3
}
}
real_server 192.168.0.102 80 {
weight 1
TCP_CHECK {
connect_timeout 3
retry 3
delay_before_retry 3
}
}
}
备节点配置只需将state改为BACKUP,priority改为低于100的数值(如90)即可。启动keepalived服务后,主备节点会自动协商VIP的归属,主节点故障时VIP会自动漂移到备节点。
注意事项
- 生产环境中建议优先选择LVS+keepalived的组合,兼顾性能和高可用
- 配置完成后需要通过
curl VIP:端口的方式验证负载均衡是否生效 - 后端服务器的健康检查机制需要根据业务类型合理配置,避免将流量转发到故障节点
- 所有配置规则建议写入开机启动脚本,避免服务器重启后配置丢失
Linux网络负载均衡iptableskeepalivedLVS修改时间:2026-06-15 09:04:05