使用 nginx 進行負載平衡的連接使用了多少頻寬?
我有 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 up
server2,而另一個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