Hi,

On Tue, Aug 04, 2009 at 11:18:25AM +0400, Dmitry Sivachenko wrote:
> Hello!
> 
> Thanks for clarification.
> 
> I have another question then (trying to solve my problem in a different way).
> 
> I want to setup the following configuration.
> I have 2 sets of servers (backends): let call one set NEAR (n1, n2, n3)
> and another set FAR (f1, f2, f3).
> 
> I want to spread incoming requests between NEAR servers only
> when they are alive, and move load to FAR servers in case NEAR set is down.
> 
> Is it possible to setup such configuration?

By default you can do that with the backup servers, by enabling the
"allbackups" option :

backend my_servers
        balance roundrobin
        option allbackups
        server near1 1.1.1.1 check
        server near2 1.1.1.2 check
        server near3 1.1.1.3 check
        server far1  2.1.1.1 check backup
        server far2  2.1.1.2 check backup
        server far3  2.1.1.3 check backup

It says that the load balancing will be performed across all backup servers
once the normal servers will all be down.

If you want to use thresholds you can do that with two backends, for instance
if you at least want 2 servers alive to deliver the service :

frontend my_front
        acl near_usable nbsrv(near) ge 2
        acl far_usable  nbsrv(far)  ge 2
        use_backend near if near_usable
        use_backend far  if far_usable
        # otherwise error

backend near
        balance roundrobin
        server near1 1.1.1.1 check
        server near2 1.1.1.2 check
        server near3 1.1.1.3 check

backend far
        balance roundrobin
        server far1  2.1.1.1 check
        server far2  2.1.1.2 check
        server far3  2.1.1.3 check

Just a warning though : the use_backend keyword can only
be used with HTTP protocol in version 1.3. It's only in 1.4
that it becomes usable with any TCP protocol. So if you want
to stay away from development versions, you'd better use the
simple proposal with the backup servers.

Regards,
Willy


Reply via email to