Ruby-on-Rails

像我五歲一樣用 Nginx 解釋負載平衡

  • December 29, 2013

我發現了很多關於如何使用上游伺服器將 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

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