PM2运行moleculer

Moleculer 完全可以使用 PM2 来运行,借助 PM2 的进程管理能力,能提升微服务的可靠性和可扩展性。下面为你详细介绍具体的集成方法:

1. 安装 PM2

1
npm install -g pm2

2. 用 PM2 直接运行 Moleculer 服务

假设你的 Moleculer 服务入口文件是 index.js,可以使用以下命令启动服务:

1
pm2 start index.js --name "moleculer-service"

3. 使用 PM2 配置文件(推荐)

创建一个 ecosystem.config.js 配置文件,对多个微服务进行管理:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
module.exports = {
apps: [
{
name: "gateway",
script: "src/gateway.js",
instances: 1,
autorestart: true,
watch: false,
max_memory_restart: "1G",
env: {
NODE_ENV: "development"
},
env_production: {
NODE_ENV: "production"
}
},
{
name: "users-service",
script: "src/services/users.service.js",
instances: 2, // 启动 2 个实例实现负载均衡
exec_mode: "cluster"
},
{
name: "products-service",
script: "src/services/products.service.js",
instances: "max", // 根据 CPU 核心数自动调整实例数
exec_mode: "cluster"
}
]
};

启动命令

1
pm2 start ecosystem.config.js --env production

4. 关键配置参数

参数 作用
instances 指定服务实例数量(例如:12"max"
exec_mode 运行模式("fork""cluster"
autorestart 服务崩溃时自动重启
watch 监听文件变化并自动重启(开发环境适用)
max_memory_restart 内存超过阈值时自动重启(例如:"1G"
env 设置环境变量(如 NODE_ENV

5. 使用 PM2 管理 Moleculer 的优势

  • 进程监控:可以实时查看服务的 CPU、内存使用情况。
  • 自动重启:当服务崩溃或内存溢出时,能自动重启服务。
  • 负载均衡:通过集群模式提升服务吞吐量。
  • 日志管理:集中管理所有服务的日志。
  • 版本控制:支持无缝升级服务。

6. 常用 PM2 命令

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
# 启动服务
pm2 start ecosystem.config.js

# 查看服务状态
pm2 status

# 查看日志
pm2 logs

# 重启服务
pm2 restart all

# 停止服务
pm2 stop all

# 部署到生产环境
pm2 deploy ecosystem.config.js production setup
pm2 deploy ecosystem.config.js production

7. 生产环境部署建议

  1. 服务发现与注册

    • 结合 Consul、Etcd 或 NATS 实现服务自动注册与发现。
    • 在 PM2 配置中设置对应的环境变量。
  2. 监控与告警

    • 集成 Moleculer 的 metrics 插件与 Prometheus、Grafana。
    • 使用 PM2 的 watch & reload 功能监控服务健康状态。
  3. 分布式日志

    • 将日志发送到 Elasticsearch 或 Kafka 进行集中管理。

示例:在 PM2 中运行 Moleculer API 网关

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
// ecosystem.config.js
module.exports = {
apps: [
{
name: "api-gateway",
script: "src/gateway.js",
instances: 2,
exec_mode: "cluster",
env: {
PORT: 3000,
MOLECULER_TRANSPORT: "NATS",
NATS_URL: "nats://localhost:4222"
}
}
]
};

总结

PM2 能为 Moleculer 微服务提供强大的进程管理能力,尤其适合生产环境的部署。通过合理配置 PM2,你可以轻松实现服务的高可用、弹性伸缩和自动化运维。