多个节点服务器进程为多个站点提供请求

时间:2016-11-07 09:45:49

标签: node.js

我在同一服务器上为几个站点提供服务的nodej上阅读了很多帖子和教程:每个站点启动1个节点进程,并根据请求所在的域来分配流量。

我正在调查的是实现相同结果的另一种方式:

在服务器上有一定数量的nodejs进程(假设每个核心为4 - 1),提供来自未定义数量的网站的请求(比如10)。因此,每个节点进程都不会绑定到特定的域:

  

请求来自domain1,ngnix会将请求转发给任何一个   第一个可用的节点进程。

     

请求来自domain2,ngnix会将请求转发给任何一个   第一个可用的节点进程。

通过这种方式,我可以继续向服务器添加域/站点,并让4节点进程丛林以不加区别的方式处理它们。

这种设置是否可行?如果是,我应该如何组织它?

1 个答案:

答案 0 :(得分:0)

据我所知,您希望在多个实例中扩展应用程序。我们假设您要创建一个包含4台计算机的集群,让我们为它们命名:

  1. m1.your-domain.com
  2. m2.your-domain.com
  3. m3.your-domain.com
  4. m4.your-domain.com
  5. 我们假设它们是具有4个内核的实例,因此最好在每个实例上启动应用程序的4个进程,并假设您的应用程序将在端口3000上运行。

    在每个实例上,您都可以在端口80上配置nginx,它将流量转发到实例中的进程。然后,您需要编排这4个实例,并且可以使用负载平衡器来执行此操作。您可以通过另外一台侦听此域lb.your-domain.com的计算机来创建一台。您可以使用nginx创建负载均衡器,也可以使用aws elb之类的其他服务。现在,负载均衡器将配置为使用Round Robin等算法将流量转发到您的实例。顺便说一句,您的负载均衡器将向公众开放,没有人应该能够访问您的实例域,但只能访问特定的ips。