Amazon ECS용 Gateway Load Balancer 사용

Amazon ECS용 Gateway Load Balancer 사용

Gateway Load Balancer는 OSI(Open Systems Interconnection) 모델의 세 번째 계층인 네트워크 계층에서 작동합니다. 이 글에서는 Amazon ECS와 함께 Gateway Load Balancer를 사용할 때의 고려 사항을 알아봅니다.

출처: 문서

본문

Gateway Load Balancer는 OSI(Open Systems Interconnection) 모델의 세 번째 계층인 네트워크 계층에서 작동합니다. 모든 포트의 모든 IP 패킷을 수신하고 리스너 규칙에 지정된 대상 그룹으로 트래픽을 전달합니다. 특정 대상 어플라이언스로의 흐름 유지(stickiness)는 5-튜플(TCP/UDP 흐름의 경우) 또는 3-튜플(비 TCP/UDP 흐름의 경우)로 유지합니다.

예를 들어 태스크의 컨테이너 정의가 NGINX 컨테이너 포트에 포트 80, 호스트 포트에 포트 0을 지정한다면, 호스트 포트는 컨테이너 인스턴스의 임시(ephemeral) 포트 범위(최신 Amazon ECS 최적화 AMI에서는 예: 32768~61000)에서 동적으로 선택됩니다. 태스크가 시작되면 NGINX 컨테이너는 인스턴스 ID와 포트 조합으로 Gateway Load Balancer에 등록되고, 해당 컨테이너에 대응하는 인스턴스 ID와 포트로 트래픽이 분산됩니다. 이 동적 매핑 덕분에 단일 서비스에서 여러 태스크를 같은 컨테이너 인스턴스에서 실행할 수 있어요. 자세한 내용은 Gateway Load Balancers의 Gateway Load Balancer란 무엇인가 문서를 참고하세요.

배포를 빠르게 하기 위한 파라미터 설정 모범 사례에 대한 정보는 다음을 참고하세요:

  • Amazon ECS용 로드 밸런서 상태 확인 파라미터 최적화
  • Amazon ECS용 로드 밸런서 연결 드레이닝 파라미터 최적화

Amazon ECS와 함께 Gateway Load Balancer를 사용할 때 다음을 고려하세요:

  • Amazon ECS는 태스크가 생성되고 중지될 때 로드 밸런서에 대상(target)을 등록하고 등록 해제하는 데 필요한 권한을 제공하는 서비스 연결 IAM 역할을 요구합니다. 자세한 내용은 Amazon ECS용 서비스 연결 역할 사용 문서를 참고하세요.
  • IPv6 전용 구성의 서비스의 경우 Gateway Load Balancer의 대상 그룹 IP 주소 유형을 dualstack으로 설정해야 합니다.
  • awsvpc가 아닌 네트워크 모드를 사용하는 태스크가 있는 서비스에는 Gateway Load Balancer가 지원되지 않습니다.
  • 로드 밸런서 서브넷 구성은 컨테이너 인스턴스가 위치한 모든 가용 영역을 포함해야 합니다.
  • 서비스를 만든 후에는 AWS Management Console에서 로드 밸런서 구성을 변경할 수 없습니다. AWS Copilot, AWS CloudFormation, AWS CLI 또는 SDK를 사용해 ECS 롤링 배포 컨트롤러에 한해 로드 밸런서 구성을 수정할 수 있으며, AWS CodeDeploy 블루/그린 또는 외부 컨트롤러는 수정할 수 없습니다. 로드 밸런서 구성을 추가, 업데이트 또는 제거하면 Amazon ECS는 업데이트된 Elastic Load Balancing 구성으로 새 배포를 시작합니다. 이로 인해 태스크가 로드 밸런서에 등록되고 등록 해제됩니다. Elastic Load Balancing 구성을 업데이트하기 전에 테스트 환경에서 이를 검증할 것을 권장합니다. 구성 수정 방법에 대한 정보는 Amazon Elastic Container Service API Reference의 UpdateService 문서를 참고하세요.
  • 서비스 태스크가 로드 밸런서 상태 확인 기준을 실패하면 태스크가 중지되고 다시 시작됩니다. 이 프로세스는 서비스가 원하는 실행 태스크 수에 도달할 때까지 계속됩니다.
  • IP 주소를 대상으로 구성된 Gateway Load Balancer를 사용할 때 요청은 Gateway Load Balancer의 프라이빗 IP 주소에서 온 것으로 보입니다. 이는 대상 보안 그룹에서 들어오는 요청과 상태 확인을 허용하는 즉시 Gateway Load Balancer 뒤의 서비스가 사실상 세상에 열려 있게 된다는 뜻입니다.
  • Fargate 태스크의 경우 플랫폼 버전 1.4.0(Linux) 또는 1.0.0(Windows)을 사용해야 합니다.
  • 로드 밸런서 활성화 서비스에 문제가 있다면 Amazon ECS의 서비스 로드 밸런서 문제 해결 문서를 참고하세요.
  • instance 대상 유형을 사용할 때 태스크와 로드 밸런서는 같은 VPC에 있어야 합니다. ip 대상 유형을 사용할 때는 교차 VPC 연결이 지원됩니다.
  • 각 서비스에 고유한 대상 그룹을 사용하세요. 여러 서비스에 같은 대상 그룹을 사용하면 서비스 배포 중에 문제가 발생할 수 있어요.
  • Gateway Load Balancer와 연결된 대상 그룹을 지정해야 합니다. Gateway Load Balancer 생성 방법에 대한 정보는 Gateway Load Balancers의 Gateway Load Balancer 시작하기 문서를 참고하세요.

중요: 서비스의 태스크 정의가 awsvpc 네트워크 모드(Fargate에 필수)를 사용한다면 대상 유형으로 instance가 아니라 ip를 선택해야 합니다. awsvpc 네트워크 모드를 사용하는 태스크는 Amazon EC2 인스턴스가 아니라 탄력적 네트워크 인터페이스와 연결되기 때문입니다. C1, CC1, CC2, CG1, CG2, CR1, G1, G2, HI1, HS1, M1, M2, M3, T1 유형의 인스턴스는 인스턴스 ID로 등록할 수 없습니다. 이러한 유형의 인스턴스는 IP 주소로 등록할 수 있어요.

더 알아보기 (Learn more)

  • Gateway Load Balancer 구성에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.