Welcome! Log In Create A New Profile

Advanced

Составной upstream без перенаправления между серверами

ks2
September 04, 2013 02:10AM
Добрый день,

Имеем секцию апстрим из N серверов:
upstream foo {
server a;
server b;
...
}

Для того, чтобы клиент ни в коем случае не заметил задержек с ответом, мы возвращаем предопредленный ответ в случае задержки на сервере:

location = /foo {
fastcgi_pass
fastcgi_keep_conn on;
include fastcgi-params.conf;

fastcgi_read_timeout 75ms;
fastcgi_intercept_errors on;
error_page 500 501 502 503 504 = /foo_failover;
}

location = /foo_failover {
root /var/www;
}

Проблема в том, что при задержке с ответом с одного из серверов nginx перекидывает запрос на другой сервер в апстриме, потом возможно на третий, видимо ожидая на каждом из серверов не дольше заданных 75 мс, но в сумме набирается недопустимо длительное время, так как в процессе таких ожиданий и перекидываний на клиенте срабатывает уже свой таймаут, чего как раз хочется избежать.

Есть ли более элегантный способ сохранить балансировку нагрузки, но запретить перенаправление, кроме как заводить N апстримов, каждый из одного сервера, прописывать им отдельно fastcgi_read_timeout и error_page, а из локейшена /foo, скажем, проксировать запрос на эти локейшены?

Спасибо!
Subject Author Posted

Составной upstream без перенаправления между серверами

ks2 September 04, 2013 02:10AM

Re: Составной upstream без перенаправления между серверами

Maxim Dounin September 04, 2013 06:34AM

Re: Составной upstream без перенаправления между серверами

ks2 September 04, 2013 09:34AM



Sorry, only registered users may post in this forum.

Click here to login

Online Users

Guests: 201
Record Number of Users: 8 on April 13, 2023
Record Number of Guests: 421 on December 02, 2018
Powered by nginx      Powered by FreeBSD      PHP Powered      Powered by MariaDB      ipv6 ready