PM2 是一个基于 Node.js 的进程管理器,可以轻松地管理 Node.js 应用。PM2 支持多进程,可以实现负载均衡和高可用。在本篇文章中,我们将介绍如何使用 PM2 部署多个 Node.js 应用。
安装 PM2
如果你还没有安装 PM2,可以通过以下命令安装:
npm install pm2 -g
部署应用
首先,我们需要准备好我们的 Node.js 应用。这里我们以创建一个简单的 HTTP 服务为例。新建一个文件夹 myapp
,并在该文件夹下新建一个 index.js
文件,代码如下:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - -------------- ---------- --- ------------------- -- -- - ------------------- -- --------- -- ---- ------- ---
这是一个简单的 HTTP 服务,它会监听 3000 端口,并返回一条 Hello World
的信息。接下来,我们可以使用 PM2 来启动和管理我们的应用。
pm2 start myapp/index.js --name myapp
这里我们使用 pm2 start
命令来启动我们的应用,myapp/index.js
是我们的应用入口文件,--name myapp
表示我们给应用起了一个名字,以便后续管理。
可以通过以下命令查看该应用的状态:
pm2 list
我们会看到如下输出:
┌───────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime│ cpu │ memory │ ├───────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ myapp │ 0 │ 1.0.0 │ fork │ 12345 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ └───────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
可以通过以下命令停止该应用:
pm2 stop myapp
然后可以使用以下命令删除该应用:
pm2 delete myapp
部署多个应用
如果我们需要部署多个应用,我们可以通过以下命令来启动多个应用:
pm2 start myapp1/index.js --name myapp1 pm2 start myapp2/index.js --name myapp2 pm2 start myapp3/index.js --name myapp3
这里我们分别启动了三个不同的应用,并分别给它们命名为 myapp1
,myapp2
和 myapp3
。
我们可以通过以下命令查看所有启动的应用:
pm2 list
我们会看到如下输出:
┌───────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime│ cpu │ memory │ ├───────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ myapp1 │ 0 │ 1.0.0 │ fork │ 12345 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ │ myapp2 │ 1 │ 1.0.0 │ fork │ 23456 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ │ myapp3 │ 2 │ 1.0.0 │ fork │ 34567 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ └───────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
可以使用以下命令来停止、删除每个应用:
pm2 stop myapp1 pm2 delete myapp1 pm2 stop myapp2 pm2 delete myapp2 pm2 stop myapp3 pm2 delete myapp3
负载均衡
当我们部署多个应用时,我们需要考虑如何实现负载均衡。PM2 提供了多种负载均衡策略,包括负载均衡、轮询、最小连接数和源地址哈希等。
例如,我们可以通过以下命令来启动两个应用,并使用轮询算法来实现负载均衡:
pm2 start myapp1/index.js --name myapp1 -i 2
这里我们使用 -i
参数来指定启动两个应用。我们可以使用以下命令来查看应用的状态:
pm2 list
我们会看到如下输出:
┌───────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime│ cpu │ memory │ ├───────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ myapp1 │ 0 │ 1.0.0 │ cluster│ 12345 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ │ myapp1 │ 1 │ 1.0.0 │ cluster│ 23456 │ online │ 0 │ 0s │ 0% │ 15.5 MB │ └───────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
可以看到,这里启动了两个 id 为 0 和 1 的应用。
接下来,我们可以使用 pm2 scale
命令来扩容或缩容应用:
pm2 scale myapp1 4
这里我们使用 pm2 scale
命令来将应用 myapp1
的实例数扩容到 4。
可以使用以下命令来查看应用的状态:
pm2 list
我们会看到如下输出:
-- -------------------- ---- ------- --------------------------------------------------------------------------------------------- - --- ---- - -- - ------- - ---- - --- - ------ - ------- - ------- --- - ------ - --------------------------------------------------------------------------------------------- - ------ - - - ----- - -------- ----- - ------ - - - -- - -- - ---- -- - - ------ - - - ----- - -------- ----- - ------ - - - -- - -- - ---- -- - - ------ - - - ----- - -------- ----- - ------ - - - -- - -- - ---- -- - - ------ - - - ----- - -------- ----- - ------ - - - -- - -- - ---- -- - - ------ - - - ----- - -------- ----- - ------ - - - -- - -- - ---- -- - ---------------------------------------------------------------------------------------------
可以看到,我们扩容后,应用实例数变为了 4。
总结
本篇文章介绍了如何使用 PM2 部署多个 Node.js 应用,并实现负载均衡。如今,Node.js 在互联网应用中使用越来越广泛,通过学习和使用 PM2,我们可以更加方便地管理和部署 Node.js 应用,确保应用的可靠性和高效性。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64e8349df6b2d6eab33b281a