2012-06-18 27 views
8

Sto utilizzando mod_proxy_balancer per gestire il failover dei server di backend. I server di backend possono restituire un codice di errore anziché scadere quando alcuni altri servizi di backend falliscono come NFS e vogliamo che tali server vengano contrassegnati come nodi non riusciti. Quindi stiamo usando la direttiva failonstatus.httpd mod_proxy_balancer failover failonstatus - switching trasparente

<Proxy balancer://avatar> 
    ProxySet failonstatus=503 
    BalancerMember http://active/ retry=30 
    # the hot standby 
    BalancerMember http://standby/ status=+H retry=0 
</Proxy> 

Attualmente il failover funziona perfettamente con un problema tecnico. Quando il nodo attivo non riesce, l'utente riceve un errore 503 e dalla richiesta successiva subentra il server di standby.

Non voglio neanche una singola richiesta per fallire. Impossibile eseguire il failover mod_proxy senza che venga mai restituito un errore al client? Se il nodo attivo fallisce, voglio che mod_proxy provi lo standby per la stessa richiesta e non solo dalla richiesta successiva!

risposta

3

Penso che l'abbiate chiesto sulla mailing list di Apache HTTPd ma purtroppo non ho avuto una risposta soddisfacente. Ho chiesto quasi la stessa domanda in ServerFault, quindi mi unisco a loro.

https://serverfault.com/questions/414024/apache-httpd-workers-retry

+2

Ho parlato con un Dev sulla mailing list httpd e lui ha confermato che questa caratteristica non è stata implementata nella base di codice corrente . La macchina di stato all'interno di mod_proxy_balancer non può ripetere l'errore HTTP ma può farlo solo in caso di errore di connessione. Ho provato a implementarlo da solo ma è troppo complicato e posso facilmente rendere instabile la base di codice. Quindi ho rinunciato ... – Praveen