温馨提示×

debian iptables如何负载均衡

小樊
42
2026-09-20 00:18:00
栏目: 云计算

在 Debian 上,使用 iptables 做“负载均衡”通常有两种常见场景:

  1. DNAT + statistic 模块(按连接/包分发)
  2. 结合 ipvs(LVS)做真正的高性能负载均衡

下面分别说明。


一、iptables + statistic 模块(简单可用)

⚠️ 注意:这是基于规则的负载均衡,不是真正的会话保持型 LB,适合简单场景。

1. 开启 IP 转发

echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

2. 示例:将 80 端口流量分发到后端

假设:

  • 公网 IP:1.2.3.4
  • 后端:
    • 10.0.0.10
    • 10.0.0.11
iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -m statistic --mode nth --every 2 --packet 0 \
  -j DNAT --to-destination 10.0.0.10:80

iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -j DNAT --to-destination 10.0.0.11:80

✅ 效果:

  • 第 1 个连接 → 10.0.0.10
  • 第 2 个连接 → 10.0.0.11
  • 轮询

3. 允许回包

iptables -t nat -A POSTROUTING -j MASQUERADE

二、使用 random 模式(更随机)

iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -m statistic --mode random --probability 0.5 \
  -j DNAT --to-destination 10.0.0.10:80

iptables -t nat -A PREROUTING -p tcp --dport 80 \
  -j DNAT --to-destination 10.0.0.11:80

三、使用 IPVS(推荐,真正 LB)

Debian 自带 IPVS,比 iptables 更高效。

apt install ipvsadm
modprobe ip_vs

示例(DR 模式)

ipvsadm -A -t 1.2.3.4:80
ipvsadm -a -t 1.2.3.4:80 -r 10.0.0.10:80 -m
ipvsadm -a -t 1.2.3.4:80 -r 10.0.0.11:80 -m

支持算法:

  • rr(轮询)
  • wrr(加权)
  • lc / wlc
  • sh(源地址哈希,会话保持)

四、重要注意事项

❌ iptables 负载均衡问题:

  • 不支持健康检查
  • 不支持会话保持(除非加 connmark)
  • 性能不如 IPVS

✅ 生产建议:

  • 小流量:iptables 可用
  • 中大型:Nginx / HAProxy / IPVS

如果你愿意,可以告诉我:

  • 入站流量 还是 出口流量
  • 是否要 TCP / UDP / HTTP
  • 是否要 会话保持

我可以给你更精确的配置。

0