HAProxy 상태 확인 : httpchk 사용 및 관찰?


10

다음 백엔드 구성과 함께 HAProxy 1.4.18을 사용하고 있습니다.

backend staging
  option httpchk HEAD /check.txt HTTP/1.0
  http-check disable-on-404
  default-server error-limit 1 on-error mark-down
  server staging01 x.x.x.x:80 check observe layer7
  server staging02 x.x.x.x:80 check observe layer7

서버는 아파치 / 승객에서 여러 응용 프로그램을 실행하고 있습니다.

httpchk와 disable-on-404의 조합으로 서버에 대한 서버를 아주 쉽게 종료하고 서버에서 쉽게 제거 할 수 있습니다.

응용 프로그램이 작동하지 않을 때 서버를 비활성화하기 위해 관찰을 설정하려고합니다. staging02에서 응용 프로그램 구성을 중단하여 항상 500을 반환합니다. 처음 500 이후에는 DOWN으로 올바르게 표시되었지만 다음 httpchk에서는 UP으로 표시되었습니다.

로그 파일은 다음과 같습니다.

Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 2 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is DOWN, reason: Health analyze, info: "Detected 1 consecutive errors, last one was: Wrong http response". 1 active and 1 backup servers left. 1 sessions active, 0 requeued, 0 remaining in queue.
Server staging/staging02 is UP, reason: Layer7 check passed, code: 200, info: "OK", check duration: 0ms. 2 active and 1 backup servers online. 0 sessions requeued, 0 total in queue.

이 두 가지 수표를 결합하는 방법이 있습니까?


HAProxy가 확실히 문제인지 확인하기 위해 백엔드 Apache 서버에서 일치하는 3 개의 로그 라인을 찾아 질문에 추가 할 수 있습니까?
Ladadadada

아파치 서버 중 하나가 의도적으로 잘못 구성되어있어 모든 응용 프로그램에서 500 오류 코드를 반환합니다. 그러나 파일을 제거하지 않으면 /check.txt가 항상 작동합니다. check.txt 파일이 여전히 있어도 500 오류를 반환하면 아파치 서버를 비활성화하고 싶습니다.
ouranos

답변:


4

내가 지금 이해하고있는 차이점은 /check.txt 실제로 200 응답을 반환하지만 응용 프로그램에 대한 모든 요청은 500을 반환한다는 것입니다. HAProxy는 500이 프록시 요청에서 돌아 오는 것을보고 서버를 풀에서 꺼내고 자체 시작합니다. check, 200을 받고 서버를 다시 풀에 넣습니다.

해결책은 다음 중 하나를 수행하는 것입니다.

  1. 모든 요청이 정적 파일을 포함하여 500 응답을 리턴하도록 애플리케이션이 아닌 Apache를 구성하십시오 /check.txt.
  2. /check.txt적절한 경우 200 ~ 500 응답 중에서 선택하기에 충분한 로직 만 포함 된 Ruby 앱으로 변경하십시오 .
  3. inter 을 3600과 같이 말도 안되는 으로 설정 하십시오. 테스트를 수행하거나 (서버가 자체적으로 다운 된 경우) 문제점을 파악하여 다시 가져 오는 데 1 시간이 걸립니다.
  4. 설정 inter(60)와 같은 작은 일에 가치를하지만 설정 rise서버가 풀에 다시 추가되기 전에이 또한 당신에게 시간을 줄 것이다 높은 (60)과 같은 가치를. (이 둘은 아마도 매우 나쁜 아이디어이기 때문에 마지막에 나열됩니다.)

그렇습니다. 필자 /check.txt는 httpchk를 제거 하고 하나의 응용 프로그램을 가리켜 야 한다고 생각 합니다. 이 check.txt파일은 모든 HAProxy에서 서버를 빠르고 우아하게 제거하는 데 편리했습니다 (3 개는 HA 설정에서 하나만 활성화 됨). 또한 disable server다시로드간에 지속되지 않는 것 같습니다 .
ouranos
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.