keepnginx

Домашняя работа на тему:

  • настраиваем балансировку веб приложения

Цель: terraform и ansible роль для развертывания серверов веб приложения под высокую нагрузку и отказоустойчивость в работе должны применяться:

  • keepalived,
  • nginx,
  • uwsgi/unicorn/php-fpm
  • некластеризованная бд mysql/mongodb/postgres/redis

Ход работы

  1. Создаём конфигурацию в терраформе для провайдера/хостера AdvancedHosting;
  2. Запускаем ansible;
  3. Радуемся.

Виртуалки

  • 1я - фронтэнд nginx;
  • 2я и 3я - бэкэнды c nginx, на которых установлены и настроены php + keepalived;
  • 4я - бэк с MariaDB, на который смотрят предыдущие два сервера.

Логика работы

После конфигурирования серверов заходим по адресу "reverse_dns" выходных данных скрипта terraform. Видим страничку с установкой WordPress. Реверс-прокси nginx пропускает запросы на плавающий ip-адрес в приватной сети, принадлежащий бэкэндам с keepalived, которые работают с БД MariaDB

Проверка механизма отказоустойчивости

Подключаемся к любому из бэкэндов nginx и стоппим процесс nginx. Скрипты keepalived отрабатывают и посылают запрос в случае срабатывания скрипта друг другу. Переключение происходит за пару секунд. Отслеживается просмотром на каждой машине.

ip -c a

Тушить можно также интерфейс (разницы нет, что первое откажет: сеть или служба)

infconfin eth1 down

При восстановлении работы выключенного бэкэнда сетевой адрес возвращается на бэкэнд согласно установленного "веса" в файле конфигурации.