2012-06-18 17 views
8

Używam mod_proxy_balancer do zarządzania przełączaniem awaryjnym serwerów zaplecza. Serwery zaplecza mogą zwracać kod błędu zamiast limitu czasu, gdy niektóre inne usługi backendu zawodzą, takie jak NFS i chcemy, aby takie serwery również zostały oznaczone jako węzły zakończone niepowodzeniem. Dlatego używamy dyrektywy failonstatus.httpd mod_proxy_balancer failover failonstatus - przezroczyste przełączanie

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

Obecnie przełączanie awaryjne działa idealnie z jednym błędem. Gdy aktywny węzeł ulegnie awarii, użytkownik otrzymuje błąd 503 i od następnego żądania przejmuje serwer rezerwowy.

Nie chcę nawet, aby jedna próba zakończyła się niepowodzeniem. Nie mogę zmienić trybu pracy mod_proxy bez zwracania błędu klientowi? Jeśli aktywny węzeł się nie powiedzie, chcę, aby mod_proxy wypróbował tryb gotowości dla tego samego żądania, a nie tylko z kolejnego żądania!

Odpowiedz

3

Myślę, że zapytałeś o to na liście mailingowej Apache HTTPd, ale niestety nie uzyskałem satysfakcjonującej odpowiedzi. Zadałem prawie to samo pytanie w ServerFault, więc łączę je razem.

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

+2

Rozmawiałem z Dev na listę mailingową httpd i on potwierdził, że ta funkcja nie została zaimplementowana w bieżącym kodem . Komputer stanu w mod_proxy_balancer nie może ponowić próby w przypadku błędu HTTP, ale może to zrobić tylko w przypadku błędu połączenia. Próbowałem go sam wdrożyć, ale jest zbyt skomplikowany i mogę sprawić, że baza kodu będzie niestabilna. Więc zrezygnowałem ... – Praveen