Upstream: grant recovery time to backend server

Hello,

i have a load balancing setup running with nginx in front and 2 tomcats
as
backend:

upstream backend {
ip_hash;
server 192.168.1.100;
server 192.168.1.101;
}

Runs fine so far, but from time to time one of the tomcats crashes and
needs
to be restarted. As soon as nginx notices that the tomcat is coming up,
nginx starts to forward requests to the starting-up tomcat. But it would
be
better that the tomcat starts up completly before nginx starts sending
requests to it.

Is there any possibility to grant a recovery time to a backend server
before
the backend receives requests? I.e. something like “nginx: hey, i
noticed
that the formerly crashed backend server is coming up, but i’ll wait
300s
before sending requests to it”?

thx in advance
revirii

Posted at Nginx Forum:

Hello!

On Tue, Oct 16, 2012 at 06:21:00AM -0400, revirii wrote:

Runs fine so far, but from time to time one of the tomcats crashes and needs
to be restarted. As soon as nginx notices that the tomcat is coming up,
nginx starts to forward requests to the starting-up tomcat. But it would be
better that the tomcat starts up completly before nginx starts sending
requests to it.

Is there any possibility to grant a recovery time to a backend server before
the backend receives requests? I.e. something like “nginx: hey, i noticed
that the formerly crashed backend server is coming up, but i’ll wait 300s
before sending requests to it”?

Don’t open listen sockets on a backend server unless you think
it’s started and ready to handle requests?


Maxim D.