插件窝 干货文章 如何在Linux上配置网络负载均衡

如何在Linux上配置网络负载均衡

负载 HAProxy Nginx 770    来源:    2025-04-15

在Linux上配置网络负载均衡可以通过多种方式实现,以下是常见的几种方法及详细步骤:


一、使用 Nginx 作为负载均衡器(应用层)

适用场景:HTTP/HTTPS 流量分发
步骤: 1. 安装 Nginx
bash sudo apt update && sudo apt install nginx # Debian/Ubuntu sudo yum install nginx # CentOS/RHEL

  1. 配置负载均衡
    编辑 /etc/nginx/nginx.conf/etc/nginx/conf.d/loadbalancer.conf

    upstream backend {
       server 192.168.1.10:80 weight=3;  # 权重3
       server 192.168.1.11:80;
       server 192.168.1.12:80 backup;    # 备用服务器
    }
    
    server {
       listen 80;
       location / {
           proxy_pass http://backend;
           proxy_set_header Host $host;
       }
    }
    
  2. 重启 Nginx
    bash sudo systemctl restart nginx

二、使用 HAProxy(传输层/应用层)

适用场景:TCP/HTTP 高性能负载均衡
步骤: 1. 安装 HAProxy
bash sudo apt install haproxy # Debian/Ubuntu sudo yum install haproxy # CentOS/RHEL

  1. 配置 /etc/haproxy/haproxy.cfg

    frontend http_front
       bind *:80
       default_backend http_back
    
    backend http_back
       balance roundrobin      # 轮询算法
       server s1 192.168.1.10:80 check
       server s2 192.168.1.11:80 check
    
  2. 启动 HAProxy

    sudo systemctl restart haproxy
    

三、使用 LVS(Linux Virtual Server,网络层)

适用场景:高性能四层(L4)负载均衡
步骤: 1. 安装 IPVS 工具
bash sudo apt install ipvsadm # Debian/Ubuntu sudo yum install ipvsadm # CentOS/RHEL

  1. 配置负载均衡规则

    # 添加虚拟IP(VIP)
    sudo ip addr add 192.168.1.100/24 dev eth0
    
    # 添加后端服务器(DR模式示例)
    sudo ipvsadm -A -t 192.168.1.100:80 -s rr
    sudo ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.10:80 -g
    sudo ipvsadm -a -t 192.168.1.100:80 -r 192.168.1.11:80 -g
    
  2. 启用 IP 转发

    echo 1 | sudo tee /proc/sys/net/ipv4/ip_forward
    

四、使用 Keepalived 实现高可用 + 负载均衡

适用场景:避免单点故障
步骤: 1. 安装 Keepalived
bash sudo apt install keepalived

  1. 配置 /etc/keepalived/keepalived.conf

    vrrp_instance VI_1 {
       state MASTER           # 主节点设为MASTER,备节点设为BACKUP
       interface eth0
       virtual_router_id 51
       priority 100           # 备节点设置为更低值(如90)
       virtual_ipaddress {
           192.168.1.100      # VIP
       }
    }
    
    virtual_server 192.168.1.100 80 {
       delay_loop 6
       lb_algo rr             # 轮询算法
       lb_kind DR             # 直接路由模式
       protocol TCP
       real_server 192.168.1.10 80 {
           weight 1
           TCP_CHECK { connect_timeout 3 }
       }
       real_server 192.168.1.11 80 {
           weight 1
           TCP_CHECK { connect_timeout 3 }
       }
    }
    
  2. 启动服务

    sudo systemctl start keepalived
    

五、使用 DNS 轮询(简单方案)

适用场景:低成本分散流量
方法:在DNS解析中为同一域名配置多个A记录(如 example.com 指向 192.168.1.10192.168.1.11),客户端会随机选择IP。


关键注意事项

  1. 健康检查:确保负载均衡器能自动剔除故障节点(Nginx/HAProxy/LVS均支持)。
  2. 会话保持:若需用户粘性(Session Persistence),可在Nginx/HAProxy中配置 sticky 模块。
  3. 性能监控:使用工具如 ipvsadmnetstat 或 Prometheus 监控流量分布。
  4. 安全:配置防火墙规则(如 iptables/nftables)限制访问VIP的源IP。

方案对比

工具 层级 性能 配置复杂度 适用场景
Nginx L7 中高 简单 HTTP/HTTPS
HAProxy L4/L7 中等 TCP/HTTP
LVS L4 极高 复杂 高性能四层负载
Keepalived L4 中等 高可用 + 负载均衡

根据实际需求(协议、性能、高可用性)选择合适的方案。对于Web应用,Nginx/HAProxy是常见选择;对数据库或大规模TCP服务,LVS更合适。