找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 5157|回复: 0

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

[复制链接]

1

主题

0

回帖

5

积分

新手上路

积分
5
发表于 2026-8-11 14:34:25 | 显示全部楼层 |阅读模式
Nginx负载均衡搭建与权重策略配置

一、Nginx负载均衡基础搭建

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

2. 配置负载均衡
编辑Nginx配置文件(通常位于
  1. /etc/nginx/nginx.conf
复制代码
  1. /etc/nginx/sites-available/default
复制代码
):
  1. http {
  2.     upstream backend_servers {
  3.         # 默认轮询策略
  4.         server 192.168.1.101:80;
  5.         server 192.168.1.102:80;
  6.         server 192.168.1.103:80;
  7.     }
  8.     server {
  9.         listen 80;
  10.         server_name localhost;
  11.         location / {
  12.             proxy_pass http://backend_servers;
  13.             # 其他代理设置...
  14.         }
  15.     }
  16. }
复制代码

二、权重策略配置

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

1. 基本权重配置
  1. upstream backend_servers {
  2.     server 192.168.1.101 weight=3;  # 权重3
  3.     server 192.168.1.102 weight=2;  # 权重2
  4.     server 192.168.1.103 weight=1;  # 权重1
  5. }
复制代码

权重比例解释

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


2. 其他负载均衡策略

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

ip_hash
基于客户端IP的会话保持:
  1. upstream backend_servers {
  2.     ip_hash;
  3.     server 192.168.1.101;
  4.     server 192.168.1.102;
  5.     server 192.168.1.103;
  6. }
复制代码

least_conn
将请求分配给当前连接数最少的服务器:
  1. upstream backend_servers {
  2.     least_conn;
  3.     server 192.168.1.101;
  4.     server 192.168.1.102;
  5.     server 192.168.1.103;
  6. }
复制代码

三、高级配置选项

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

    1. max_fails
    复制代码
    :允许的失败次数
    1. fail_timeout
    复制代码
    :失败超时时间
    1. backup
    复制代码
    :标记为备份服务器,只有当其他服务器不可用时才使用
    1. down
    复制代码
    :标记服务器为不可用


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

  • 使用商业版的Nginx Plus
  • 使用第三方模块如
    1. nginx_upstream_check_module
    复制代码
  • 结合外部监控工具定期检查服务器状态


四、完整配置示例
  1. http {
  2.     upstream backend_servers {
  3.         # 权重配置 + 健康检查参数
  4.         server 192.168.1.101 weight=4 max_fails=2 fail_timeout=15s;
  5.         server 192.168.1.102 weight=3 max_fails=2 fail_timeout=15s;
  6.         server 192.168.1.103 weight=1 max_fails=2 fail_timeout=15s backup;
  7.         
  8.         # 可以混合使用不同策略(但通常不推荐)
  9.         # least_conn;  # 如果要使用least_conn,需要去掉权重或确保策略一致
  10.     }
  11.     server {
  12.         listen 80;
  13.         server_name example.com;
  14.         location / {
  15.             proxy_pass http://backend_servers;
  16.             proxy_set_header Host $host;
  17.             proxy_set_header X-Real-IP $remote_addr;
  18.             proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  19.             
  20.             # 超时设置
  21.             proxy_connect_timeout 5s;
  22.             proxy_read_timeout 30s;
  23.         }
  24.     }
  25. }
复制代码

五、配置验证与重载

  • 测试配置是否正确:
  1. sudo nginx -t
复制代码

  • 重载Nginx配置(不中断服务):
  1. sudo nginx -s reload
复制代码

六、监控与调优

  • 查看Nginx状态(如果启用了stub_status模块):
  1. location /nginx_status {
  2.     stub_status on;
  3.     allow 127.0.0.1;
  4.     deny all;
  5. }
复制代码

  • 访问
    1. http://your-server/nginx_status
    复制代码
    查看请求分布情况
  • 根据实际流量调整权重比例


通过合理配置权重策略,可以有效地分配后端服务器负载,提高系统整体性能和可靠性。
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Archiver|手机版|小黑屋|五云论坛 ( 黔ICP备2022001370号-1|贵公网安备52032102000798号 )

GMT+8, 2026-9-12 19:04 , Processed in 0.077643 second(s), 19 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表