温馨提示×

ubuntu iptables怎样做负载均衡

小樊
48
2026-09-22 03:18:19
栏目: 云计算

在 Ubuntu 上使用 iptables 做负载均衡,常见方式主要有两种:

  1. 基于 iptables 的 statistic 模块(轮询 / 随机)
  2. 结合 ipvs(LVS)+ iptables(更专业)

下面分别说明。


一、iptables + statistic 模块(最简单,常用于测试)

适用于 DNAT 场景,把流量分发到多台后端服务器。

示例:把访问 1.1.1.1:80 的流量均衡到 2.2.2.2 和 3.3.3.3

# 开启内核转发
echo 1 > /proc/sys/net/ipv4/ip_forward
sysctl -w net.ipv4.ip_forward=1

iptables -t nat -A PREROUTING -d 1.1.1.1 -p tcp --dport 80 \
  -m statistic --mode nth --every 2 --packet 0 \
  -j DNAT --to-destination 2.2.2.2:80

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

iptables -t nat -A POSTROUTING -j MASQUERADE

参数说明

  • --mode nth:轮询(第 0、2、4… 包走第一条)
  • --mode random --probability 0.5:随机 50%

随机示例:

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

优点 / 缺点

✅ 简单
❌ 不支持健康检查
❌ 连接不保证 sticky


二、iptables + IPVS(推荐用于生产)

Ubuntu 内置 IPVS(LVS),性能好,支持多种调度算法。

1. 安装工具

sudo apt update
sudo apt install ipvsadm

2. 配置 IPVS(DR / NAT 模式)

以 NAT 模式为例:

ipvsadm -A -t 1.1.1.1:80 -s rr
ipvsadm -a -t 1.1.1.1:80 -r 2.2.2.2:80 -m
ipvsadm -a -t 1.1.1.1:80 -r 3.3.3.3:80 -m

调度算法:

  • rr:轮询
  • wrr:加权轮询
  • lc:最少连接

3. iptables 只做 MASQUERADE

iptables -t nat -A POSTROUTING -j MASQUERADE

三、如果你想要“真正现代”的方案

在新 Ubuntu(18.04+)上,更推荐:

  • nginx / haproxy(应用层)
  • kube-proxy + IPVS(容器)
  • iptables 仅做防火墙

总结

方案 适合场景
iptables statistic 简单测试
iptables + IPVS 生产负载均衡
nginx / haproxy HTTP 层

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

  • 是 TCP / UDP / HTTP
  • 是否要 会话保持
  • Ubuntu 版本

我可以给你一套可直接用的配置。

0 踩