Re: Secondary load balancing method (fallback)

2017-05-12 Thread Willy Tarreau
On Fri, May 12, 2017 at 02:00:24PM -0700, redundantl y wrote:
> Is it possible to configure a secondary load balancing method, something to
> fall back on if the first method isn't met?
> 
> For example, if I balance on the url_param email:
> 
> balance url_param email
> 
> Can it instead balance on another url_param:
> 
> balance url_param id
> 
> Or have it balance based on source address?
> 
> I tried setting the following:
> 
> balance url_param email
> balance url_param id
> 
> But it only balanced on the second one, id.
> 
> I haven't found anything saying this is possible, but I'd just like to make
> sure it isn't.

You can't do this, and there is already a fallback on algorithms involving
hashes, but the fallback is to round robin, as indicated in the doc. What
you can do however is to check in your frontend if you have this parameter
and use a specific backend when it is present, or another one when it is
not present. Eg:

  frontend blah
 use_backend lb-email if { url_param(email) -m found }
 use_backend lb-id if { url_param(id) -m found }
 default_backend lb-src

  backend lb-email
 balance url_param email
 server s1 1.1.1.1 track lb-src/s1
 server s2 1.1.1.2 track lb-src/s2

  backend lb-id
 balance url_param id
 server s1 1.1.1.1 track lb-src/s1
 server s2 1.1.1.2 track lb-src/s2

  backend lb-src
 balance src
 server s1 1.1.1.1 check
 server s2 1.1.1.2 check

Willy



Secondary load balancing method (fallback)

2017-05-12 Thread redundantl y
Is it possible to configure a secondary load balancing method, something to
fall back on if the first method isn't met?

For example, if I balance on the url_param email:

balance url_param email

Can it instead balance on another url_param:

balance url_param id

Or have it balance based on source address?

I tried setting the following:

balance url_param email
balance url_param id

But it only balanced on the second one, id.

I haven't found anything saying this is possible, but I'd just like to make
sure it isn't.

Thanks.