비정상적인 Route 53 상태 확인 문제를 해결하려면 어떻게 해야 하나요?

4분 분량
0

생성한 Amazon Route 53 상태 확인이 비정상으로 보고됩니다.

해결 방법

참고: AWS Command Line Interface(AWS CLI) 명령을 실행할 때 오류가 발생하는 경우 최신 AWS CLI 버전을 사용하고 있는지 확인하세요.

먼저, AWS Management Console을 사용하여 마지막 상태 확인 실패 이유를 확인합니다. 또는 AWS CLI에서 get-health-check-last-failure-reason 명령을 사용합니다.

그런 다음, 다음 섹션의 해당 문제 해결 단계를 완료하여 문제를 식별하고 해결합니다.

참고: 상태 확인 유형에 관계없이 Invert health check status(상태 확인 상태 전환) 옵션의 상태를 확인하세요. 이 옵션을 true로 설정하면 Route 53은 상태 확인이 정상으로 표시되더라도 비정상으로 간주합니다.

엔드포인트를 모니터링하는 상태 확인 문제 해결

오류: 상태 검사기가 제한 시간 내에 연결을 설정할 수 없습니다.

위 오류는 구성된 엔드포인트에 상태 검사기의 연결 시도가 제한 시간을 초과할 때 발생합니다. 연결을 설정하는 데 걸리는 최소 시간은 다음과 같습니다.

  • TCP 상태 확인의 경우 상태 검사기와 엔드포인트 간의 TCP 연결이 10초 이내에 이루어져야 합니다.
  • HTTP 및 HTTPS 상태 확인의 경우 상태 검사기와 엔드포인트 간의 TCP 연결이 4초 이내에 이루어져야 합니다. 엔드포인트는 연결을 설정한 후 2초 이내에 2xx 또는 3xx HTTP 상태 코드로 응답해야 합니다.

자세한 내용은 Amazon Route 53에서 상태 확인이 정상인지 확인하는 방법을 참조하세요.

시간 초과 오류를 방지하려면 다음 단계를 완료합니다.

1.    상태 확인 구성에서 엔드포인트의 도메인 이름 또는 IP 주소를 기록해 둡니다.

2.    엔드포인트에 액세스합니다. 방화벽 또는 서버가 상태 확인 구성에 지정된 AWS 리전의 Route 53 퍼블릭 IP 주소로부터의 연결을 허용하는지 확인합니다. IP 범위를 확인하고 서비스: ROUTE53_HEALTHCHECKS를 검색합니다. AWS에서 호스팅되는 엔드포인트 리소스의 경우 Route 53 상태 검사기의 IP 주소를 허용하도록 보안 그룹과 네트워크 액세스 제어 목록을 구성합니다.

3.    다음 도구를 사용하여 인터넷을 통해 구성된 엔드포인트와의 연결을 테스트합니다. 다음 명령에서 자리 표시자를 교체합니다. 다음 예제 명령에는 사용 사례에 맞는 값이 포함된 변수가 나와 있습니다.

TCP 테스트

$ telnet <domain name / IP address> <port>

HTTP/HTTPS 테스트

$ curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" <http/https>://<domain-name/ip address>:<port>/<path> -so /dev/null

이전 테스트의 결과를 상태 확인의 제한 시간 값과 비교합니다. 그런 다음, 애플리케이션이 해당 일정 내에 응답하는지 확인합니다.

예를 들어, 다음 테스트를 실행하는 경우

curl -Ik -w "HTTPCode=%{http_code} TotalTime=%{time_total}\n" https://example.com -so /dev/null

출력은 다음과 같습니다.

HTTPCode=200 TotalTime=0.001963

이 예제에서 HTTP 상태 코드 200 응답을 받는 데 걸리는 총 시간은 0.001963초입니다.

HTTP 연결의 경우 연결 시간이 4초 이내여야 합니다. 엔드포인트는 연결 후 2초 이내에 HTTP 상태 코드로 응답해야 합니다. 총 시간은 6초입니다. 값이 6초보다 크면 엔드포인트의 응답 속도가 느려 상태 확인에 실패했음을 나타냅니다. 이 경우 엔드포인트가 제한 시간 내에 응답하는지 확인합니다.

