Route 53 비정상 상태 확인 문제를 해결하려면 어떻게 해야 합니까?

5분 분량
0

생성한 Amazon Route 53 상태 확인이 비정상으로 보고됩니다. 문제를 해결하려면 어떻게 해야 합니까?

해결 방법

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

먼저, AWS Management Console을 사용하여 마지막 상태 확인 실패의 이유를 파악해야 합니다. 또는 AWS CLI에서 get-health-check-last-failure-reason 명령을 사용할 수 있습니다. 그런 다음, 상태 확인 유형을 확인한 후 해당 문제 해결 단계를 수행하여 문제를 식별하고 해결합니다.

참고: 상태 확인 유형과 관계없이 상태 확인 상태 반전 옵션의 상태를 확인해야 합니다. 이 옵션이 true로 설정되어 있는 경우, 상태 확인 프로그램이 상태 확인 결과를 정상으로 표시할 때 Route 53는 상태 확인을 비정상으로 간주합니다.

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

원인: 이 문제는 “상태 검사기가 제한 시간 내에 연결을 설정할 수 없습니다” 오류 메시지를 통해 알 수 있습니다. 이 오류는 상태 검사가가 구성된 엔드포인트와 연결 설정을 시도할 때 시간이 초과하기 때문에 발생합니다. 연결을 설정하는 최소 시간은 상태 확인 프로토콜(TCP, HTTP 또는 HTTPS)에 따라 다릅니다.

  • TCP 상태 확인의 경우, 상태 검사기와 엔드포인트 간의 TCP 연결이 10초 이내에 이루어져야 합니다.
  • HTTP 및 HTTPS 상태 확인의 경우, 상태 검사기와 엔드포인트 간의 TCP 연결이 4초 이내에 이루어져야 합니다. 엔드포인트는 연결 설정 후 2초 이내에 2xx 또는 3xx HTTP 상태 코드로 응답해야 합니다. 자세한 내용은 Amazon Route 53이 상태 확인이 정상인지 여부를 판단하는 방법을 참조하세요.

해결 방법:

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

2.    엔드포인트에 액세스합니다. 방화벽 또는 서버가 상태 확인 구성에서 활성화된 리전의 Route 53 퍼블릭 IP 주소로부터의 연결을 허용하는지 확인합니다. IP 범위를 확인하고 service: 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 이외의 HTTPCode가 표시되면 다음 구성을 확인하세요.

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

이러한 구성을 확인할 때 엔드포인트가 Route 53 퍼블릭 IP 주소의 연결을 허용하는지 확인합니다.

4.    사용하도록 설정된 경우 상태 확인 구성의 대기 시간 그래프 옵션을 사용하여 지표 그래프에서 다음을 확인합니다.

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

자세한 내용은 상태 확인 프로그램과 엔드포인트 사이의 지연 시간 모니터링을 참조하세요.

참고:

  • 지연 시간 그래프가 활성화되지 않은 경우 기존 상태 확인을 편집할 수 없습니다. 대신 새 상태 확인을 생성해야 합니다.
  • 모니터링하는 엔드포인트의 Elastic 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가 상태 확인을 비정상으로 표시하는 것을 통해 알 수 있습니다. 상태 검사기는 엔드포인트와의 TCP 연결을 4초 이내에 설정해야 합니다. 그런 다음 상태 검사기가 2초 내에 2xx 또는 3xx의 HTTP 상태 코드를 수신해야 합니다. 그런 다음 구성된 문자열이 다음 2초 이내에 응답 본문의 첫 5,120바이트에 표시되어야 합니다. 문자열이 첫 5,120바이트에 없는 경우 Route 53는 상태 확인을 비정상으로 표시합니다.

해결 방법:

문자열이 응답 본문의 첫 5,120바이트에 완전히 나타나는지 확인하려면 다음 명령을 사용합니다. "$search-string"은 사용자의 문자열 값으로 바꿔야 합니다.

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

CloudWatch 경보를 모니터링하는 상태 확인 문제 해결

원인: Route 53는 Amazon CloudWatch 경보가 경보 상태가 될 때까지 기다리지 않습니다. Route 53는 CloudWatch 경보 상태 대신 지표 데이터 스트림을 모니터링합니다.

해결 방법:

1.    데이터 부족(INSUFFICIENT DATA) 상태에 있는 상태 확인의 구성을 확인합니다. 지표 데이터 스트림이 경보 상태를 확인하기에 부족한 정보를 제공하는 경우, 상태 확인 상태는 InsufficientDataHealthStatus 구성에 따라 달라집니다. InsufficientDataHealthStatus 설정의 상태 옵션은 정상(healthy), 비정상(unhealthy) 또는 **마지막으로 알려진 상태(last known status)**입니다.

2.    CloudWatch 경보의 구성을 업데이트할 때, 연결된 상태 확인에 새 설정이 자동으로 표시되지 않습니다. 상태 확인 구성을 업데이트된 CloudWatch 경보의 구성과 동기화하려면 다음을 수행합니다.

  • Route 53 콘솔에서 **상태 확인(Health Checks)**을 선택합니다.
  • 상태 확인을 선택한 후 **구성 동기화(Synchronize configuration)**를 선택합니다.

AWS 공식
AWS 공식업데이트됨 4달 전