在自动缩放环境中使用 pm2
Using pm2 Inside of an Auto-Scaling Environment
我计划使用 AWS EC2 容器服务来托管一个由 Node.js + Express 实例组成的自动扩展组,这些实例公开了 REST API。我看过多篇文章告诉我我应该使用 pm2
而不是 forever.js
以确保我的应用程序在崩溃时重新启动,我可以顺利地重新加载应用程序等。
但是,对于在容器内 pm2
我应该使用什么配置,我有点困惑。由于这些实例将自动缩放,我是否仍应 运行 "cluster mode" 中的流程管理员?我想确保我能充分利用我的实例,而且我似乎无法找到关于在这样的自动缩放环境中是否需要集群的任何明确答案(只是 pm2
附带负载平衡器和缩放技术本身)。
在任何情况下,我都会在 pm2 上使用 systemd,因为它现在在大多数 Linux 发行版中都是原生的,并且有效地少了一步(对于 pm2,您仍然需要使 pm2 守护进程成为一项服务)。
至于 运行 集群等,我认为这在很大程度上取决于您的 Node 应用程序在做什么。因此,我可能会部署不使用它的容器,作为容器而不是内部进行扩展,并分析一段时间。这使每个容器内的东西尽可能简单,并让 EVS 服务管理器完成它的工作。
当大多数人使用集群模块时,他们会为每个 CPU 核心分配一个或两个工作人员。鉴于一个容器与主机上的任何其他容器共享 CPU 个核心,看起来您并没有因为额外的复杂性而受到太大的打击。
我计划使用 AWS EC2 容器服务来托管一个由 Node.js + Express 实例组成的自动扩展组,这些实例公开了 REST API。我看过多篇文章告诉我我应该使用 pm2
而不是 forever.js
以确保我的应用程序在崩溃时重新启动,我可以顺利地重新加载应用程序等。
但是,对于在容器内 pm2
我应该使用什么配置,我有点困惑。由于这些实例将自动缩放,我是否仍应 运行 "cluster mode" 中的流程管理员?我想确保我能充分利用我的实例,而且我似乎无法找到关于在这样的自动缩放环境中是否需要集群的任何明确答案(只是 pm2
附带负载平衡器和缩放技术本身)。
在任何情况下,我都会在 pm2 上使用 systemd,因为它现在在大多数 Linux 发行版中都是原生的,并且有效地少了一步(对于 pm2,您仍然需要使 pm2 守护进程成为一项服务)。
至于 运行 集群等,我认为这在很大程度上取决于您的 Node 应用程序在做什么。因此,我可能会部署不使用它的容器,作为容器而不是内部进行扩展,并分析一段时间。这使每个容器内的东西尽可能简单,并让 EVS 服务管理器完成它的工作。
当大多数人使用集群模块时,他们会为每个 CPU 核心分配一个或两个工作人员。鉴于一个容器与主机上的任何其他容器共享 CPU 个核心,看起来您并没有因为额外的复杂性而受到太大的打击。