Application Load Balancer의 상태 확인 실패 문제를 해결하고 수정하려면 어떻게 하나요?

5분 분량
0

Application Load Balancer에 등록된 대상이 정상적이지 않습니다. 대상이 상태 확인에 실패하는 이유를 어떻게 알 수 있나요?

해결 방법

Application Load Balancer의 상태 확인 실패 문제를 해결하고 수정하려면 다음을 수행하세요.

  1. 대상의 상태를 확인하여 문제의 원인 코드와 설명을 찾아보세요.
  2. 발생한 오류에 대해서는 아래 해결 단계를 따르세요.

Elb.InitialHealthChecking

설명: 초기 상태 확인을 진행 중입니다.

해결 방법: 대상이 로드 밸런서로부터 요청을 수신하려면 먼저 해당 대상이 초기 상태 확인을 통과해야 합니다. 대상이 초기 상태 확인을 통과할 때까지 기다린 다음 상태를 다시 확인합니다.

Elb.RegistrationInProgress

설명: 대상 등록이 진행 중입니다.

해결 방법: 로드 밸런서는 등록 프로세스가 완료되고 대상이 초기 상태 확인을 통과하는 즉시 대상에 라우팅 요청을 시작합니다.

Target.DeregistrationInProgress

설명: 대상 등록 취소가 진행 중입니다.

해결 방법: 대상을 등록 취소하면 로드 밸런서는 진행 중인 요청이 완료될 때까지 대기합니다. 이를 등록 취소 지연이라고 합니다. 기본적으로 Elastic Load Balancing은 등록 취소 프로세스를 완료하기 전에 300초를 기다립니다. 하지만 이 값은 사용자 지정할 수 있습니다.

등록 취소 대상에 진행 중인 요청과 활성 연결이 없는 경우, Elastic Load Balancing은 등록 취소 지연이 경과할 때까지 기다리지 않고 즉시 등록을 취소합니다. 등록 취소 대상의 초기 상태를 드레이닝이라고 합니다. 등록 취소 지연이 경과하면 등록 취소 프로세스가 완료되고 대상의 상태가 사용되지 않음이 됩니다. 대상이 오토 스케일링에 속한 경우 종료 및 대체될 수 있습니다.

Target.FailedHealthChecks

설명: 로드 밸런서에서 대상에 대한 연결을 설정하는 동안 오류가 발생했거나 대상 응답의 형식이 잘못되었습니다.

해결 방법:

  • 애플리케이션이 실행 중인지 확인합니다. service 명령을 사용하여 Linux 대상의 서비스 상태를 확인할 수 있습니다. Windows 대상의 경우 Windows 작업 관리자의 서비스 탭을 확인하세요. 서비스가 중지되면 서비스를 시작합니다. 서비스가 인식되지 않는 경우 필요한 서비스가 설치되어 있는지 확인하세요.
  • 대상이 상태 확인 포트에서 트래픽을 수신하고 있는지 확인합니다. Linux 대상에서 ss 명령을 사용하여 서버가 수신 대기 중인 포트를 확인할 수 있습니다. Windows 대상의 경우 netstat 명령을 사용할 수 있습니다.
  • 애플리케이션이 로드 밸런서의 상태 확인 요청에 적절히 응답하는지 확인하세요. 다음 예시는 대상이 유효한 HTTP 응답과 함께 반환해야 하는 Application Load Balancer의 일반적인 상태 확인 요청을 보여줍니다. Host 헤더 값에는 대상의 프라이빗 IP 주소와 상태 확인 포트가 포함됩니다. User-agentELB-HealthChecker/2.0으로 설정되어 있습니다. 메시지 헤더 필드의 줄 종결자는 시퀀스 CRLF이며, 헤더는 첫 번째 빈 줄에서 끝나고 그 뒤에 CRLF가 옵니다. 필요한 경우 상태 확인 요청을 받을 기본 가상 호스트를 웹 서버 구성에 추가합니다.
GET / HTTP/1.1
Host: 10.0.0.1:80
Connection: close
User-Agent: ELB-HealthChecker/2.0
Accept-Encoding: gzip, compressed
  • 대상 그룹의 대상 유형에 따라 로드 밸런서가 대상에서 상태 확인을 전송할 네트워크 인터페이스가 결정됩니다. 예를 들어 인스턴스 ID, IP 주소 및 Lambda 함수를 등록할 수 있습니다. 대상 유형이 인스턴스 ID인 경우 로드 밸런서가 대상의 기본 네트워크 인터페이스에 상태 확인 요청을 보냅니다. 대상 유형이 IP 주소인 경우 로드 밸런서는 해당 IP 주소와 연결된 네트워크 인터페이스에 상태 확인 요청을 보냅니다. 대상에 여러 인터페이스가 연결되어 있는 경우 애플리케이션이 올바른 네트워크 인터페이스에서 수신 중인지 확인하세요.
  • ELBSecurityPolicy-2016-08 보안 정책은 대상 연결 및 HTTPS 상태 확인에 사용됩니다. 대상이 보안 정책에 지정된 형식의 서버 인증서와 키를 제공하는지 확인합니다. 또한 대상이 하나 이상의 일치하는 암호와 TLS 핸드셰이크를 설정하기 위해 로드 밸런서에서 제공하는 프로토콜을 지원하는지 확인하세요.

