Ruby-on-Rails
像我五歲一樣用 Nginx 解釋負載平衡
我發現了很多關於如何使用上游伺服器將 Nginx 配置為負載均衡器的 DIY 文章和教程:
upstream backend { ip_hash; server 1.2.3.4; server 1.2.3.5; server 1.2.3.6; } server { location / { proxy_pass http://backend; } }
但就配置此架構而言,這就是我所能找到的程度。目前我有一個 Rails 應用程序部署到 3 個後端 VPS 伺服器,並且我使用 Unicorn 作為我的 HTTP 伺服器。我是否還需要在負載平衡伺服器上安裝我的 ruby 以及我的 Rails 應用程序和 unicorn?我需要在每個上游伺服器上安裝 Nginx 嗎?如果是這樣,我該如何配置它們?如果我在架構中引入 Varnish 之類的東西,它會去哪裡?在負載均衡器或每個後端之前?
這是我如何組織一切的視覺效果:
+---> backend1 <---+ | | [requests] <---> [Nginx load-balancer]-+---> backend2 <---+-[Database server] | | +---> backend3 <---+
簡短的回答:
Nginx
實際上只有一項工作,該工作就是接受傳入的請求並將其交給後端伺服器。鑑於此,您的前端伺服器只需要執行
nginx
,而您的後端伺服器只需要執行rails
。有道理?現在,如果您的後端和前端都在同一台伺服器上執行,那麼,是的,當然,它也必須安裝在那裡,但從您的圖表來看,我不認為是這種情況。
如果您引入 HTTP 記憶體軟體,例如
Varnish
,它將介於Nginx
和之間Rails
,很可能也在後端伺服器上執行。因此請求將遵循以下路徑:Nqinx -> Varnish -> Rails