admin 发表于 2026-8-11 14:34:25

Nginx负载均衡搭建与权重策略配置

Nginx负载均衡搭建与权重策略配置

一、Nginx负载均衡基础搭建

1. 安装Nginx
确保已安装Nginx,如果未安装可以通过以下命令安装(以Ubuntu为例):
sudo apt update
sudo apt install nginx

2. 配置负载均衡
编辑Nginx配置文件(通常位于/etc/nginx/nginx.conf或/etc/nginx/sites-available/default):

http {
    upstream backend_servers {
      # 默认轮询策略
      server 192.168.1.101:80;
      server 192.168.1.102:80;
      server 192.168.1.103:80;
    }

    server {
      listen 80;
      server_name localhost;

      location / {
            proxy_pass http://backend_servers;
            # 其他代理设置...
      }
    }
}

二、权重策略配置

Nginx支持为后端服务器分配不同的权重,权重越高的服务器将被分配更多的请求。

1. 基本权重配置
upstream backend_servers {
    server 192.168.1.101 weight=3;# 权重3
    server 192.168.1.102 weight=2;# 权重2
    server 192.168.1.103 weight=1;# 权重1
}

权重比例解释:

[*]总权重 = 3 + 2 + 1 = 6
[*]101服务器将获得约50%(3/6)的请求
[*]102服务器将获得约33%(2/6)的请求
[*]103服务器将获得约17%(1/6)的请求


2. 其他负载均衡策略

除了默认的轮询和权重策略,Nginx还支持:

ip_hash
基于客户端IP的会话保持:
upstream backend_servers {
    ip_hash;
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

least_conn
将请求分配给当前连接数最少的服务器:
upstream backend_servers {
    least_conn;
    server 192.168.1.101;
    server 192.168.1.102;
    server 192.168.1.103;
}

三、高级配置选项

1. 服务器状态标记
upstream backend_servers {
    server 192.168.1.101 weight=5 max_fails=3 fail_timeout=30s;
    server 192.168.1.102 weight=3 backup;# 备份服务器
    server 192.168.1.103 down;# 标记为不可用
}

[*]max_fails:允许的失败次数
[*]fail_timeout:失败超时时间
[*]backup:标记为备份服务器,只有当其他服务器不可用时才使用
[*]down:标记服务器为不可用


2. 健康检查
Nginx本身不提供主动健康检查,但可以通过以下方式实现:

[*]使用商业版的Nginx Plus
[*]使用第三方模块如nginx_upstream_check_module
[*]结合外部监控工具定期检查服务器状态


四、完整配置示例

http {
    upstream backend_servers {
      # 权重配置 + 健康检查参数
      server 192.168.1.101 weight=4 max_fails=2 fail_timeout=15s;
      server 192.168.1.102 weight=3 max_fails=2 fail_timeout=15s;
      server 192.168.1.103 weight=1 max_fails=2 fail_timeout=15s backup;
      
      # 可以混合使用不同策略(但通常不推荐)
      # least_conn;# 如果要使用least_conn,需要去掉权重或确保策略一致
    }

    server {
      listen 80;
      server_name example.com;

      location / {
            proxy_pass http://backend_servers;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            
            # 超时设置
            proxy_connect_timeout 5s;
            proxy_read_timeout 30s;
      }
    }
}

五、配置验证与重载

[*]测试配置是否正确:

sudo nginx -t

[*]重载Nginx配置(不中断服务):

sudo nginx -s reload

六、监控与调优

[*]查看Nginx状态(如果启用了stub_status模块):

location /nginx_status {
    stub_status on;
    allow 127.0.0.1;
    deny all;
}

[*]访问http://your-server/nginx_status查看请求分布情况
[*]根据实际流量调整权重比例


通过合理配置权重策略,可以有效地分配后端服务器负载,提高系统整体性能和可靠性。
页: [1]
查看完整版本: Nginx负载均衡搭建与权重策略配置