Amazon ECS에 Gateway Load Balancer 사용 - Amazon Elastic Container Service

Amazon ECS에 Gateway Load Balancer 사용

Gateway Load Balancer는 오픈 시스템 상호 연결(OSI) 모델의 세 번째 계층인 네트워크 계층에서 작동합니다. 모든 포트에서 모든 IP 패킷을 수신하고 리스너 규칙에 지정된 대상 그룹으로 트래픽을 전달합니다. 5튜플(TCP/UDP 흐름의 경우) 또는 3튜플(비 TCP/UDP 흐름의 경우)을 사용하여 특정 대상 어플라이언스에 대한 흐름의 연결을 유지합니다. 예를 들어, 작업의 컨테이너 정의가 NGINX 컨테이너 포트로 포트 80을 지정하고, 호스트 포트로 포트 0을 지정하면 컨테이너 인스턴스의 임시 포트 범위(예: 최신 Amazon ECS 최적화 AMI에서 32768 ~ 61000)에서 호스트 포트가 동적으로 선택됩니다. 태스크가 시작되면 NGINX 컨테이너가 인스턴스 ID와 포트의 조합으로 Gateway Load Balancer에 등록되고 트래픽은 해당 컨테이너에 해당하는 인스턴스 ID와 포트에 분산됩니다. 이 동적 매핑을 통해 동일한 컨테이너 인스턴스에서 단일 서비스의 다중 작업이 가능합니다. 자세한 내용은 Gateway Load Balancer에서 Gateway Load Balancer란 무엇입니까?를 참조하세요.

배포 속도를 높이기 위한 파라미터 설정 모범 사례에 대한 자세한 내용은 다음을 참조하세요.

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

  • Amazon ECS에는 작업이 생성되고 중지될 때 로드 밸런서에 대상을 등록 및 등록 취소하는 데 필요한 권한을 제공하는 서비스 연결 IAM 역할이 필요합니다. 자세한 내용은 Amazon ECS에 대해 서비스 연결 역할 사용 섹션을 참조하세요.

  • awsvpc 네트워크 모드를 사용하는 작업이 있는 서비스의 경우 서비스의 대상 그룹을 만들 때 instance가 아닌 ip를 대상 유형으로 선택해야 합니다. 이는 awsvpc 네트워크 모드를 사용하는 작업이 Amazon EC2 인스턴스가 아닌 탄력적 네트워크 인터페이스와 연결되기 때문입니다.

  • awsvpc 이외의 네트워크 모드를 사용하는 작업이 있는 서비스의 경우게이트웨이 로드 밸런서가 지원되지 않습니다.

  • 로드 밸런서 서브넷 구성에는 컨테이너 인스턴스가 상주하는 모든 가용 영역이 포함되어야 합니다.

  • 서비스를 생성한 후에는 로드 밸런서 구성을 AWS Management Console에서 변경할 수 없습니다. AWS Copilot, AWS CloudFormation, AWS CLI 또는 SDK를 사용하여 로드 밸런서 구성을 AWS CodeDeploy 블루/그린 또는 외부가 아닌 ECS 롤링 배포 컨트롤러에 대해서만 변경할 수 있습니다. 로드 밸런서 구성을 추가, 업데이트 또는 제거하면 Amazon ECS가 업데이트된 Elastic Load Balancing 구성을 사용하여 새 배포를 시작합니다. 이로 인해 작업이 로드 밸런서에 등록되거나 로드 밸런서에서 등록 취소됩니다. Elastic Load Balancing 구성을 업데이트하기 전에 테스트 환경에서 이를 확인하는 것이 좋습니다. 구성을 변경하는 방법에 대한 자세한 정보는 Amazon Elastic Container Service API Reference(Amazon Elastic Container Service API 레퍼런스)의 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 BalancerGateway 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 주소로 등록할 수 있습니다.