一尘不染

一起使用pm2和docker有什么意义?

docker

我们已经成功地使用pm2在服务器上运行应用程序。我们目前正在迁移至docker,我们看到了http://pm2.keymetrics.io/docs/usage/docker-
pm2-nodejs/

但是,将两者一起使用的意义何在?码头工人不提供pm2所做的一切吗?


阅读 949

收藏
2020-06-17

共1个答案

一尘不染

通常在docker内部使用pm2是没有意义的。

PM2和Docker都是流程管理器,它们都可以执行日志转发,重新启动崩溃的工作程序以及许多其他事情。如果在docker容器中运行pm2,则将隐藏服务的潜在问题,至少要注意以下几点:

1)如果您使用pm2在每个容器中运行一个进程,那么除了增加内存消耗之外,您不会获得太多收益。可以使用具有重新启动策略的纯docker
重新启动。其他基于docker的环境(例如ECS或Kubernetes)也可以做到这一点。

2)如果您运行多个进程,则将使监视更加困难。CPU /内存指标不再对您的封闭环境直接可用。

3)对于单个PM2流程的健康检查请求将在工人之间分配,这很可能隐藏不健康的目标

4)pm2隐藏了工伤事故。您几乎不会从监视系统(如CloudWatch)中了解它们。

5)负载平衡变得更加复杂,因为实际上您将具有多个级别的负载平衡。

在docker容器内运行多个进程也与docker的理念相反,即每个容器仅保留一个进程。

我能想到的一种情况是,您对Docker环境的控制非常有限。在这种情况下,运行pm2可能是控制工作人员调度的唯一选择。

2020-06-17