首页主机资讯ubuntu防火墙如何实现负载均衡

ubuntu防火墙如何实现负载均衡

时间2025-11-27 14:19:04发布访客分类主机资讯浏览284
导读:Ubuntu 防火墙实现负载均衡的可行路径 在 Ubuntu 上,负载均衡通常借助内核的 Netfilter/iptables 或 IPVS(LVS) 完成;若使用 firewalld,更多是做端口转发与策略编排,底层仍依赖上述内核能力。下...

Ubuntu 防火墙实现负载均衡的可行路径

在 Ubuntu 上,负载均衡通常借助内核的 Netfilter/iptablesIPVS(LVS) 完成;若使用 firewalld,更多是做端口转发与策略编排,底层仍依赖上述内核能力。下面给出三种常用做法与关键配置要点,便于按场景选择。

方案一 使用 iptables statistic 模块做端口转发均衡

  • 适用:简单的四层转发(DNAT)到多台后端,快速落地。
  • 思路:在 nat/PREROUTING 用 statistic 模块按“每第 N 个包/随机概率”分发到不同后端,在 nat/POSTROUTINGSNAT/MASQUERADE 回包。
  • 示例(轮询分发到两台后端,LB 外网卡为 eth0):
    #!/usr/bin/env bash
    set -e
    
    # 启用转发
    sudo sysctl -w net.ipv4.ip_forward=1
    
    # 清空规则
    sudo iptables -t nat -F
    
    # 轮询:第1个包到 192.168.1.200:80,其余到 192.168.1.201:80
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
         -m statistic --mode nth --every 2 --packet 0 \
         -j DNAT --to-destination 192.168.1.200:80
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
         -j DNAT --to-destination 192.168.1.201:80
    
    # 回程源地址转换
    sudo iptables -t nat -A POSTROUTING -o eth0 -j MASQUERADE
    
  • 概率分发示例(3 台后端,概率分别为 1/3、1/2、余下):
    sudo 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
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
         -m statistic --mode random --probability 0.50 \
         -j DNAT --to-destination 192.168.1.102:80
    sudo iptables -t nat -A PREROUTING -p tcp --dport 80 \
         -j DNAT --to-destination 192.168.1.103:80
    
  • 提示:基于“每包/每流”的转发对长连接(如下载、视频)可能带来乱序或会话粘滞问题;如需会话保持,可改用基于源地址的更粗粒度分发策略。

方案二 使用 IPVS LVS 与 Keepalived 构建高性能四层负载均衡

  • 适用:高并发、生产级四层转发,支持 NAT/DR/TUN 模式与健康检查、主备高可用。
  • 思路:用 Keepalived 管理 VRRP 虚拟 IP(VIP)与 IPVS 调度;后端服务器按模式配置(如 DR 模式需抑制 ARP 响应并在本地回环绑定 VIP)。
  • 关键步骤与示例:
    • 安装组件:sudo apt-get install ipvsadm keepalived
    • 开启转发:sudo sysctl -w net.ipv4.ip_forward=1
    • Keepalived 配置片段(主节点示例,VIP 为 192.168.98.100,调度算法 wrr,NAT/DR 按需选择):
      global_defs {
       router_id LVS_DEVEL }
      
      
      vrrp_instance VI_1 {
      
          state MASTER
          interface ens33
          virtual_router_id 51
          priority 120
          advert_int 1
          authentication {
       auth_type PASS auth_pass 1111 }
      
          virtual_ipaddress {
       192.168.98.100 }
      
      }
      
      
      virtual_server 192.168.98.100 80 {
      
          delay_loop 6
          lb_algo wrr
          lb_kind DR          # 或 NAT/TUN
          persistence_timeout 50
          protocol TCP
      
          real_server 192.168.98.7 80 {
      
              weight 1
              TCP_CHECK {
       connect_timeout 3 }
      
          }
      
          real_server 192.168.98.14 80 {
      
              weight 2
              TCP_CHECK {
       connect_timeout 3 }
      
          }
      
      }
          
      
    • DR 模式后端要点(在每台 realserver 上执行):
      VIP=192.168.98.100
      ip addr add $VIP/32 dev lo:0
      ip route add $VIP dev lo:0
      sysctl -w net.ipv4.conf.lo.arp_ignore=1
      sysctl -w net.ipv4.conf.lo.arp_announce=2
      sysctl -w net.ipv4.conf.all.arp_ignore=1
      sysctl -w net.ipv4.conf.all.arp_announce=2
      
    • 启动:sudo systemctl start keepalived(主备部署时,备节点 state 为 BACKUP、priority 更低)。

方案三 使用 firewalld 做端口转发与分发编排

  • 适用:已有 firewalld 管理策略,需将单端口分发到本机多个服务端口(如 80→8080/8081)。
  • 示例(将 80 端口分发到本机 8080 与 8081,按概率近似分流):
    sudo apt-get install --reinstall firewalld
    sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8080
    sudo firewall-cmd --permanent --zone=public --add-forward-port=port=80:proto=tcp:toport=8081
    sudo firewall-cmd --reload
    
  • 说明:firewalld 的富转发规则可更细粒度控制,但多目标“均衡”通常仍需借助 iptables statistic 或上层 L4/L7 代理 实现。

方案对比与选型建议

方案 工作层次 典型场景 优点 局限
iptables statistic 四层 DNAT 快速把端口分发到少量后端 配置简洁、无需额外守护进程 无健康检查、会话保持能力弱、长连接可能受影响
IPVS LVS + Keepalived 四层 L4 高并发、生产级、需高可用 调度算法丰富、可跨模式、支持健康检查与 VRRP 部署与网络模式(NAT/DR/TUN)配置更复杂
firewalld 转发编排 四层转发策略 已有 firewalld 的统一管理 与 firewalld 策略集成、易纳入现有体系 均衡能力有限,通常需配合其他组件实现多后端分发
  • 选型建议:
    • 快速临时分流或实验环境:优先 iptables statistic
    • 生产高并发与高可用:选择 IPVS LVS + Keepalived(必要时配合后端健康检查脚本)。
    • 已采用 firewalld 的运维体系:用 firewalld 做端口转发与策略入口,底层仍建议接入 iptables/IPVS 实现均衡。

声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!


若转载请注明出处: ubuntu防火墙如何实现负载均衡
本文地址: https://pptw.com/jishu/757881.html
ubuntu防火墙如何升级内核 Debian系统安全漏洞分析

游客 回复需填写必要信息