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!
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