2017-03-02 290 views
0

在配置带有多个服务器条目的NGINX时,可以配置用于分配负载的循环算法。 NGINX提供重量来指示如何分配重量。例如:在NGINX上游服务器配置中,我可以为权重设置的最大值是多少?

upstream backend { 
server backend1.example.com  weight=5; 
server backend2.example.com:8080 weight=1; 

} 
server { 
    location/{ 
     proxy_pass http://backend; 
    } 
} 

问题是:什么是可分配给重量的最大值?

我的问题是,我遇到了一个配置,其中有一个权重值为2000000000(20亿),一个值为1的服务器条目。其目的是让所有流量都作为临时的第一台服务器第二个人倒了。然而,在远低于20亿美元的请求之后,用户因为被导向到第二台服务器而出现错误。

+0

看着似乎重量型ngx_int_t(https://github.com/nginx/nginx/blob/a6cb8210905f35977276cb3861184e4dad99cc2a/src/stream/ngx_stream_upstream_round_robin.h)的NGINX的源代码,所以我假设这意味着一个int –

回答

1

您应该对该用法使用健康检查,而不是权重。

你有2种选择:

  1. 使用内置的nginx的3名健康检查:

    Using max_failsfail_timeout甚至backup指令。

    backup:将服务器标记为备份服务器。它将在主服务器不可用时传递请求。

  2. 使用社区模块等nginx_upstream_check_module

    该模块实现层7名健康检查,这是推荐的方式。

+0

感谢Farhad,我已经使用了备份选项,但很想知道重量参数的实际限制。我想向我的利益相关者全面解释我们得到的错误的原因。告诉他们我们在2天内超过了20亿次请求限制不会飞:-) –

+0

很高兴听到这为你工作:) –

相关问题