前言
Node.js 是一种非常流行的后端语言,而 PM2 是 Node.js 的进程管理器,它可以让我们非常方便地管理 Node.js 进程。但是当我们的应用需要部署到多台服务器时,如何让这些服务器协同工作,构建分布式 Node.js 集群呢?本文将介绍如何使用 PM2 在多台服务器之间协同工作,构建分布式 Node.js 集群。
PM2 集群模式
PM2 提供了集群模式,可以让我们非常方便地构建分布式 Node.js 集群。在集群模式下,PM2 会自动在多台服务器之间分配进程,并且可以自动进行负载均衡。下面是一个简单的示例代码:
// app.js const http = require('http'); http.createServer((req, res) => { res.writeHead(200); res.end('hello world\n'); }).listen(3000);
我们可以使用 PM2 启动这个应用:
pm2 start app.js -i max
这里的 -i max
表示使用最大数量的进程,也就是将进程分配到所有可用的 CPU 上。此时,我们可以使用 pm2 list
命令查看当前的进程:
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │ ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ app │ 0 │ N/A │ fork │ 12345 │ online │ 0 │ 0s │ 1% │ 22.1 MB │ disabled │ │ app │ 1 │ N/A │ fork │ 12346 │ online │ 0 │ 0s │ 0% │ 22.1 MB │ disabled │ └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
可以看到,我们启动了两个进程。接下来,我们可以使用 pm2 scale
命令来增加或减少进程数量:
pm2 scale app +2
这里的 +2
表示增加两个进程。此时,我们可以再次使用 pm2 list
命令查看当前的进程:
┌──────────┬────┬─────────┬──────┬───────┬────────┬─────────┬────────┬─────┬───────────┬──────────┐ │ App name │ id │ version │ mode │ pid │ status │ restart │ uptime │ cpu │ mem │ watching │ ├──────────┼────┼─────────┼──────┼───────┼────────┼─────────┼────────┼─────┼───────────┼──────────┤ │ app │ 0 │ N/A │ fork │ 12345 │ online │ 0 │ 0s │ 1% │ 22.1 MB │ disabled │ │ app │ 1 │ N/A │ fork │ 12346 │ online │ 0 │ 0s │ 0% │ 22.1 MB │ disabled │ │ app │ 2 │ N/A │ fork │ 12347 │ online │ 0 │ 0s │ 0% │ 22.1 MB │ disabled │ │ app │ 3 │ N/A │ fork │ 12348 │ online │ 0 │ 0s │ 0% │ 22.1 MB │ disabled │ └──────────┴────┴─────────┴──────┴───────┴────────┴─────────┴────────┴─────┴───────────┴──────────┘
可以看到,我们成功增加了两个进程。
PM2 多服务器部署
在多台服务器上部署 PM2 集群非常简单,只需要在每台服务器上启动相同的 PM2 集群即可。在启动 PM2 集群时,我们可以使用 --only
和 --ignore
参数来指定需要启动的服务器和忽略的服务器。例如,我们有两台服务器,分别是 192.168.1.1
和 192.168.1.2
,我们可以使用以下命令在这两台服务器上启动 PM2 集群:
# 在 192.168.1.1 上启动 PM2 集群 pm2 start app.js -i max --only 192.168.1.1 # 在 192.168.1.2 上启动 PM2 集群 pm2 start app.js -i max --only 192.168.1.2
这样,我们就成功在两台服务器上启动了相同的 PM2 集群。如果需要在多台服务器上启动 PM2 集群,只需要按照上面的步骤在每台服务器上启动相同的 PM2 集群即可。
PM2 负载均衡
在 PM2 集群模式下,PM2 会自动进行负载均衡,也就是将请求分配到不同的进程中,以达到均衡负载的目的。在 PM2 集群模式下,PM2 会根据不同的负载均衡算法来分配请求,目前支持以下几种负载均衡算法:
- 轮询算法(Round Robin)
- 最少连接算法(Least Connections)
- IP 哈希算法(IP Hash)
我们可以使用 pm2 scale
命令来增加或减少进程数量,以达到均衡负载的目的。例如,如果我们想要增加进程数量,可以使用以下命令:
pm2 scale app +2
这里的 +2
表示增加两个进程。此时,PM2 会自动将请求分配到新的进程中,以达到均衡负载的目的。
总结
本文介绍了如何使用 PM2 在多台服务器之间协同工作,构建分布式 Node.js 集群。通过本文的学习,我们可以轻松地构建分布式 Node.js 应用,并且可以使用 PM2 提供的负载均衡功能,让应用更加稳定和可靠。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/65e3e56b1886fbafa4024f49