Le Sunday 14 August 2011 13:31:57, Ran S a écrit :
> Hi Cyril,
> 
> I see, thanks for that.
> So, will the correct way be to configure two different backends and include
> the reqrep for each one of them.
> But how will I get the listen or frontend node to load balance between two
> different backend nodes? I can't find the configuration to do that... is it
> possible?

Well, haproxy is not designed to load balance between backends, but there are 
several workarounds (some of them are less elegant than the others).

For your issue, I don't know all about your configuration so maybe it won't 
work, but first, can you check if you can unconditionally replace the Host 
header with 127.0.0.1 ? Maybe that could do the trick.
   reqrep ^Host:\ 172.31.0.103 Host:\ 127.0.0.1

One other workaround is to decide to not load balance but switch to a second 
backend under certain conditions (for example when the first backend exceeds a 
# of connections).

frontend http-in
   bind :80
   mode http
   option httpclose

   use_backend backend2 if { be_conn(backend1) gt 100 }
   default_backend backend1

backend backend1
   mode http

   reqrep ^Host:\ 172.31.0.103 Host:\ 172.31.0.104
   server node1 172.31.0.104:85

backend backend2
   mode http

   reqrep ^Host:\ 172.31.0.103 Host:\ 172.31.0.118
   server node2 172.31.0.118:85

Another solution is to add a second level of proxies in haproxy :

listen http-in
   bind :80
   mode http
   option httpclose

   server pnode1 127.0.0.1:8104
   server pnode2 127.0.0.1:8118

listen proxy104
   bind 127.0.0.1:8104
   mode http
   option httpclose

   reqrep ^Host:\ 172.31.0.103 Host:\ 172.31.0.104
   server node1 172.31.0.104:85

listen proxy118
   bind 127.0.0.1:8118
   mode http
   option httpclose

   reqrep ^Host:\ 172.31.0.103 Host:\ 172.31.0.118
   server node2 172.31.0.118:85

This is just some ideas (not tested), or you can try to add some conditions 
directly in your apache configuration.

Hope this helps.

-- 
Cyril Bonté

Reply via email to