Linux 系统中 Node.js 如何实现负载均衡

351
2025/4/9 15:32:50
栏目: 云计算
开发者测试专用服务器限时活动,0元免费领,库存有限,领完即止! 点击查看>>

在 Linux 系统中,Node.js 可以通过多种方式实现负载均衡。以下是一些常见的方法:

1. 使用 Nginx 作为反向代理服务器

Nginx 是一个高性能的 HTTP 和反向代理服务器,可以用来分发请求到多个 Node.js 应用实例。

配置示例:

http {
    upstream backend {
        server 127.0.0.1:3000;
        server 127.0.0.1:3001;
        server 127.0.0.1:3002;
    }

    server {
        listen 80;

        location / {
            proxy_pass http://backend;
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
        }
    }
}

2. 使用 HAProxy

HAProxy 是一个可靠、高性能的 TCP/HTTP 负载均衡器,适用于高可用性和高负载的环境。

配置示例:

global
    log /dev/log local0
    log /dev/log local1 notice
    daemon

defaults
    log global
    mode http
    option httplog
    option dontlognull
    timeout connect 5000ms
    timeout client 50000ms
    timeout server 50000ms

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin
    server node1 127.0.0.1:3000 check
    server node2 127.0.0.1:3001 check
    server node3 127.0.0.1:3002 check

3. 使用 Node.js 内置的 Cluster 模块

Node.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
    http.createServer((req, res) => {
        res.writeHead(200);
        res.end('hello world\n');
    }).listen(8000);

    console.log(`Worker ${process.pid} started`);
}

4. 使用 PM2 管理 Node.js 应用

PM2 是一个进程管理器,可以用来管理和负载均衡 Node.js 应用。

安装 PM2:

npm install pm2 -g

启动应用并实现负载均衡:

pm2 start app.js -i max

-i max 参数会根据 CPU 核心数自动启动相应数量的工作进程。

总结

以上方法各有优缺点,选择哪种方法取决于你的具体需求和环境。Nginx 和 HAProxy 适用于需要高性能和复杂配置的场景,而 Node.js 的 Cluster 模块和 PM2 则更适合简单的负载均衡需求。

辰迅云「云服务器」,即开即用、新一代英特尔至强铂金CPU、三副本存储NVMe SSD云盘,价格低至29元/月。点击查看>>

推荐阅读: linux安装软件命令是什么