keepnginx
Домашняя работа на тему:
- настраиваем балансировку веб приложения
Цель: terraform и ansible роль для развертывания серверов веб приложения под высокую нагрузку и отказоустойчивость в работе должны применяться:
- keepalived,
- nginx,
- uwsgi/unicorn/php-fpm
- некластеризованная бд mysql/mongodb/postgres/redis
Ход работы
- Создаём конфигурацию в терраформе для провайдера/хостера AdvancedHosting;
- Запускаем ansible;
- Радуемся.
Виртуалки
- 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
При восстановлении работы выключенного бэкэнда сетевой адрес возвращается на бэкэнд согласно установленного "веса" в файле конфигурации.