Amazon ECS 중지된 태스크 연결성 확인하기
Amazon ECS 중지된 태스크 연결성 확인하기
때때로 태스크가 네트워크 연결 문제로 중지되는 경우가 있어요. 간헐적인 문제일 수도 있지만, 태스크가 엔드포인트에 연결할 수 없어서 발생하는 경우가 대부분입니다.
출처: 문서
본문
태스크가 네트워크 연결 문제로 중지되는 경우가 있습니다. 간헐적인 문제일 수도 있지만, 대부분은 태스크가 엔드포인트에 연결할 수 없기 때문에 발생합니다.
태스크 연결성 테스트하기
AWSSupport-TroubleshootECSTaskFailedToStart 런북을 사용해 태스크 연결성을 테스트할 수 있습니다. 런북을 사용할 때는 다음 리소스 정보가 필요합니다.
- 태스크 ID — 가장 최근에 실패한 태스크의 ID를 사용합니다.
- 태스크가 있던 클러스터
런북 사용 방법은 AWS Systems Manager Automation runbook reference의 "AWSSupport-TroubleshootECSTaskFailedToStart"를 참고하세요.
런북은 태스크를 분석합니다. 태스크가 시작되지 못하게 할 수 있는 다음 문제에 대해 Output 섹션에서 결과를 볼 수 있습니다.
- 구성된 컨테이너 레지스트리의 네트워크 연결
- VPC 엔드포인트 연결
- 보안 그룹 규칙 구성
VPC 엔드포인트 문제 수정하기
AWSSupport-TroubleshootECSTaskFailedToStart 런북 결과가 VPC 엔드포인트 문제를 나타내면 다음 구성을 확인하세요.
- 엔드포인트를 만드는 VPC와 VPC 엔드포인트가 Private DNS를 사용해야 합니다.
- 태스크가 연결할 수 없는 서비스용 AWS PrivateLink 엔드포인트가 태스크와 같은 VPC에 있는지 확인하세요. 자세한 내용은 다음 중 하나를 참고합니다.
| 서비스 | 해당 서비스의 VPC 엔드포인트 정보 |
|---|---|
| Amazon ECR | Amazon ECR interface VPC endpoints (AWS PrivateLink) |
| Systems Manager | Improve the security of EC2 instances by using VPC endpoints for Systems Manager |
| Secrets Manager | Using an AWS Secrets Manager VPC endpoint |
| CloudWatch | CloudWatch VPC endpoint |
| Amazon S3 | AWS PrivateLink for Amazon S3 |
- 포트 443의 HTTPS와 DNS(TCP) 트래픽을 허용하는 태스크 서브넷용 아웃바운드 규칙을 구성하세요. 자세한 내용은 Amazon Elastic Compute Cloud User Guide의 "Configure security group rules"를 참고하세요.
- 사용자 지정 이름 도메인 서버를 사용한다면 DNS 쿼리 설정을 확인하세요. 쿼리는 포트 53에서 아웃바운드 접근이 있어야 하며 UDP와 TCP 프로토콜을 사용해야 합니다. 또한 포트 443의 HTTPS 접근도 있어야 합니다.
- 서브넷에 네트워크 ACL이 있다면 다음 ACL 규칙이 필요합니다.
- 포트 1024~65535의 트래픽을 허용하는 아웃바운드 규칙
- 포트 443의 TCP 트래픽을 허용하는 인바운드 규칙
- 규칙 구성 방법은 Amazon Virtual Private Cloud User Guide의 "Control traffic to subnets using network ACLs"를 참고하세요.
네트워크 문제 수정하기
AWSSupport-TroubleshootECSTaskFailedToStart 런북 결과가 네트워크 문제를 나타내면 런북에 따라 다음 구성을 수행합니다.
공용 서브넷의 태스크
- 태스크를 시작할 때 Auto-assign public IP에
ENABLED를 지정합니다. 자세한 내용은 "Running an application as an Amazon ECS task"를 참고하세요. - 인터넷 트래픽을 처리할 게이트웨이가 필요합니다. 태스크 서브넷의 라우트 테이블에 게이트웨이로 가는 트래픽 라우트가 있어야 합니다. 자세한 내용은 Amazon Virtual Private Cloud User Guide의 "Add and remove routes from a route table"을 참고하세요.
| 게이트웨이 유형 | 라우트 테이블 대상 | 라우트 테이블 대상지 |
|---|---|---|
| NAT | 0.0.0.0/0 | NAT 게이트웨이 ID |
| 인터넷 게이트웨이 | 0.0.0.0/0 | 인터넷 게이트웨이 ID |
- 태스크 서브넷에 네트워크 ACL이 있다면 다음 ACL 규칙이 필요합니다.
- 포트 1024~65535의 트래픽을 허용하는 아웃바운드 규칙
- 포트 443의 TCP 트래픽을 허용하는 인바운드 규칙
프라이빗 서브넷의 태스크
- 태스크를 시작할 때 Auto-assign public IP에
DISABLED를 선택합니다. - 요청을 인터넷으로 라우팅하도록 VPC에 NAT 게이트웨이를 구성합니다. 자세한 내용은 Amazon Virtual Private Cloud User Guide의 "NAT Gateways"를 참고하세요.
- 태스크 서브넷의 라우트 테이블에 NAT 게이트웨이로 가는 트래픽 라우트가 있어야 합니다.
| 게이트웨이 유형 | 라우트 테이블 대상 | 라우트 테이블 대상지 |
|---|---|---|
| NAT | 0.0.0.0/0 | NAT 게이트웨이 ID |
- 태스크 서브넷에 네트워크 ACL이 있다면 다음 ACL 규칙이 필요합니다.
- 포트 1024~65535의 트래픽을 허용하는 아웃바운드 규칙
- 포트 443의 TCP 트래픽을 허용하는 인바운드 규칙
EC2 컨테이너 인스턴스 (공용)
- 클러스터를 만들 때 Amazon EC2 인스턴스의 Networking 아래 Auto assign IP에서 Turn on을 선택합니다. 이 옵션은 인스턴스의 기본 네트워크 인터페이스에 공용 IP 주소를 할당합니다.
- 인터넷 트래픽을 처리할 게이트웨이가 필요합니다. 인스턴스 서브넷의 라우트 테이블에 게이트웨이로 가는 트래픽 라우트가 있어야 합니다.
| 게이트웨이 유형 | 라우트 테이블 대상 | 라우트 테이블 대상지 |
|---|---|---|
| NAT | 0.0.0.0/0 | NAT 게이트웨이 ID |
| 인터넷 게이트웨이 | 0.0.0.0/0 | 인터넷 게이트웨이 ID |
- 인스턴스 서브넷에 네트워크 ACL이 있다면 다음 ACL 규칙이 필요합니다.
- 포트 1024~65535의 트래픽을 허용하는 아웃바운드 규칙
- 포트 443의 TCP 트래픽을 허용하는 인바운드 규칙
EC2 컨테이너 인스턴스 (프라이빗)
- 클러스터를 만들 때 Amazon EC2 인스턴스의 Networking 아래 Auto assign IP에서 Turn off를 선택합니다.
- 요청을 인터넷으로 라우팅하도록 VPC에 NAT 게이트웨이를 구성합니다. 자세한 내용은 Amazon VPC User Guide의 "NAT Gateways"를 참고하세요.
- 인스턴스 서브넷의 라우트 테이블에 NAT 게이트웨이로 가는 트래픽 라우트가 있어야 합니다.
| 게이트웨이 유형 | 라우트 테이블 대상 | 라우트 테이블 대상지 |
|---|---|---|
| NAT | 0.0.0.0/0 | NAT 게이트웨이 ID |
- 인스턴스 서브넷에 네트워크 ACL이 있다면 다음 ACL 규칙이 필요합니다.
- 포트 1024~65535의 트래픽을 허용하는 아웃바운드 규칙
- 포트 443의 TCP 트래픽을 허용하는 인바운드 규칙
더 알아보기 (Learn more)
- 보안 그룹 규칙과 네트워크 ACL 구성에 대한 자세한 내용은 AWS 공식 문서를 참고해 주세요.