Распределение нагрузки

Для распределения нагрузки между «нодами» нужно устанавливать дополнительно ПО:

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
Print Friendly, PDF & Email