需要 HAproxy + Varnish + nginx 設置建議
目前,我有兩個執行 HAProxy 的負載均衡器,它們將請求轉發到後端,每個後端都在 nginx 前面執行 Varnish 記憶體。我認為這會在後端伺服器上分配大部分頻寬,但我的負載平衡器似乎每月使用數百 GB 的頻寬,這與後端使用的頻寬很接近。我想這是有道理的,因為流量都是通過負載平衡器路由的?
我的負載均衡器和後端位於美國的不同地區。如果我只在前端執行 HAProxy 和 Varnish,而在後端只執行 nginx,效率會更高嗎?謝謝!
**對於您的第一個問題:**是的,在正常的 HAProxy 配置中,所有流量都流經負載均衡器,無論是當它進入您的伺服器,還是從伺服器再次流出到客戶端時。對於所有負載平衡器,這或多或少總是如此,因為它們通常被實現為 HTTP 代理或 IP 級 NAT/路由框。例外是使用“直接伺服器返回”(DSR) 時,請參閱此 inlab.com 對 DSR 的解釋。
我的負載均衡器和後端位於美國的不同地區
誒,為什麼?如果您使用的是地理負載平衡或多播路由,那麼我不希望您會問這些問題。在正常案例中,您確實應該將伺服器放在同一個機架上,並在快速無衝突、低延遲的 LAN 上。這將使您的伺服器軟體的生活更輕鬆,並為您的伺服器提供更多性能,以及更一致/可靠的性能特徵……
您正在使用的軟體的規範設置是這樣的:
nginx(用於 HTTP 壓縮)–> Varnish 記憶體(用於記憶體)–> HTTP 級負載均衡器(HAProxy,或 nginx,或 Varnish 內置)–> webservers。
或者,如果您的負載很高,您可以在最前面有多個 nginx 或 varnish 伺服器;但這適用於每秒有數千個請求的站點。
關於你的第二個問題當你問“更高效”時,我懷疑你的意思。更高效,因為伺服器之間的流量更低?稍微地,因為 Varnish 記憶體阻止了一些流量返回更遠的地方。在 CPU 使用方面更高效——只要保持邏輯結構相同,您就可以將服務轉移到負載較少的物理伺服器上。