运行 docker 图片通过 ECS 需要 PM2 吗?
Is PM2 necessary for running docker images through ECS?
我们曾经在 nodejs 应用程序的生产环境中使用 PM2
现在 docker 理想情况下我们希望每个容器有一个进程(尽管现在已更改为每个容器一个关注点)然后如果您的应用程序是水平可扩展的,您可以生成许多容器。
最后,还有管理容器的供应商,例如 AWS ECS 启动机器并运行 docker 容器。当它崩溃或无法访问时,它会启动另一台机器并确保应用程序是 运行 如果可能的话。
还有一个 HealthCheck option in the docker itself and that is being used by AWS ECS(我假设其他提供商也会使用它)。
所以鉴于所有这些,当 运行 ECS 上的 docker 映像时,我真的需要 PM2 或任何其他进程管理器,还是我完全遗漏了什么?
在我看来,不,您不需要为 ECS 中的容器使用 PM2 或类似的进程管理器。
只需坚持 运行每个容器一个进程(即 node
),让 ECS 代理管理其他一切。正如您所说,如果它崩溃并且进程退出,代理将简单地用集群中的另一个容器替换它。为了弹性,请确保您的集群中至少有 2 个 ECS 实例,并且 运行 每个应用程序至少有 2 个容器(代理将跨实例放置这些容器)。
还可以使用应用程序负载平衡器并在您的目标组中定义 HTTP 运行状况检查,以防万一应用程序变得无响应但进程由于任何原因不会退出。
我们曾经在 nodejs 应用程序的生产环境中使用 PM2
现在 docker 理想情况下我们希望每个容器有一个进程(尽管现在已更改为每个容器一个关注点)然后如果您的应用程序是水平可扩展的,您可以生成许多容器。
最后,还有管理容器的供应商,例如 AWS ECS 启动机器并运行 docker 容器。当它崩溃或无法访问时,它会启动另一台机器并确保应用程序是 运行 如果可能的话。 还有一个 HealthCheck option in the docker itself and that is being used by AWS ECS(我假设其他提供商也会使用它)。
所以鉴于所有这些,当 运行 ECS 上的 docker 映像时,我真的需要 PM2 或任何其他进程管理器,还是我完全遗漏了什么?
在我看来,不,您不需要为 ECS 中的容器使用 PM2 或类似的进程管理器。
只需坚持 运行每个容器一个进程(即 node
),让 ECS 代理管理其他一切。正如您所说,如果它崩溃并且进程退出,代理将简单地用集群中的另一个容器替换它。为了弹性,请确保您的集群中至少有 2 个 ECS 实例,并且 运行 每个应用程序至少有 2 个容器(代理将跨实例放置这些容器)。
还可以使用应用程序负载平衡器并在您的目标组中定义 HTTP 运行状况检查,以防万一应用程序变得无响应但进程由于任何原因不会退出。