테스트 명령의 출력에 200 이외의 HTTP 코드가 표시되는 경우 다음 구성을 확인합니다.

  • 방화벽 규칙
  • 보안 그룹
  • 네트워크 액세스 제어 목록

위 구성을 확인할 때는 엔드포인트가 Route 53 퍼블릭 IP 주소로부터의 연결을 허용하는지 확인하세요.

4.    상태 확인 구성의 지연 시간 그래프 옵션이 켜져 있는 경우 이 옵션을 사용하여 지표 그래프에서 다음 사항을 확인합니다.

  • TCP 연결 시간
  • 첫 바이트까지의 시간
  • SSL 핸드셰이크 완료 시간

자세한 내용은 상태 검사기와 엔드포인트 간의 지연 시간 모니터링을 참조하세요.

참고:

  • 지연 시간 그래프가 켜져 있지 않으면 기존 상태 확인을 편집할 수 없습니다. 대신 새로운 상태 확인을 생성해야 합니다.
  • 모니터링 중인 엔드포인트의 탄력적 IP 주소가 릴리스되거나 업데이트되면 상태 확인에 실패할 수 있습니다.

오류: SSL alert handshake_failure

핸드셰이크 실패 오류는 엔드포인트와의 SSL 또는 TLS 협상이 실패했음을 나타냅니다. SNI(HTTPS만 해당)를 켜면 Route 53이 TLS 협상 중에 "client_hello" 메시지의 호스트 이름을 엔드포인트로 전송합니다. 이 작업을 통해 엔드포인트는 해당 SSL 또는 TLS 인증서를 사용하여 HTTPS 요청에 응답할 수 있습니다.

모니터링되는 호스트 이름이 엔드포인트의 SSL 또는 TLS 인증서에 있는 일반 이름에 속하지 않는 경우 "SSL alert handshake_failure" 오류가 발생합니다.

참고: SNI를 켜려면 모니터링 대상 엔드포인트가 SNI를 지원해야 합니다.

문자열 일치 조건으로 상태 확인 문제 해결

엔드포인트 서버가 “200 OK”를 반환하지만 Route 53은 상태 확인을 비정상으로 표시합니다.

상태 검사기는 4초 이내에 엔드포인트와 TCP 연결을 설정해야 합니다. 그런 다음, 2초 내에 상태 검사기가 HTTP 상태 코드 2xx 또는 3xx를 받아야 합니다. 그리고 구성된 문자열이 그 다음 2초 이내에 응답 메시지 본문의 처음 5,120바이트에 나타나야 합니다. 처음 5,120바이트에 문자열이 없는 경우 Route 53은 상태 확인을 비정상으로 표시합니다.

응답 메시지 본문의 처음 5,120바이트에 문자열이 나타나는지 확인하려면 다음 명령을 사용합니다. domain-name, port$search-string을 사용자 값으로 바꿉니다.

$ curl -sL <http/https>://<domain-name>:<port> | head -c 5120 | grep $search-string

CloudWatch 알람을 모니터링하는 상태 확인 문제 해결

Amazon CloudWatch 알람이 ALARM 상태로 전환될 때까지 Route 53이 기다리지 않습니다.

위 상황은 Route 53이 CloudWatch 알람의 상태 대신 지표 데이터 스트림을 모니터링할 때 발생합니다.

이 오류를 해결하려면 다음 단계를 완료합니다.

1.    상태 확인 구성이 INSUFFICIENT DATA인지 확인합니다. 지표 데이터 스트림이 알람 상태를 판단하기에 충분한 정보를 제공하지 않는 경우 상태 확인 상태는 InsufficientDataHealthStatus 구성에 따라 달라집니다. InsufficientDataHealthStatus 설정의 상태 옵션은 정상, 비정상 또는 마지막으로 알려진 상태입니다.

2.    CloudWatch 알람의 구성을 업데이트하면 새 설정이 관련 상태 확인에 자동으로 나타나지 않습니다. 상태 확인 구성을 업데이트된 CloudWatch 알람 구성과 동기화하려면 다음을 수행합니다.

  • Route 53 콘솔에서 Health Checks(상태 확인)를 선택합니다.
  • 상태 확인을 선택한 다음, Synchronize configuration(구성 동기화)을 선택합니다.
AWS 공식
AWS 공식업데이트됨 일 년 전