ПРОЕКТЫ 


  АРХИВ 


Apache-Talk @lexa.ru 

Inet-Admins @info.east.ru 

Filmscanners @halftone.co.uk 

Security-alerts @yandex-team.ru 

nginx-ru @sysoev.ru 


  СТАТЬИ 


  ПЕРСОНАЛЬНОЕ 


  ПРОГРАММЫ 



ПИШИТЕ
ПИСЬМА












     АРХИВ :: nginx-ru
Nginx-ru mailing list archive (nginx-ru@sysoev.ru)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

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


  • To: nginx-ru@xxxxxxxxx
  • Subject: Составной upstream без перенаправления между серверами
  • From: "ks2" <nginx-forum@xxxxxxxx>
  • Date: Wed, 04 Sep 2013 02:10:01 -0400
  • Dkim-signature: v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=helium.jlkhosting.com; s=x; h=Date:Sender:From:Message-ID:Content-Transfer-Encoding:Content-Type:Subject:To; bh=i0zPzVrJM2LlIzrqfw/HDuqC7tNLXhr1dJe5hyDZ2X0=; b=1gkFIuYMiILoiktShqtR4BCZDW0uDddWcGWVSqWi8eA3AA5GMxPU6dwmF0y6XVELc+pjyyti25LoVjp9By9+9D3WARrsVPi2i7bfdmAmVYitY5v8VjsAfbdGtKjdmlDvsHFMdA60Eosf+XecCw6SuaRKMd7gNwj9M7g5Tr9+Geo=;

Добрый день,

Имеем секцию апстрим из 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, скажем, проксировать запрос на эти локейшены?

Спасибо!

Posted at Nginx Forum: 
http://forum.nginx.org/read.php?21,242513,242513#msg-242513

_______________________________________________
nginx-ru mailing list
nginx-ru@xxxxxxxxx
http://mailman.nginx.org/mailman/listinfo/nginx-ru


 




Copyright © Lexa Software, 1996-2009.