8

mod_proxy_balancer를 사용하여 백엔드 서버의 장애 조치를 관리하고 있습니다. 백엔드 서버는 NFS와 같은 일부 다른 백엔드 서비스가 실패 할 때 시간 초과 대신 오류 코드를 반환 할 수 있으며 이러한 서버가 실패한 노드로 표시되기를 원합니다. 따라서 우리는 failonstatus 지시어를 사용하고 있습니다.httpd mod_proxy_balancer failover failonstatus - 투명한 전환

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

현재 장애 조치는 하나의 결함으로 완벽하게 작동합니다. 액티브 노드가 실패하면 사용자는 503 오류를 얻고 다음 요청에서 대기 서버가 인계합니다.

비록 하나의 요청이 실패하더라도 나는 원하지 않습니다. 클라이언트에 오류를 반환하지 않고 mod_proxy failover를 수행 하시겠습니까? 액티브 노드가 실패하면 mod_proxy가 후속 요청뿐만 아니라 동일한 요청에 대해 대기 모드를 시도하도록합니다!

답변

3

나는 Apache HTTPd 메일 링리스트에서이 질문을 던졌지 만 슬프게도 만족스러운 대답을 얻지 못했다고 생각합니다. 저는 ServerFault에서 거의 같은 질문을했습니다.

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

+2

당신이 요구하는 것을 수행 새 모듈이 있습니다 . mod_proxy_balancer 내부의 상태 머신은 HTTP 에러로 재 시도 할 수 없지만 연결 에러가 발생할 경우에만이를 수행 할 수 있습니다. 나 자신을 구현하려고했지만 너무 복잡하고 쉽게 코드베이스를 불안정하게 만들 수 있습니다. 그래서 나는 포기했다. – Praveen