HAproxy는 데이터 전송 후 클라이언트 연결이 즉시 끊어지면 데이터를 바닥에 삭제합니다.

HAproxy는 데이터 전송 후 클라이언트 연결이 즉시 끊어지면 데이터를 바닥에 삭제합니다.

내결함성을 얻기 위해 Livestatus 플러그인을 사용하여 Thruk와 여러 nagios 백엔드 간에 haproxy를 실행하고 있습니다. Thruk에는 연결 시간 초과가 없으므로 "죽은" 백엔드로 인해 Thruk를 로드하는 데 시간이 오래 걸리고 일반적으로 Apache(fcgi를 통해 Thruk로 프록시됨)에서 시간 초과가 발생합니다.

Thruk이 외부 명령을 보낼 때 문제가 있습니다. 클라이언트는 서버의 응답을 기대하지 않으므로 데이터를 보낸 후 즉시 연결을 닫습니다. 이로 인해 haproxy가 원격 서버에 대한 연결을 아직 설정하지 않은 경우 연결이 끊어지는 것으로 보입니다. 다음과 같은 로그 항목이 생성됩니다.

127.0.0.1:48350 [2014년 7월/4월:12:39:17.268] thruk_backend_nagios2_6557_6559 thruk_backend_nagios2_6557_6559/nagios2 0/-1/0 0 CC 0/0/0/0/0 0/0

CC는 haproxy가 백엔드 서버에 연결을 시도하는 동안 클라이언트가 예기치 않게 연결을 닫았다는 것을 의미합니다. 이런 일이 발생하면 haproxy는 백엔드에 대한 연결 설정을 계속 시도하지 않습니다. 이는 클라이언트가 보낸 데이터가 바닥에 떨어짐을 의미합니다.

tcp-smart-accept/connect 옵션이 도움이 될 수 있다고 생각했지만 효과가 없었습니다.

클라이언트를 수정하거나 Thruk와 haproxy 사이에 일종의 저장 및 전달 TCP 프록시를 추가하는 것 외에 여기서 할 수 있는 일이 있습니까? 클라이언트가 사라진 경우에도 클라이언트의 요청을 버퍼링하고 연결이 설정되면 서버로 보내도록 하는 haproxy 옵션이 있습니까?

관련 정보