linux

如何利用nginx日志做负载均衡

小樊
42
2025-11-25 14:41:06
栏目: 云计算

总体思路

步骤一 输出可观测的负载均衡日志

示例配置

http {
  # 带上游指标的访问日志
  log_format lb '$remote_addr - $remote_user [$time_local] '
                '"$request" $status $body_bytes_sent '
                '"$http_referer" "$http_user_agent" '
                '"$http_x_forwarded_for" '
                'upstream=$upstream_addr '
                'rt=$request_time u_rt=$upstream_response_time '
                'u_status=$upstream_status';

  access_log /var/log/nginx/access_lb.log lb;

  upstream backend {
    least_conn;                 # 动态策略示例:最少连接
    server 10.0.1.11:8080 weight=3 max_fails=2 fail_timeout=30s;
    server 10.0.1.12:8080 weight=1 max_fails=2 fail_timeout=30s;
    server 10.0.1.13:8080 backup;
  }

  server {
    listen 80;
    location / {
      proxy_pass http://backend;
      proxy_set_header Host $host;
      proxy_set_header X-Real-IP $remote_addr;
      proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
  }
}

# 四层转发(如 TCP)日志示例
stream {
  log_format stream_lb_json escape=json
    '{'
    '"timestamp":"$time_iso8601",'
    '"remote_addr":"$remote_addr",'
    '"protocol":"$protocol",'
    '"status":"$status",'
    '"bytes_sent":"$bytes_sent",'
    '"bytes_received":"$bytes_received",'
    '"session_time":"$session_time",'
    '"upstream_addr":"$upstream_addr",'
    '"upstream_connect_time":"$upstream_connect_time"'
    '}';

  access_log /var/log/nginx/stream_access.log stream_lb_json;

  upstream graylog_servers {
    server 10.10.253.101:9000;
    server 10.10.253.102:9000 backup;
    server 10.10.253.103:9000 backup;
  }

  server {
    listen 9000;
    proxy_pass graylog_servers;
  }
}

要点:

步骤二 用日志分析评估与决策

步骤三 基于日志洞察进行负载均衡优化

步骤四 在容器平台的落地

0
看了该问题的人还看了