Amazon ECS에 Application Load Balancer 사용하기
Amazon ECS에 Application Load Balancer 사용하기
Application Load Balancer(ALB)를 Amazon ECS와 함께 사용할 때의 동작, 동적 호스트 포트 매핑, 고려 사항을 알아봐요.
출처: 문서
본문
Application Load Balancer는 애플리케이션 계층(HTTP/HTTPS)에서 라우팅 결정을 하고, 경로 기반 라우팅을 지원하며, 클러스터의 각 컨테이너 인스턴스에서 하나 이상의 포트로 요청을 라우팅할 수 있어요.
Application Load Balancer는 동적 호스트 포트 매핑(dynamic host port mapping)을 지원해요. 예를 들어 태스크의 컨테이너 정의가 NGINX 컨테이너 포트에 80, 호스트 포트에 0을 지정하면 호스트 포트는 컨테이너 인스턴스의 임시 포트 범위(최신 Amazon ECS-optimized AMI의 경우 32768~61000)에서 동적으로 선택돼요. 태스크가 시작되면 NGINX 컨테이너는 인스턴스 ID와 포트 조합으로 Application Load Balancer에 등록되고, 트래픽은 해당 컨테이너에 해당하는 인스턴스 ID와 포트로 분산돼요. 이 동적 매핑 덕분에 단일 서비스의 여러 태스크를 같은 컨테이너 인스턴스에 둘 수 있어요. 자세한 내용은 User Guide for Application Load Balancers 참고.
배포를 빠르게 하기 위한 파라미터 설정 모범 사례에 대한 내용은:
- Optimize load balancer health check parameters for Amazon ECS
- Optimize load balancer connection draining parameters for Amazon ECS
Application Load Balancer를 Amazon ECS와 함께 사용할 때 다음을 고려하세요:
- Amazon ECS는 태스크가 생성되고 중지될 때 로드 밸런서에 대상을 등록·등록 취소하는 데 필요한 권한을 제공하는 service-linked IAM 역할을 요구해요. 자세한 내용은 Using service-linked roles for Amazon ECS 참고.
- IPv6 전용 구성의 서비스의 경우 Application Load Balancer의 대상 그룹 IP 주소 유형을
dualstack또는dualstack-without-public-ipv4로 설정해야 해요. awsvpc네트워크 모드를 사용하는 태스크가 있는 서비스의 경우 서비스용 대상 그룹을 만들 때instance가 아니라 대상 유형으로ip를 선택해야 해요. 이는awsvpc네트워크 모드를 사용하는 태스크가 Amazon EC2 인스턴스가 아니라 탄력적 네트워크 인터페이스와 연결되기 때문이에요.- 서비스가 HTTP/HTTPS 서비스의 포트 80과 443 같은 여러 로드 밸런싱 포트에 대한 접근을 요구하면 두 개의 리스너를 구성할 수 있어요. 하나는 요청을 서비스로 전달하는 HTTPS 담당 리스너이고, 다른 하나는 HTTP 요청을 적절한 HTTPS 포트로 리다이렉트하는 리스너예요. 자세한 내용은 User Guide for Application Load Balancers의 Create a listener to your Application Load Balancer 참고.
- 로드 밸런서 서브넷 구성에는 컨테이너 인스턴스가 있는 모든 가용 영역이 포함되어야 해요.
- 서비스를 만든 후에는 AWS Management Console에서 로드 밸런서 구성을 변경할 수 없어요. AWS Copilot, AWS CloudFormation, AWS CLI 또는 SDK를 사용해 ECS rolling deployment 컨트롤러에 대해서만 로드 밸런서 구성을 수정할 수 있어요 (AWS CodeDeploy blue/green이나 external은 안 됨). 로드 밸런서 구성을 추가·업데이트·제거하면 Amazon ECS가 업데이트된 Elastic Load Balancing 구성으로 새 배포를 시작해요. 이로 인해 태스크가 로드 밸런서에 등록·등록 취소돼요. Elastic Load Balancing 구성을 업데이트하기 전에 테스트 환경에서 이 동작을 검증할 것을 권장해요. 구성을 수정하는 방법은 Amazon Elastic Container Service API Reference의 UpdateService 참고.
- 서비스 태스크가 로드 밸런서 상태 검사 기준에 실패하면 태스크는 중지되고 다시 시작돼요. 이 프로세스는 서비스가 원하는 실행 태스크 수에 도달할 때까지 계속돼요.
- 로드 밸런서 활성화 서비스에 문제가 있으면 Troubleshooting service load balancers in Amazon ECS 참고.
instance대상 유형을 사용할 때는 태스크와 로드 밸런서가 같은 VPC에 있어야 해요.ip대상 유형을 사용할 때는 교차 VPC 연결이 지원돼요.- 각 서비스에 고유한 대상 그룹을 사용하세요. 여러 서비스에 같은 대상 그룹을 사용하면 서비스 배포 중 문제가 발생할 수 있어요.
- Application Load Balancer와 연결된 대상 그룹을 지정해야 해요. Application Load Balancer를 만드는 방법은 Application Load Balancers의 Create an Application Load Balancer 참고.