You are viewing a plain text version of this content. The canonical link for it is here.
Posted to users@httpd.apache.org by Praveen Baratam <pr...@gmail.com> on 2012/06/18 22:17:22 UTC

[users@httpd] Help regarding mod_proxy_balancer, failover and failonstatus

Can mod_proxy failover with out ever returning an error to the client? If
active node fails I need mod_proxy to try the Standby for the same request
and not just from the subsequent request!

In our setup we are using mod_proxy_balancer to manage failover of backend
servers. Backend servers may return an error code instead of timing out
when some service such as NFS fails and we want such servers also to be
marked as failed nodes. Hence we are using *failonstatus* directive for the
balancer.

<Proxy balancer://failover>
    ProxySet failonstatus=503
    BalancerMember http://active/ retry=30
    # the hot standby
    BalancerMember http://standby/ status=+H retry=0
</Proxy>
RewriteBase /RewriteRule ^(.*)$ balancer://failover/$1 [P,L]

 Currently the failover works perfectly with one glitch. When active node
fails the user gets a 503 error and from the next request the Standby
server takes over.

I dont want even a single request to fail though.

Can this be achieved?

Thank you!

Re: [users@httpd] Help regarding mod_proxy_balancer, failover and failonstatus

Posted by Praveen Baratam <pr...@gmail.com>.
Hello Daniel,

Thanks for the clarification. I have looked into the souce for
load_proxy_balancer and it is using the post_request method to mark the
BalancerMemeber as defunct which cannot trigger failover within the request.

With your help may be I can hack this feature into the module. What is the
appropriate place to start working. Can you give me a conceptual idea for
implementing this feature as you are the developer.

Thank you.

On Tue, Jun 19, 2012 at 3:53 AM, Daniel Ruggeri <DR...@primary.net>wrote:

>  On 6/18/2012 3:17 PM, Praveen Baratam wrote:
>
>  Can mod_proxy failover with out ever returning an error to the client?
> If active node fails I need mod_proxy to try the Standby for the same
> request and not just from the subsequent request!
>
> In our setup we are using mod_proxy_balancer to manage failover of backend
> servers. Backend servers may return an error code instead of timing out
> when some service such as NFS fails and we want such servers also to be
> marked as failed nodes. Hence we are using *failonstatus* directive for
> the balancer.
>
> <Proxy balancer://failover>
>     ProxySet failonstatus=503
>     BalancerMember http://active/ retry=30
>     # the hot standby
>     BalancerMember http://standby/ status=+H retry=0
> </Proxy>
> RewriteBase /RewriteRule ^(.*)$ balancer://failover/$1 [P,L]
>
>  Currently the failover works perfectly with one glitch. When active node
> fails the user gets a 503 error and from the next request the Standby
> server takes over.
>
> I dont want even a single request to fail though.
>
> Can this be achieved?
>
> Thank you!
>
>
> Praveen;
>    I'm afraid there are no provisions available to retry a request to
> another backend server once it has been sent to a balancer member. I would
> like to fix this some day but I am just not aware of a place that this can
> be done currently as the balancer willy only attempt another backend on
> connection failure only.
>
> --
> Daniel Ruggeri
>
>

Re: [users@httpd] Help regarding mod_proxy_balancer, failover and failonstatus

Posted by Daniel Ruggeri <DR...@primary.net>.
On 6/18/2012 3:17 PM, Praveen Baratam wrote:
>
> Can mod_proxy failover with out ever returning an error to the client?
> If active node fails I need mod_proxy to try the Standby for the same
> request and not just from the subsequent request!
>
> In our setup we are using mod_proxy_balancer to manage failover of
> backend servers. Backend servers may return an error code instead of
> timing out when some service such as NFS fails and we want such
> servers also to be marked as failed nodes. Hence we are using
> */failonstatus/* directive for the balancer.
>
> |<Proxy balancer://failover>
>     ProxySet failonstatus=503 
>     BalancerMember http://active/ retry=30
>     # the hot standby
>     BalancerMember http://standby/ status=+H retry=0
> </Proxy>
>
> |RewriteBase /
> RewriteRule ^(.*)$ balancer://failover/$1 [P,L]
>
> Currently the failover works perfectly with one glitch. When active
> node fails the user gets a 503 error and from the next request the
> Standby server takes over.
>
> I dont want even a single request to fail though. 
>
> Can this be achieved?
>
> Thank you!
>

Praveen;
   I'm afraid there are no provisions available to retry a request to
another backend server once it has been sent to a balancer member. I
would like to fix this some day but I am just not aware of a place that
this can be done currently as the balancer willy only attempt another
backend on connection failure only.

-- 
Daniel Ruggeri