I spent a bit more time searching this list and found the answer:  No,
retrying another server in the backend upon receipt of a 503 is not
supported.

https://www.mail-archive.com/haproxy%40formilux.org/msg17281.html



On Wed, Nov 25, 2015 at 1:45 PM, Mike Sample <[email protected]> wrote:

> Thanks Jeff,
>
> The 'backend' HAProxies do have a purpose - they:
>  * allow stripping global routing information (e.g. from the http path)
>  * allow rate limiting at the worker node (even with many 'client
> haproxies')
>  * allow for real backends of different types on one node while just
> having one entry host/port per node (e.g. use global routing info before
> stripping)
>  * provide a highly tunable HTTP connection terminator to ensure keepalive
> etc work.
>  * simplify network ACLs by sharing a host/port pair for many different
> real backends on a node
>
> The configuration challenges of managing all these haproxies is avoided by
> another system; they would not be configured by hand.
>
> However, the one challenge is that this indirect access to the real
> backend confuses retry logic.
>
> /Mike
>
> On Wed, Nov 25, 2015 at 12:28 PM, Jeff Palmer <[email protected]> wrote:
>
>> Mike,
>>
>> Help me understand:
>>
>> if haproxy 1 is just frontending haproxy 2 and 3, which each only have
>> 1 backend..  what is the purpose of haproxy2 and 3, other than to just
>> complicate the architecture?   are they serving some other purpose
>> that isn't being communicated?
>>
>> If not, I'd say follow the KISS principle.   have haproxy1 utilize the
>> 2 backends directly.  and let it detect backend availability as it's
>> designed to do.
>>
>>
>>
>>
>> On Wed, Nov 25, 2015 at 3:00 PM, Mike Sample <[email protected]>
>> wrote:
>> > In a setup like this where HAProxy1 LBs over N other HAProxies (servers
>> in a
>> > backend of HAProxy1):
>> >
>> > HAProxy1
>> >     | --> HAProxy2 -> 1 real backend server
>> >     | --> HAProxy3 -> 1 real backend server
>> >
>> > Is there a way to trigger a retry by HAProxy to use HAProxy3 if it tried
>> > HAProxy2 and just its real backend server was down?    i.e. HAProxy1
>> > successfully connected to HAProxy2 but HAProxy2 returned a 503 because
>> its
>> > one backend server was down.
>> >
>> > The goal is that the initial call into HAProxy1 succeeds by using the
>> > HAProxy3, even though it tried HAProxy2.
>> >
>> > I looked at the 'observe' server option but my read of the config
>> manual is
>> > that it won't trigger a retry (just a failed health check).   I also
>> realize
>> > that, in general, retrying on a 503 has idempotency issues so using a
>> custom
>> > 5xx code might be a better signal to indicate no-work was done.
>> >
>> > Thanks
>>
>>
>>
>> --
>> Jeff Palmer
>> https://PalmerIT.net
>>
>
>

Reply via email to