Nginx负载均衡的详细配置示例,涵盖多种算法、健康检查、会话保持等核心功能

以下是一个关于Nginx负载均衡的详细配置示例,涵盖多种算法、健康检查、会话保持等核心功能:

一、基础负载均衡配置

http {
  # 定义后端服务器组(默认轮询算法)
  upstream backend_pool {
    # 基础服务器列表
    server 192.168.1.100:8080;
    server 192.168.1.101:8080;
    server 192.168.1.102:8080;

    # 高级参数配置
    zone backend_pool 64k;        # 共享内存区(用于状态监控)
    least_conn;                   # 切换为最少连接算法(覆盖默认轮询)
    keepalive 32;                 # 长连接保持数(减少TCP握手)
    health_check interval=10s     # 健康检查间隔
               fails=3            # 连续失败3次标记为不可用
               passes=2;          # 需连续成功2次恢复可用
  }

  server {
    listen 80;
    server_name lb.example.com;

    location / {
      proxy_pass http://backend_pool;
      
      # 连接超时设置
      proxy_connect_timeout 5s;
      proxy_send_timeout 30s;
      proxy_read_timeout 30s;

      # 缓冲区配置
      proxy_buffering on;
      proxy_buffer_size 4k;
      proxy_buffers 8 16k;
    }
  }
}

二、高级负载均衡策略

1. 加权轮询(Weighted Round Robin)
upstream backend_pool {
  server 192.168.1.100:8080 weight=5;  # 高性能节点
  server 192.168.1.101:8080 weight=3;
  server 192.168.1.102:8080 weight=2;  # 低性能节点
}
2. IP哈希(IP Hash)
upstream backend_pool {
  ip_hash;  # 相同客户端IP始终访问同一后端
  server 192.168.1.100:8080;
  server 192.168.1.101:8080;
}
3. 最少连接(Least Connections)
upstream backend_pool {
  least_conn;  # 动态选择连接数最少的节点
  server 192.168.1.100:8080;
  server 192.168.1.101:8080;
}
4. 会话保持(Session Persistence)
upstream backend_pool {
  hash $cookie_JSESSIONID;  # 基于Cookie的会话保持
  server 192.168.1.100:8080;
  server 192.168.1.101:8080;
}

三、动态负载均衡(需Nginx Plus)

upstream dynamic_pool {
  zone dynamic_pool 64k;

  # 动态服务器组(通过API动态管理)
  server 192.168.1.100:8080 max_fails=2 fail_timeout=30s;
  server 192.168.1.101:8080 resolve;  # 支持DNS SRV记录

  # 主动健康检查
  health_check uri=/health_check;     # 自定义健康检查端点
  health_check interval=5s;
}

四、SSL终止与缓存配置

upstream ssl_pool {
  server 192.168.1.100:8443;
  server 192.168.1.101:8443;

  keepalive 16;  # 保持长连接(需与后端SSL会话缓存配合)
}

server {
  listen 443 ssl;
  server_name secure.example.com;

  ssl_certificate /etc/nginx/ssl/cert.pem;
  ssl_certificate_key /etc/nginx/ssl/key.pem;

  location / {
    proxy_pass https://ssl_pool;
    proxy_ssl_session_reuse on;  # 复用SSL会话
    proxy_cache cache_zone;       # 启用代理缓存
    proxy_cache_valid 200 302 10m;
  }
}

五、监控与调试配置

http {
  # 启用状态监控端点
  server {
    listen 8080;
    server_name status.example.com;

    location /nginx_status {
      stub_status on;              # 基础状态
      allow 192.168.1.0/24;        # 访问控制
      deny all;
    }

    location /upstream_status {
      upstream_conf;               # Nginx Plus专用状态页
      allow 192.168.1.0/24;
      deny all;
    }
  }
}

六、配置验证与优化

  1. 语法检查

    nginx -t -c /path/to/nginx.conf  # 指定配置文件测试
    
  2. 实时状态查看

    curl http://localhost/nginx_status
    # 输出示例:
    # Active connections: 12 
    # server accepts: 3456 handled: 3456 requests: 6789
    
  3. 日志分析

    log_format upstream_log '$remote_addr - $remote_user [$time_local] '
                            '"$request" $status $body_bytes_sent '
                            '"$http_referer" "$http_user_agent" '
                            'rt=$request_time uct="$upstream_connect_time" '
                            'uht="$upstream_header_time" urt="$upstream_response_time"';
    access_log /var/log/nginx/upstream.log upstream_log;
    
  4. 性能调优建议

    • 调整worker_connections匹配实际业务流量
    • 根据RTT优化proxy_timeout参数
    • 对静态资源启用proxy_cache减少后端压力
    • 使用tcp_nopushtcp_nodelay优化TCP传输

通过合理配置负载均衡策略和监控机制,可显著提升系统可用性和响应速度。实际部署时建议通过压力测试工具(如wrk、ab)验证配置效果,并根据监控数据持续优化参数。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值