通过 ECS 运行 docker 镜像是否需要 PM2?

lov*_*ntu 3 amazon-web-services amazon-ecs docker pm2

我们曾经 为 nodejs 应用程序在生产中使用PM2

现在来了 docker,它理想地希望我们每个容器有一个进程(尽管现在它已更改为每个容器一个关注点),然后如果您的应用程序是水平可扩展的,则您可以生成许多容器。

最后,还有管理容器的提供商,例如 AWS ECS 启动机器并运行 docker 容器。当它崩溃或无法访问时,它会启动另一台机器并确保应用程序在可能的情况下运行。docker本身也有一个HealthCheck选项,AWS ECS正在使用它(我假设其他提供商也会使用它)。

因此,考虑到所有这些,在 ECS 上运行 docker 映像时我是否真的需要 PM2 或任何其他进程管理器,还是我完全遗漏了什么?

Ric*_*cis 12

在我看来,不 - 您不应该需要为 ECS 中的容器使用 PM2 或类似的流程管理器。

只需坚持为node每个容器运行一个进程(即),让 ECS 代理管理其他一切。正如您所说,如果它崩溃并且进程退出,代理将简单地用集群中的另一个容器替换它。为了恢复能力,请确保您的集群中至少有 2 个 ECS 实例,并为每个应用程序运行至少 2 个容器(代理将跨实例放置这些容器)。

还可以使用应用程序负载均衡器并在您的目标组中定义 HTTP 运行状况检查,以防万一应用程序变得无响应,但无论出于何种原因该进程都不会退出。