簡體   English   中英

如何使用pm2在不同端口上負載平衡api后端

[英]how to load balance api backend on different ports with pm2

假設我有一個簡單的 api 后端偵聽端口 3000

const app = express();

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(3000, () => {
  console.log('API listening on port 3000');
});

我想對此進行負載平衡,所以我為此使用 pm2

pm2 npm start --name apis -i 2 -- start

pm2 ls向我展示了 2 個以集群模式運行的實例,但其中一個出錯了,因為第一個實例正在使用端口 3000(很明顯)

在這種情況下,負載平衡或指定不同端口的正確方法是什么?

您可以使用PM2 生態系統而不是運行手動命令。

// index.js
const app = express();

app.get('/', (req, res) => {
  res.send('Hello, World!');
});

app.listen(3000, () => {
  console.log('API listening on port 3000');
});
// ecosystem.config.js
module.exports = {
  apps: [
    {
      name: "apis",
      script: "index.js",
      instances: "2",
      autorestart: true,
      max_memory_restart: "1G",
      env: {
        PORT: 3000,
      },
    }
  ]
}

通過運行啟動項目: pm2 start ecosystem.config.js

有關pm2 多實例的更多信息

找到了辦法。

pm2 有一個選項可以為每個實例增加變量,所以使用這個配置,我的后端在每個增加的端口上啟動

module.exports = {
    apps: [
        {
            name: "apis",
            script: "npm",
            args: "start",
            instances: 4,
            exec_mode: "cluster",
            increment_var: "PORT",
            env: {
                PORT: 3000,
            },
        },
    ],
};

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM