upstream: ip_hash and backup

Maxim Dounin mdounin at mdounin.ru
Thu Jun 30 22:49:31 MSD 2011


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;
        }
    }

Maxim Dounin



More information about the nginx mailing list