【问题标题】:How to config, run, monitor and manage multiple of different node service?如何配置、运行、监控和管理多个不同的节点服务?
【发布时间】:2015-03-13 10:11:37
【问题描述】:

我正在开发一个大型系统(MEAN Stack + ElasticSearch + RabbitMQ), 有许多不同的 nodejs 项目和队列一起工作。 我有几个问题。

  1. 当我想运行和测试整个系统时,我必须打开很多终端窗口来运行每个项目。如何在易于监控的情况下一次运行它们。

  2. 当我想在多台机器上运行同一个项目时,我怎样才能轻松配置所有这些,因为有时需要花费太多时间来移动并一个接一个地配置它们。

  3. 如何轻松配置、运行、监控和管理整个系统。例如,我想知道有多少台机器正在运行一个项目。或者有时我想一次更改消息队列名称或 IP 地址,我不想去两个项目上的每台机器一个接一个地更改它们

对不起,我的语法不好,请随意编辑。 提前致谢。

【问题讨论】:

  • 像这样的大型元问题通常在这里很快就会结束(有一些值得注意的例外)。如果您想提出一个更成功的问题,我建议您一次只问一个问题,并尽可能具体地说明您的问题。

标签: node.js rabbitmq message-queue distributed-computing mean-stack


【解决方案1】:

看看PM2
我将它用于开发和生产中

使用此工具,您可以定义一个简单的 JSON 文件来定义您的环境。

pm2_services.json

[{
  "name"        : "WORKER",
  "script"      : "worker.js",
  "instances"   : "3",
  "port"        : 3002,
  "node-args"   : "A_CONFIG_KEY"
}, {
  "name"        : "BACKEND",
  "script"      : "backend.js",
  "instances"   : "3",
  "port"        : 3000,
  "node-args"   : "A_CONFIG_KEY"
}, {
  "name"        : "FRONTEND",
  "script"      : "frontend.js",
  "instances"   : "3",
  "port"        : 3001,
  "node-args"   : "A_CONFIG_KEY"
}]

然后运行pm2 start pm2_services.json

相关命令:

  • pm2 logs显示所有服务的日志
  • pm2 ls显示正在运行
  • pm2 monit显示当前cpu和内存状态
  • pm2 start FRONTEND启动服务
  • pm2 stop FRONTEND 停止服务

注意:

小心 PM2 的手表功能。
在我的情况下,我的 CPU 跳到永久 100%。

要查看许多文件以进行更改,我使用node-dev
这是与 PM2 一起使用的解决方案

[{
  "name"        : "WORKER",
  "script"      : "worker.js",
  "instances"   : 1,
  "watch"       : false,
  "exec_interpreter" : "node-dev",
  "exec_mode"   : "fork_mode"
}]

【讨论】:

    【解决方案2】:
    1. 您可以编写一个 Node 项目,使用 child_process 以适当的参数启动所有其他项目。
    2. 您可以考虑使用 Puppet 或 Chef 之类的工具。
    3. 与 #2 相同。

    【讨论】:

      猜你喜欢
      • 2021-09-12
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-10
      • 1970-01-01
      • 2018-12-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多