atom feed4 messages in ru.sysoev.nginxRe: upstream: ip_hash and backup
FromSent OnAttachments
John MooreJun 30, 2011 11:34 am 
Maxim DouninJun 30, 2011 11:48 am 
John MooreJun 30, 2011 12:31 pm 
Maxim DouninJun 30, 2011 10:52 pm 
Subject:Re: upstream: ip_hash and backup
From:Maxim Dounin (mdou@mdounin.ru)
Date:Jun 30, 2011 10:52:31 pm
List:ru.sysoev.nginx

Hello!

On Thu, Jun 30, 2011 at 08:31:35PM +0100, John Moore wrote:

On 30/06/11 19:49, Maxim Dounin wrote:

Hello!

On Thu, Jun 30, 2011 at 07:35:24PM +0100, John Moore wrote:

I'm using the upstream module to load balance between 2 back-end servers, using ip_hash to effect a kind of 'stickiness' (making it more likely that subsequent requests from the same client will go to the same back-end server). Now I want to add a 3rd back-end server into the mix, but which will only come into play if the other 2 are failing. There's a handy 'backup' parameter I can use for this, except that according to the docs it cannot be combined with the ip_hash directive. I'm wondering whether there is some other way to achieve what I want here? Effectively, the ip_hash becomes irrelevant once it's failed over to this backup server as there is only one.

Use error_page based fallback instead, i.e. something like this:

upstream backends { ip_hash; server 10.0.0.1; server 10.0.0.2; }

upstream backup { server 10.0.0.3; }

server { ...

location / { error_page 502 504 = @fallback; proxy_pass http://backends; }

location @fallback { proxy_pass http://backup; } }

That's just what I need, thanks. Is this dependent on some recent version of nginx? I'm running 0.7.65.

Named locations are available starting from 0.6.6, so 0.7.65 should be fine. You may want to upgrade anyway though, 0.7.65 is rather old and not really supported.