LINUX.ORG.RU
ФорумAdmin

Автоматическое добавление серверов в балансировщик ngnix

 , ,


1

2

Система состоит из NGNIX фронтенда и несколько серверов которые он балансирует. В Digital Ocean можно создавать новые сервера через API. Вопрос как програмно вставить в конфиг адреса новых серверов и перезапустить ngnix ? Можно ли это сделать безопасно из php?


Ответ на: комментарий от anonymous

Спасибо. Посмотрел. Вот что пишат

nginx-upsync-module - модуль Nginx C, синхронизирует восходящие потоки от консула или других, динамически изменяет атрибут backend-server (weight, max_fails, ...), не требует перезагрузки nginx.

Не всегда удобно изменять файлы конфигурации и перезапускать NGINX. Например, если вы испытываете большие объемы трафика и высокую нагрузку, перезапуск NGINX и перезагрузка конфигурации в этот момент еще больше увеличивает нагрузку на систему и может временно снизить производительность.

Я всетаки хотел бы узнать как по простому поменять конфиг и перезапустить ngnix? (Повышение нагрузки в этот момент не важна)

bmp1 ()
Ответ на: комментарий от bmp1

Dynamic Configuration of Upstream Groups Using the NGINX Plus API

Нашел, но похоже это платно. Есть бесплатные варианты?

bmp1 ()
Ответ на: комментарий от Jopich1

Как я понял, вы предлагаете поменять конфиг и перезапустить? Я только не знаю как это сделать програмно, например из php запуском скрипта через интернет с параметром IP нового сервера.

bmp1 ()
Ответ на: комментарий от bmp1

reload nginx в отличии от restart никак не влияет на нагрузку.

например из php запуском скрипта через интернет с параметром IP нового сервера

ну если не хочется компилить nginx-upsync-module, то просто пишешь приложение которое берет данные с web interface и релоадид nginx

Jopich1 ()
Ответ на: комментарий от Jopich1

Как алтернатива, можешь написать скрип на nginx+lua ( openresty в помощь )

Jopich1 ()

AFAIR (свободный) nginx не умеет в это. Он ресолвит upstreams только один раз при старте. Т.е. подсунуть ему по-живому другой upstream без рестарта никак. Платный вроде умел. Но может быть мои знания уже и устарели.

beastie ★★★★★ ()

а зойчем нгиникс? træfik вон есть, например. куча способов конфигурирования.

и таких «ingress-controller»-ов как самзнаешьчего за баней.

aol ★★★★★ ()
Ответ на: комментарий от Jopich1

ну если не хочется компилить nginx-upsync-module, то просто пишешь приложение которое берет данные с web interface и релоадид nginx

Я так и думал, но опыт нулевой. Есть примеры подобного. Как быть с правами на запись в конфиг и перезапуск ngnix?

bmp1 ()

Можно в nginx настроить только один апстрим который будет подключаться к сокету haproxy. А там уже будешь рулить как пожелаешь. Благо у haproxy очень богаты настройки.

iron ★★★★★ ()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.