Amazon EC2 인스턴스가 Amazon ECS의 Application Load Balancer 상태 확인을 통과하도록 하려면 어떻게 해야 합니까?

최종 업데이트 날짜: 2020년 4월 22일

Amazon ECS(Amazon Elastic Container Service)의 Amazon EC2(Amazon Elastic Compute Cloud) 인스턴스에 대한 Application Load Balancer 상태 확인이 비정상 상태를 반환합니다. EC2 인스턴스가 상태 확인을 통과하도록 하려면 어떻게 해야 합니까?

간략한 설명

Application Load Balancer 상태 확인을 통과하려면 다음을 확인합니다.

  • ECS 컨테이너의 애플리케이션이 올바른 응답 코드를 반환합니다.
  • 로드 밸런서 및 컨테이너 인스턴스에 연결된 보안 그룹이 올바르게 구성되어 있습니다.
  • 대상 그룹의 고급 상태 확인 설정이 올바르게 구성되어 있습니다.

참고: ECS 작업은 여러 가지 이유로 비정상 상태를 반환할 수 있습니다. 다음 조치를 취해도 문제가 해결되지 않으면 서비스 로드 밸런서 문제 해결을 참조하십시오.

팁: ECS 작업을 중지한 항목을 찾으려면 중지된 작업에서 오류 확인을 참조하십시오.

해결 방법

ECS 컨테이너의 애플리케이션이 올바른 응답 코드를 반환하는지 확인

로드 밸런서가 HTTP GET 요청을 상태 확인 경로로 전송할 때 ECS 컨테이너의 애플리케이션은 기본 200 OK 응답 코드를 반환해야 합니다.

참고: Application Load Balancer를 사용하는 경우 Matcher 설정을 200 이외의 응답 코드로 업데이트할 수 있습니다. 자세한 내용은 대상 그룹에 대한 상태 확인을 참조하십시오.

1.    SSH를 사용하여 컨테이너 인스턴스에 연결합니다.

2.    (선택 사항) 시스템에 적합한 명령을 사용하여 curl을 설치합니다.

Amazon Linux 및 기타 RPM 기반 배포의 경우 다음 명령을 실행합니다.

sudo yum –y install curl

Debian 기반 시스템(예: Ubuntu)의 경우 다음 명령을 실행합니다.

sudo apt-get install curl

3.    컨테이너 ID를 가져오려면 다음 명령을 실행합니다.

docker ps

참고: 로컬 리스너의 포트는 명령 출력의 PORTS 아래, 시퀀스 끝의 화살표 괄호 뒤에 나타납니다.

4.    컨테이너의 IP 주소를 가져오려면 docker inspect 명령을 사용합니다. 다음 예제를 참조하십시오.

$ IPADDR=$(docker inspect --format='{{.NetworkSettings.IPAddress}}' aabbccddeeff)

참고: 컨테이너의 IP 주소는 IPADDR에 저장됩니다.

5.    상태 코드를 가져오려면 IPADDR 및 로컬 리스너의 포트가 포함된 curl 명령을 실행합니다.

상태 확인 경로가 /health인 포트 8080에서 수신 대기하는 컨테이너의 다음 예제를 참조하십시오.

curl -v http://${IPADDR}:8080/health

명령은 200 OK를 반환해야 합니다.

HTTP가 아닌 오류 메시지를 수신하면 애플리케이션이 HTTP 트래픽을 수신하지 않는 것입니다. Matcher 설정에 지정한 것과 다른 HTTP 상태 코드를 수신하면 애플리케이션이 수신 대기하지만 정상 상태의 대상에 대한 상태 코드를 반환하지 않는 것입니다.

로드 밸런서 및 컨테이너 인스턴스에 연결된 보안 그룹을 올바르게 구성

모범 사례는 로드 밸런서에 대해 하나의 보안 그룹을 구성하고 컨테이너 인스턴스에 대해 다른 보안 그룹을 구성하는 것입니다. 이 모범 사례를 따르면 로드 밸런서와 컨테이너 인스턴스 간의 모든 트래픽이 허용됩니다. 또한 컨테이너 인스턴스가 동적 호스트 포트 매핑에 사용되는 휘발성 포트 범위에서 트래픽을 허용하게 됩니다.

1.    로드 밸런서에 연결된 보안 그룹이 컨테이너 인스턴스와 연결된 보안 그룹에 대한 모든 송신 트래픽을 허용하는지 확인합니다.

2.    컨테이너 인스턴스에 연결된 보안 그룹이 로드 밸런서와 연결된 보안 그룹에서 오는 모든 수신 트래픽을 휘발성 포트 범위(일반적으로 포트 32768-65535)에서 허용하는지 확인합니다.

중요: 작업 정의에서 호스트 포트를 선언하면 서비스가 휘발성 포트 범위가 아니라 지정된 포트에서 노출됩니다. 따라서 보안 그룹이 휘발성 포트 범위 대신 지정된 호스트 포트를 반영하는지 확인해야 합니다.

로드 밸런서와 연결된 보안 그룹을 확인하려면 Application Load Balancer 보안 그룹을 참조하십시오.

대상 그룹의 고급 상태 확인 설정을 올바르게 구성

고급 상태 확인 설정을 올바르게 구성하려면 대상 그룹에 대한 상태 확인을 참조하십시오. 고급 상태 확인 설정을 구성할 때 다음 단계에 주의해야 합니다.

1.    Amazon EC2 콘솔을 열고 [대상 그룹]을 선택한 다음 대상 그룹을 선택합니다.

중요: 새 대상 그룹을 사용해야 합니다. Amazon ECS가 대상 그룹에 컨테이너를 자동으로 등록 및 등록 취소하므로 대상 그룹에 대상을 수동으로 추가하지 마십시오.

2.    [상태 확인] 보기를 선택합니다.

3.    [포토]에서 [트래픽 포트]를 선택합니다.

참고: [재정의]를 선택하면 상태 확인 트래픽이 올바르게 라우팅되지 않습니다.


이 문서가 도움이 되었습니까?

AWS에서 개선해야 할 부분이 있습니까?


도움이 필요하십니까?