3

我有一个想要在多核(2CPU * 2Cores = 4Cores)服务器上运行的 Node.js 应用程序。在阅读了关于这个主题的一堆 Stack Overflow 线程之后,我决定在 4 个不同的端口上启动 4 个独立的节点实例,并使用 Nginx 在它们之间进行负载平衡。我决定在节点集群上使用这种方法。

以下是我试图回答的问题:

  1. 在 2cpu * 2cores/cpu = 4 核心服务器与 1cpu * 4cores/cpu = 4core 服务器上启动 4 个节点实例的方式有什么不同。我认为没有任何区别,只是想确认一下。

  2. 我有一个 conf 文件来启动我的服务。这个 conf 文件实际上是一个脚本,它驻留在/etc/init并启动我的 Node 应用程序。我应该从这 1 个 conf 文件启动 4 个实例,还是应该创建 4 个 conf 文件并每个 conf 文件启动一个实例?

    同样,我觉得后一种方法更好,但想确认一下。

4

2 回答 2

1

你为什么决定:

  1. 使用 nginx 进行负载均衡?haproxy 是一个更好的解决方案。
  2. 当有一个集群模块为您执行此操作时,手动启动 n 个进程?

    如果你启动 n 个不同的进程,你需要监听 n 个不同的端口。

    如果您使用集群模块,则不需要任何负载均衡器,因为此工作是在内部完成的,并且 n 个工作人员将侦听同一端口。如果工人死亡,您会收到通知,基本上您可以轻松管理他们。

所有工作人员都可以打开/读取/写入/关闭同一个文件,您不需要 n 个配置文件。

于 2013-03-01T22:11:33.773 回答
0
  1. 每个核心 1 个实例是一个很好的经验法则,但是如果您还在同一台服务器上运行一些服务(数据库、redis、memcache、队列......),您可能希望启动更少的实例,这样这些实例就不会“打架”为CPU。

  2. 您最终将需要重新启动单个实例,因为一个实例崩溃了,或者使用了太多内存,或者其他原因。所以单独的脚本会更可取,甚至是允许您单独或一起控制实例的脚本(这最初是更多的工作)。

于 2013-03-01T19:26:08.743 回答