2017-03-02 289 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

很高興聽到這爲你工作:) –

相關問題