Haproxy: 404인 경우 다른 백엔드를 사용해 보세요.

Haproxy: 404인 경우 다른 백엔드를 사용해 보세요.

그 뒤에 여러 백엔드가 있는 haproxy 서버가 있습니다. 백엔드는 라운드 로빈으로 선택됩니다. 어쨌든 선택한 백엔드에서 404를 얻으면 다른 백엔드를 시도해야 합니다.

연결 가능한 모든 백엔드에서 404가 반환되면 haproxy는 클라이언트에 404를 반환해야 합니다.

그게 가능합니까?

답변1

아니요, 불가능합니다(현재로서는).

HAProxy는 요청이 전송되기 전에 오류(예: 연결 시간 초과)가 있는 경우 다른 백엔드 서버를 다시 시도합니다. 하나의 백엔드 서버와 연결이 설정되고 요청이 전송되면 1바이트라도 HAProxy는 다른 백엔드 서버를 사용하려고 시도하지 않습니다.

답변2

아니요. HAProxy가 가진 가장 가까운 기능이지만 0보다 크고 백업 연결에 실패하는 option redispatch경우에만 다른 백엔드를 재시도합니다 . retries백엔드의 HTTP 상태 코드는 신경 쓰지 않고 백업이 다운되었는지만 신경 씁니다(접근할 수 없음, 응답 없음).

답변3

예, 옵션을 제대로 이해했다면

option httpchk GET /../CheckHealth.html
http-check disable-on-404

CheckHealth.html이 도달 가능한 리소스 샘플이어야 하는 경우, 리소스를 찾을 수 없고 404 오류가 수신되면 노드는 "유지 관리를 위해 활성 또는 백업 SOFT STOPPED"로 설정되고 라운드 로빈은 다음으로 전환되는 해당 노드에 요청을 다시 보내지 않습니다. 나머지만.

다음과 같은 것 :

 backend backend_servers
 balance            roundrobin
 option httpchk GET /.../CheckHealth.html
 http-check disable-on-404
 server             www01 XX:YY:ZZ:KK:8180 check
 server             www02 XX:YY:ZZ:MM:8180 check
 server         www03 XX:YY:ZZ:FF:8180 check

www02에는 배포된 WAR이 없기 때문에 실패하고 www01, www03에서는 클라이언트에 오류가 표시되지 않습니다.

관련 정보