Назад | Перейти на главную страницу

Nginx + Upstream + уменьшение количества экземпляров ec2

В процессе развертывания нескольких экземпляров EC2, запускающих приложение Rails через Unicorn. В настоящее время у меня есть «интерфейсный» сервер, на котором запущен nginx с несколькими вышестоящими провайдерами «Unicorn».

Ночью я хотел бы выключить несколько серверов единорогов, а утром снова их загрузить (что у меня нормально работает).

Должен ли я также удалять / комментировать вышестоящих провайдеров в моей конфигурации nginx, а затем выполнять загрузку конфигурации nginx? (Чтобы запретить nginx отправлять клиентов на мои выключенные экземпляры ec2).

Есть ли лучший способ справиться с этим? (Возможно, HAproxy?)

Я думаю, что один из самых простых способов реализовать это - использовать LVS. С помощью LVS вы можете создать виртуальный сервер, который будет бэкэнд вашего Nginx, возможно, на локальном хосте каждого Nginx. Затем вы просто указываете восходящий поток Nginx на виртуальный сервер LVS. Единороги - это серверные части LVS, определенные как адрес сервера.

Таким образом, должно быть очень легко добавлять / удалять бэкенды с виртуального сервера с помощью некоторого задания cron, потому что вы можете выполнять эти действия с помощью простых ipvsadm команды.

Конечно, также можно было бы добавлять / удалять серверы из определения восходящего потока Nginx с помощью некоторых скриптов, но я считаю, что решение LVS намного проще написать скрипт и с меньшей вероятностью потерпит неудачу.