Node.js 是一个开放源代码、跨平台、事件驱动的 JavaScript 运行时环境,常用于 Web 应用程序的开发。在实际应用中,我们可能需要部署多个 Node.js 实例来满足高并发、高可用等要求。
PM2 是一款基于 Node.js 的进程管理工具,它可以帮助我们管理多个 Node.js 实例,并提供了 Load Balance 功能来实现负载均衡。本文将介绍 PM2 的 Load Balance 功能的使用方法。
安装 PM2
PM2 可以通过 npm 安装,在终端中输入以下命令即可:
npm install pm2 -g
启动 Node.js 实例
首先,我们需要启动多个 Node.js 实例。在本文中,我们使用一个简单的 Node.js Web 服务器作为示例。
下面是一个简单的 Node.js Web 服务器代码,保存为 app.js:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- ----------- --- ------------------- -- -- - ------------------- ------- -- ------------------------ ---
通过以下命令启动 Node.js 实例:
node app.js
启动多个 Node.js 实例时,可以修改端口号,例如:
node app.js 3001 node app.js 3002
使用 PM2 管理 Node.js 实例
启动多个 Node.js 实例后,我们可以使用 PM2 来管理它们,并实现负载均衡。
首先,进入项目目录,然后通过以下命令使用 PM2 启动 Node.js 实例:
pm2 start app.js -i 2
其中,“-i 2” 表示启动 2 个 Node.js 实例。此时,你将看到类似如下输出:
[PM2] Starting /path/to/app.js in cluster_mode (2 instances) [PM2] Done. ┌──────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ ├──────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ │ app │ 0 │ 1.0.0 │ fork │ 46230 │ online │ 0 │ 0s │ 2% │ │ app │ 1 │ 1.0.0 │ fork │ 46231 │ online │ 0 │ 0s │ 3% │ └──────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
此时,“pm2 ls” 命令可以查看当前管理的进程列表:
pm2 ls
输出:
┌──────────┬────┬─────────┬───────┬────────┬─────────┬────────┬─────────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ ├──────────┼────┼─────────┼───────┼────────┼─────────┼────────┼─────────────┼──────────┤ │ app │ 0 │ 1.0.0 │ fork │ 46230 │ online │ 0 │ 5m │ 3% │ │ app │ 1 │ 1.0.0 │ fork │ 46231 │ online │ 0 │ 5m │ 2% │ └──────────┴────┴─────────┴───────┴────────┴─────────┴────────┴─────────────┴──────────┘
使用 PM2 Monitor 监控各个实例的状态:
pm2 monit
在 PM2 Monitor 界面,输入“t”切换到 Process View,然后可以看到各个实例的 CPU、内存、连接数等信息。
使用 PM2 Log 查看日志:
pm2 log
使用 Load Balance 实现负载均衡
使用 PM2 的 Load Balance 功能,可以将请求分发到多个 Node.js 实例中,从而实现负载均衡。
在启动 Node.js 实例时,可以指定端口号,例如,“node app.js 3000”。为了实现负载均衡,我们需要修改 Node.js Web 服务器代码,获取请求端口号并返回响应,例如:
-- -------------------- ---- ------- ----- ---- - ---------------- ----- ------ - ----------------------- ---- -- - ------------------ ---------------- --------------- --------------- ------ ----- ----------------------------- --- ------------------------------- -- -- - ------------------- ------- -- --------------------------------------- ---
修改完代码后,保存为 app_lb.js。然后使用 PM2 启动多个 Node.js 实例:
pm2 start app_lb.js -i 2 --name myapp
此时, PM2 的 Load Balance 功能已自动启用。
使用 curl 工具测试负载均衡:
for i in {1..10}; do curl http://localhost:3000; done
输出:
-- -------------------- ---- ------- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- ----- ------ ------ ----- -----
可以看到,请求被分发到了不同的 Node.js 实例中。
总结
本文介绍了 PM2 的 Load Balance 功能的使用方法,通过启动多个 Node.js 实例并实现负载均衡,可以提高 Web 应用程序的并发处理能力和可用性,从而更好地满足用户需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/654445627d4982a6ebe274c3