PM2 позволяет запускать приложения NodeJS на нескольких экземплярах, то есть на разных ядрах, обеспечивая балансировку нагрузки с использованием одного и того же порта.
ПОРТ = 3000 pm2 start -i NUMBER_OF_CORES (например, 2) app.js
Но я также мог бы сделать балансировку нагрузки в Nginx с разными портами.
upstream app_servers {
сервер 127.0.0.1:3000;
сервер 127.0.0.1:3001;
сервер 127.0.0.1:3002;
сервер 127.0.0.1:3002;
}
сервер {
слушать 80;
имя_сервера ваш-домен.com www.ваш-домен.com;
место расположения / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header Хост $http_host;
proxy_pass http://app_servers;
}
}
а потом
pm2 запустить app.js -f --3000
pm2 запустить app.js -f --3001
pm2 запустить app.js -f --3002
pm2 запустить app.js -f --3003
Какая идея лучше (я всегда предполагаю, что все услуги выполняет локальный хост)?
- просто балансировать нагрузку на один и тот же порт на разных экземплярах (ядрах)
- просто балансировать нагрузку на разных портах и позволить ОС управлять экземплярами, или
- балансировка нагрузки за счет наличия разных экземпляров, каждый с другим портом, таким образом, используя балансировщики нагрузки Nginx и PM2?