在 Linux 上部署 Node.js 应用以实现高可用性和负载均衡,可以使用 Node.js 内置的 cluster 模块或第三方工具如 PM2。以下是这两种方法的详细步骤:
cluster 模块创建一个简单的 Node.js 应用
假设你已经有一个简单的 Node.js 应用,例如 app.js:
const http = require('http');
const server = http.createServer((req, res) => {
  res.writeHead(200);
  res.end('Hello World\n');
});
server.listen(3000, () => {
  console.log('Server running at http://localhost:3000/');
});
使用 cluster 模块创建集群
修改 app.js 文件,使用 cluster 模块来创建多个工作进程:
const cluster = require('cluster');
const http = require('http');
const numCPUs = require('os').cpus().length;
if (cluster.isMaster) {
  console.log(`Master ${process.pid} is running`);
  // Fork workers.
  for (let i = 0; i < numCPUs; i++) {
    cluster.fork();
  }
  cluster.on('exit', (worker, code, signal) => {
    console.log(`worker ${worker.process.pid} died`);
  });
} else {
  // Workers can share any TCP connection
  // In this case it is an HTTP server
  const server = http.createServer((req, res) => {
    res.writeHead(200);
    res.end('Hello World\n');
  });
  server.listen(3000, () => {
    console.log(`Worker ${process.pid} started`);
  });
}
运行应用
在终端中运行以下命令来启动应用:
node app.js
这将启动多个工作进程,每个进程都会监听同一个端口(3000),从而实现负载均衡。
PM2 是一个功能强大的 Node.js 进程管理工具,可以轻松实现集群部署。
安装 PM2
使用 npm 安装 PM2:
npm install pm2 -g
启动应用
使用 PM2 启动你的 Node.js 应用,并指定要启动的工作进程数量:
pm2 start app.js -i <number_of_workers>
例如,如果你想启动 4 个工作进程,可以运行:
pm2 start app.js -i 4
查看应用状态
使用以下命令查看应用的运行状态:
pm2 status
监控和管理
PM2 提供了许多有用的命令来监控和管理你的应用,例如:
查看日志:
pm2 logs
停止应用:
pm2 stop app
重启应用:
pm2 restart app
删除应用:
pm2 delete app
通过以上两种方法,你可以在 Linux 上实现 Node.js 应用的集群部署,从而提高应用的可用性和性能。