[英]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.