LINUX.ORG.RU
ФорумAdmin

nginx proxy - форвардинг запроса на несколько серверов

 , ,


1

1

Привет! Надеюсь, сообщество ЛОРа сможет помочь. Дано: - есть nginx сервер, он принимает запросы - есть три сервака за ним.

Нужно входящий запрос отправить на все три сервака, но ответ обратно переслать из первого.

Как такое можно реализовать?

Перемещено Shaman007 из development

Ну зависит от того, как у тебя работают эти три сервера. Если в серверной части этих серверов не хочется городить возможность отмены запроса, то пишешь просто модуль для hedged запросов для nginx, если хочется все же отменять, то tied. Искать по speculative tasks/hedged requests.

xpahos ★★★★★
()
Ответ на: комментарий от Jack-Laphroaig

пиши модуль - там не сложно, ну, конечно если в сишку можешь

deep-purple ★★★★★
()
Ответ на: комментарий от drsm

Да, именно это и нужно вопрошающему.

Правда, реализовано оно почему-то аццкими костылями. Но кто на код смотрит? :)

Sorcerer ★★★★★
()
Ответ на: комментарий от deep-purple

Я о костылях в способе реализации. И из-за них лезет в том числе невозможность миррорить тело запроса без его полной буферизации.

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

А как ты хотел? Чисто технически поясни. Я другого пути не вижу, т.к. разные бекенды в разное время получат запрос и в разное время ответят — так и так буфер нужен из которого всем надо раздать.

deep-purple ★★★★★
()
Ответ на: комментарий от deep-purple

Можно как в случае одного бекенда без буферизации: если он медленно отвечает, то временно прекращать приём данных. При нескольких бекендах - ждать самого медленного.

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

ну я в код особо не вникал, но реализовано оно через внутренний механизм subrequest'ов.

оно для другого и этот миррор не обязательно на апстрим полетит.

можно например в njs послать.

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