Target.InvalidState

설명: 대상이 중지됨 또는 종료됨 상태입니다.

해결 방법: 대상이 Amazon Elastic Compute Cloud (Amazon EC2) 인스턴스인 경우 Amazon EC2 콘솔을 엽니다. 그런 다음 인스턴스가 실행 중인지 확인합니다. 필요한 경우 인스턴스를 시작합니다.

Target.IpUnusable

설명: IP 주소는 로드 밸런서에서 사용 중이므로 대상으로 사용할 수 없습니다.

해결 방법: 목표 그룹을 생성할 때 대상 유형을 지정합니다. 대상 유형이 IP인 경우 로드 밸런서에서 이미 사용 중인 IP 주소를 선택하지 마세요.

Target.NotInUse

설명: 대상 그룹이 로드 밸런서에서 사용되지 않거나 대상이 해당 로드 밸런서에 대해 활성화되지 않은 가용 영역에 있습니다.

해결 방법:

  • 대상 그룹을 확인하고 로드 밸런서로부터 트래픽을 수신하도록 구성되었는지 확인합니다.
  • 로드 밸런서에 대상의 가용 영역이 활성화되어 있는지 확인합니다.

Target.NotRegistered

설명: 대상이 대상 그룹에 등록되지 않았습니다.

해결 방법: 대상이 대상 그룹에 등록되었는지 확인합니다.

Target.ResponseCodeMismatch

설명: 상태 확인에서 예상 HTTP 코드가 반환되지 않았습니다.

해결 방법:

  • 성공 코드는 대상의 성공적인 응답을 확인할 때 사용하는 HTTP 코드입니다. 200에서 499 사이의 값 또는 값 범위를 지정할 수 있습니다. 기본값은 200입니다. 로드 밸런서 상태 확인 구성을 확인하여 수신할 것으로 예상되는 성공 코드를 확인하세요. 그런 다음 웹 서버 액세스 로그를 검사하여 예상 성공 코드가 반환되는지 확인합니다. 필요한 경우 성공 코드 값을 수정합니다.
  • Ping 경로가 유효한지 확인합니다. Ping 경로는 상태 확인 대상의 대상입니다. 유효한 URI(/path?query)를 지정해야 합니다. 기본값은 /입니다. 필요한 경우 Ping 경로 값을 수정합니다.

Target.Timeout

설명: 요청 시간이 초과되었습니다.

해결 방법: 연결할 수 있는 경우 상태 확인 제한 시간 이전에 대상 페이지가 응답하지 않을 수 있습니다. NGINXIIS와 같은 대부분의 웹 서버에서는 서버가 응답하는 데 걸리는 시간을 기록할 수 있습니다. 상태 확인 요청이 구성된 제한 시간보다 오래 걸리는 경우 다음을 수행할 수 있습니다.

연결할 수 없는 경우:

  • 대상과 연결된 보안 그룹이 상태 확인 포트 및 상태 확인 프로토콜을 사용하여 로드 밸런서의 트래픽을 허용하는지 확인합니다. 보안 그룹에 규칙을 추가하여 로드 밸런서 보안 그룹의 모든 트래픽을 허용할 수 있습니다. 또한 로드 밸런서에 대한 보안 그룹은 대상으로의 트래픽을 허용해야 합니다.
  • 대상의 ](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-network-acls.html#nacl-tasks)서브넷과 연결된 네트워크 ACL[이 상태 확인 포트의 인바운드 트래픽을 허용하는지 확인합니다. 임시 포트(1024-65535)에서 아웃바운드 트래픽도 허용하는지 확인합니다.
  • 로드 밸런서 노드에 대한 서브넷과 연결된 네트워크 ACL이 임시 포트의 인바운드 트래픽을 허용하는지 확인합니다. 상태 확인 및 임시 포트의 아웃바운드 트래픽도 허용하는지 확인합니다.
  • 대상의 모든 OS 수준 방화벽이 상태 확인 트래픽의 수신 및 송신을 허용하는지 확인합니다.
  • 대상과 연결된 서브넷의 라우팅 테이블에 상태 확인 트래픽을 로드 밸런서로 다시 보낼 수 있는 항목이 포함되어 있는지 확인합니다.
  • 대상의 메모리 및 CPU 사용률이 허용 가능한 한도 내에 있는지 확인하세요. 메모리 또는 CPU 사용률이 너무 높으면 대상을 추가하거나 오토 스케일링의 용량을 늘리세요. 대상이 EC2 인스턴스인 경우 인스턴스를 더 큰 인스턴스 유형으로 업그레이드할 수도 있습니다.

관련 정보

Application Load Balancer 문제 해결

AWS 공식
AWS 공식업데이트됨 일 년 전