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)使用。