Linux防火墙可以实现负载均衡,主要通过iptables/netfilter框架(传统防火墙工具)、firewalld(动态防火墙管理工具)或结合**LVS(Linux Virtual Server)**等内核级组件实现,支持流量分发、故障转移等核心负载均衡功能。
iptables是Linux内核中的防火墙工具,通过NAT表(网络地址转换)和PREROUTING链(路由前处理)可实现简单负载均衡。其核心原理是将外部请求按规则分发到多个后端服务器,支持轮询、随机、基于权重等策略。
statistic模块的nth模式,将新建连接按顺序分配到不同服务器。例如,将80端口的流量轮流分发到192.168.1.101、192.168.1.102、192.168.1.103:iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode nth --every 3 --packet 1 -j DNAT --to-destination 192.168.1.101:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode nth --every 3 --packet 2 -j DNAT --to-destination 192.168.1.102:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.103:80 random模式按概率分配流量,适用于后端服务器性能相近的场景:iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode random --probability 0.33 -j DNAT --to-destination 192.168.1.101:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -m statistic --mode random --probability 0.5 -j DNAT --to-destination 192.168.1.102:80 iptables -t nat -A PREROUTING -p tcp --dport 80 -j DNAT --to-destination 192.168.1.103:80 firewalld是Linux的动态防火墙管理工具,通过端口转发功能可实现流量分发,本质是将外部端口流量转发到内部多个端口(对应后端服务器)。
firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8080 firewall-cmd --permanent --add-forward-port=port=80:proto=tcp:toport=8081 firewall-cmd --reload LVS(Linux Virtual Server)是Linux内核级的负载均衡解决方案,通过IPVS模块实现高性能流量分发,可与iptables/netfilter结合使用。其核心优势是高性能、高可扩展性,支持轮询、加权轮询、最少连接、地址散列等多种算法,且能与keepalived配合实现高可用(故障转移)。
ipvsadm工具添加LVS规则,将192.168.1.100:80的流量分发到192.168.1.101、192.168.1.102(加权轮询):ipvsadm -A -t 192.168.1.100:80 -s wrr # 添加虚拟服务,使用加权轮询算法 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.101:80 -m -w 2 # 添加Real Server,权重2 ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.102:80 -m -w 1 # 添加Real Server,权重1 Linux防火墙(iptables/netfilter、firewalld)可以实现负载均衡,但功能强度依次递增:
若需更完善的负载均衡功能(如健康检查、高级算法、高可用),建议结合LVS或专用负载均衡工具(如Nginx、HAProxy)使用。