Hi,

You can either play with :

 - balance url_param ld

 - sticky table,  and then set the param you want to stick on :
  stick on urlp(ld) table ...

 - appsession ld len 3 timeout <holdtime> request-learn mode query-string

w/ something like :

server server_A ... cookie lb=100 weight 10
server server_A ...  weight 10


But I think the most simple configuration for you here is to use
multiple backend if you can :

frontend App
  ...
  acl url_ld100 url_sub ld=100
  use_backend bk_ld100 if url_ld100
  default_backend default

backend bk_ld100
  ...
  balance roundrobin
  server server_A <ip:port> check
  server server_B <ip:port> check backup


backend default
  ...
  balance roundrobin
  server server_A <ip:port> check
  server server_B <ip:port> check


It means that, when your front parse ld=100 in the url query string,
it matches the acl url_ld100, then use a dedicated backend : bk_ld100.
In this backend only server A server request since server B is defined
as a backup server. If A goes down, B will answer request. So you need
"check" on your servers.

If ld=100 is not matched, your request will end to the default server,
which will roundrobin btw A and B.


Regards,

On Wed, Sep 3, 2014 at 11:47 PM, S. Zhou <[email protected]> wrote:
> We are thinking of the following LB algorithm but we are not sure if current
> HAProxy supports it:
>    given a http request, LB should always forward it to a certain backend
> server (say Server A) based on its http parameter (e.g. request with
> parameter "Id=100" always go to server A). The only exception is: when the
> designated server (e.g. Server A) is down, then the request should be
> forwarded to another (fixed) server (e.g. Server B).
>
> Thanks
>



-- 
Steven Le Roux
Jabber-ID : [email protected]
0x39494CCB <[email protected]>
2FF7 226B 552E 4709 03F0  6281 72D7 A010 3949 4CCB

Reply via email to