我们需要在一组服务器上部署多个节点/快速应用程序(位于负载均衡器后面)。这些应用程序在功能上完全相互独立。我先说明我在想这样做的,然后我在最佳实践方面寻找输入,如果有在我的设计中的任何红旗等在节点群集上运行多个节点应用程序
这里是我想的设置:
负载均衡器后面的前端服务器将运行node-http-proxy,它将接受端口80上的传入请求。此反向代理将将请求路由到在此服务器上的不同端口上运行的相应节点应用程序。为前:
var http = require('http'),
httpProxy = require('http-proxy');
var options = {
router: {
'myapphost.com/MyFirstApp': 'myapphost.com:3000',
'myapphost.com/MySecondApp': 'myapphost.com:3001'
}
}
// ...and then pass them in when you create your proxy.
var proxyServer = httpProxy.createServer(options).listen(80);
每个节点的应用程序将节点群集上使用类似Cluster2中充分利用多核系统的运行。
我的问题:
- 这是正确的设计和策略?
- 我们的一些应用程序需要有状态。在这种设置中进行国家管理的最佳方式是什么?使用Redis等外部会话存储是正确的方法吗?或者将会话固定到给定的前端机器并使用内存中的会话存储?
UPDATE:
因为我张贴了这个问题,交谈,两个人后,还有一个办法,已经up--
我可以使用Nginx的反向代理和负载均衡器在我的前端机器前面。每个前端机器将只提供一个应用程序。该应用可以有一台备份机器。 (取决于要求)。所以如果我有三个应用程序,我会有三个独立的机器,每个机器都提供不同的应用程序Nginx会在端口80上接收所有请求,Nginx反向代理会将请求路由到正确的前端机器。每台机器都有节点群集以利用多核系统。这种方法的优点是 - 每个应用程序的部署变得更加容易。另外,我们可以分别缩放每个应用程序。
请分享您对这种方法的看法。