NGINX - балансировка

440hz

php.ru
NGINX - балансировка

есть у nginx замечательная фича. upstream. но я вот тут столкнулся с тем, что она запрашивает ответы от зеркал на осносной сервер. т.е. при проксировании, запрос летит на бакенд. бакенд отвечает балансировщику а тот уже отдает данные клиенту.

а ни кто не делал балансировку с редиректами, т.е. мне надо разгрузить канал.

мастер стоит в одном датацентре. в ДРУГИХ датацентрах стоят зеркала. мне надо разбрасывать данные по зеркалам, т.е. не запрашивать ответы на мастер и отдавать с мастера, а именно редиректить на зеркала, с возможностью проверки живучести зеркал.

чем лучше сделать?

есть идея сделать в location условие if и там разбрасывать по зеркалам, если это, конечно возможно, но тогда как проверять живучесть?

чем еще можно так сбалансировать, не запрашивая данные на балансировщик а именно перенаправля клиента на зеркало.

запрашиваются бинарные данные. ОС линух.
 

Активист

Активист
Команда форума
Хм. Мне кажется тут nginx уже как-то не уместен, может быть стоит балансировать через DNS?
 

440hz

php.ru
не. DNS не катит. я бы сделал. нужно контролировтаь зеркала.

-~{}~ 03.11.10 10:50:

везде стоят нгинкс.

вот идея появилсь такая.

на балансировщик приходит запрос.
/uoload/file.txt
балансер модифицирует запрос и отсылает его на зеркало
upstream/check/file.txt
зеркало проверяет файл и или отсылает редирект на себя
self/upload/file.txt
либо на мастера
master/upload/file.txt
клиент получает редирект и уходит на загрузку.


минусы - получаем траффик на каждый запрос между балансером и зеркалами.

плюсы - балансировщик всегда знает состояния зеркал и клиент всегда получит файл при отказах зеркал.
 

MiksIr

miksir@home:~$
Если балансировщик и мастер - одна железка, то с зеркала лучше отсылать не редирект, а X-Accel...
Но вообще, имхо, под такие задачи нужны другие решения.
 

Dovg

Продвинутый новичок
>балансер модифицирует запрос и отсылает его на зеркало
>upstream/check/file.txt
>зеркало проверяет файл и или отсылает редирект на себя
ИМХО смысл балансировки как раз в том, что или все лежит везде, или заранее и однозначно можно определить где находится информация, которую запросил пользователь.

Почему файл на заркале может отсутствовать?
 

440hz

php.ru
Почему файл на заркале может отсутствовать?
нужна атомарность синка, т.к. там запрашиватся файл, который содержит имена файлов, которые нужно выкачать, и если синк проходит во времени, то есть шанс, что запрашиваемый файл не окажется на зеркале.
 

grigori

( ͡° ͜ʖ ͡°)
Команда форума
редирект - это уже новый запрос от клиента на другой сервер,
т.е. никакой failover ты тут не сделаешь, только фоновый мониторинг доступности серверов и переключение конфигов nginx-а в случае сбоя

-~{}~ 03.11.10 13:45:

я как-то сделал решение (совсем другой задачи) на инклудах конфигов для nginx-а.
для тебя я вижу вариант прописать php-пользователя в /etc/sudoers, генерить конфиг скриптом сразу после аплоада/синхронизации файла и релоадить nginx
 
Сверху