我发现了很多关于如何使用上游服务器将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;
}
}
但就配置这种架构而言,这是我能找到的程度.目前我有一个部署到3个后端VPS服务器的rails应用程序,我正在使用Unicorn作为我的HTTP服务器.我是否需要在我的负载平衡服务器上安装我的ruby以及我的rails应用程序和独角兽?我是否需要在每个上游服务器上安装Nginx?如果是这样,我该如何配置它们?如果我在建筑中引入类似Varnish的东西,它会去哪里?在负载平衡器或每个后端之前?
这是我如何组织一切的视觉效果:
+---> backend1 <---+
| |
[requests] <---> [Nginx load-balancer]-+---> backend2 <---+-[Database server]
| |
+---> backend3 <---+
最佳答案
简短回答:
Nginx实际上只有一个工作,那个工作是接受传入的请求并将其交给后端服务器.
鉴于此,您的前端服务器只需要运行nginx,而您的后端服务器只需要运行rails.合理?
现在,如果您的后端和前端都在同一台服务器上运行,那么,当然,它也必须安装在那里,但是从图中我不相信是这种情况.
如果您引入了一个HTTP缓存软件,例如Varnish,它将介于Nginx和Rails之间,很可能也会在后端服务器上运行.因此请求将遵循以下路径:
Nqinx -> Varnish -> Rails