Nginx

使用 nginx 進行負載平衡的連接使用了多少頻寬?

  • November 9, 2016

我有 3 台伺服器,每台都有 100mbps。

第一台伺服器有一個 nginx 負載均衡器,配置如下

http {
  upstream myproject {
    server 127.0.0.1:8000 weight=3;
    server 127.0.0.1:8001;
    server 127.0.0.1:8002;
    server 127.0.0.1:8003;
  }

  server {
    listen 80;
    server_name www.domain.com;
    location / {
      proxy_pass http://myproject;
    }
  }
}

在伺服器 2 和 3 上,我有一個影片。

我想知道,如果 1 個使用者 = 1mbps,那麼如果 10 個使用者訪問 server1,它會將他們發送到伺服器 2 或 3?我將在伺服器 1、2 和 3 上擁有多少頻寬?

從理論上講,從負載均衡器的角度來看,10 x 1Mbps user通過負載均衡器連接到您的服務會消耗10Mbps down,然後可能類似於5Mbps upserver2,而另一個5Mbps up到 server3。

在負載均衡器上擁有 100Mbps 全雙工連接,您可以為多達 100 位1Mbps使用者提供服務。使用半雙工鏈路(這仍然存在嗎,IRL?),您將被限制為 50 個。


更新:

澄清一下,如果您確實想增加“後端”伺服器的頻寬,那麼“前端”伺服器需要將客戶端重定向到這些後端中的任何一個。

從網路的角度來看,您的客戶端與您的“負載平衡器”建立了 TCP 連接。該會話繼續執行,直到您在其他地方創建另一個會話。但是您的負載均衡器會平衡流量,而不是重定向它。

增加頻寬將意味著:

  • 使用某種循環 DNS,您的公共記錄將指向您的每個後端伺服器。沒有重寫。後端故障會導致客戶端請求失去,直到您更新 DNS 或修復後端伺服器
  • 使用您的第一台伺服器將客戶端重寫為您的任何後端伺服器。暗示您的後端伺服器可通過不同的公共 DNS 使用。將您的“負載均衡器”重新轉換為某種“重寫網關”。可能意味著一些自定義腳本檢查後端可用性以從 nginx 的角度切換配置塊。

更新²,因為新的執行緒正在開始處理這個問題,……

一種方法是讓您的第一台伺服器使用該rewrite指令,而不是proxy_pass. 困難在於重寫到一個動態地址,基於哪個後端實際工作,….這裡給出了一個解決方案:http: //www.sourceprojects.org/nginx-stateless-loadbalancer

另一種方法是使用某種循環 DNS。畢竟,您可能不需要為 server1 定義記錄,您的區域看起來像這樣:

$ORIGIN example.com. myservicename A server2.ip.address myservicename A server3.ip.address

引用自:https://serverfault.com/questions/813896