Для распределения нагрузки между «нодами» нужно устанавливать дополнительно ПО:
sudo apt install redis-server sudo systemctl start redis-server sudo systemctl enable redis-server
Данное ПО требуется хранения общей информации о всех «нодах».
Далее создаем новую службу для новой node:
cd /lib/systemd/system # копируем файл [код]-[тип]-node.service cp [код]-[тип]-node.service [код]-[тип]-node2.service
Открываем файл [код]-[тип]-node2.service и меняем в нем номер порта, например на 3001.
Сохраняем результат и выполняем следующие команды:
sudo systemctl daemon-reload # нужно выполнять если вносишь изменения в службы sudo systemctl enable [код]-[тип]-node2.service # добавляем в автозапуск sudo systemctl start [код]-[тип]-node2.service
Обновляем bash-скрип развертывания/обновления:
Примечание: таким образом обеспечиваем перезапуск «нод», если обновляем проект.
Выполняем скрипт node-deploy.sh и проверяем работу новой и старой ноды:
Далее нужно настроить Nginx для балансировки. Для открываем файл defaul и редактируем его:
cd /etc/nginx/sites-enabled # ниже содержимое файла default которое нужно добавить upstream [код]-[тип] { ip_hash; server localhost:3000; server localhost:3001; }
Обновляем proxy_pass у location
location /test { ... proxy_set_header Host $host; proxy_pass http://[код]-[тип]; # enable WebSockets ... }
Перезапускаем Nginx
sudo systemctl restart nginx
Теперь нагрузка распределяется между двумя сервисами node и node2.
Примечание: проверить визуально это не получиться, но можно воспользоваться программой Postman, в которой выполняем один и тоже запрос.
Дополнительная информация:
- https://losst.ru/ustanovka-redis-v-ubuntu-18-04