서비스 로드 밸런싱 - Amazon Elastic Container Service

서비스 로드 밸런싱

필요하다면 Elastic Load Balancing을 사용하여 서비스의 태스크에 트래픽을 균등하게 분산하도록 Amazon ECS 서비스를 구성할 수 있습니다.

참고

태스크 세트를 사용할 때 모두 Elastic Load Balancing을 사용하거나 Elastic Load Balancing을 사용하지 않도록 세트의 모든 태스크를 구성해야 합니다.

Amazon EC2 인스턴스에서 호스팅되는 Amazon ECS 서비스는 Application Load Balancer, Network Load Balancer 및 Classic Load Balancer 로드 밸런서 유형을 지원합니다. AWS Fargate에서 호스팅된 Amazon ECS 서비스는 Application Load Balancer와 Network Load Balancer만을 지원합니다. Application Load Balancer는 HTTP/HTTPS(또는 계층 7) 트래픽을 라우팅하는 데 사용합니다. Network Load Balancer는 TCP 또는 UDP(또는 계층 4) 트래픽을 라우팅하는 데 사용합니다. Classic Load Balancer는 TCP 트래픽을 라우팅하는 데 사용됩니다. 자세한 정보는 로드 밸런서 유형 섹션을 참조하세요.

Application Load Balancer는 Amazon ECS 서비스에 사용할 수 있는 유용한 몇 가지 기능을 제공합니다.

  • 각 서비스는 여러 대상 그룹을 지정할 경우 여러 로드 밸런서의 트래픽을 처리하며 여러 로드 밸런스 포트를 노출합니다.

  • 이 기능은 Fargate와 EC2 인스턴스 모두에서 호스팅되는 작업에서 지원됩니다.

  • Application Load Balancer는 컨테이너가 동적 호스트 포트 매핑을 사용하도록 허용합니다(그래서 컨테이너 인스턴스마다 동일 서비스의 여러 작업이 허용됩니다).

  • Application Load Balancer는 포트 기반 라우팅과 우선순위 규칙을 지원합니다(그래서 여러 서비스가 단일 Application Load Balancer에서 동일한 리스너 포터를 사용할 수 있습니다).

Network Load Balancer 또는 Classic Load Balancer에만 제공되는 기능이 필요한 경우가 아니라면 이러한 최신 기능을 이용할 수 있도록 Amazon ECS 서비스에 Application Load Balancer를 사용하는 것이 좋습니다. Elastic Load Balancing에 대한 정보와 로드 밸런서 유형의 차이점에 대한 자세한 정보는 Elastic Load Balancing 사용 설명서를 참조하세요.

로드 밸런서에서는 사용한 만큼만 지불하면 됩니다. 자세한 정보는 Elastic Load Balancing 요금을 참조하세요.

서비스 로드 밸런싱 고려사항

서비스 로드 밸런싱을 사용할 때는 다음을 고려하세요.

Application Load Balancer 및 Network Load Balancer 고려 사항

다음 고려 사항은 Application Load Balancer 또는 Network Load Balancer를 사용하는 Amazon ECS 서비스에만 해당됩니다.

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

  • Application Load Balancer 또는 Network Load Balancer를 사용하는 서비스의 경우 6개 이상의 대상 그룹을 서비스에 연결할 수 없습니다.

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

  • 서비스가 Application Load Balancer를 사용하며 HTTP/HTTPS 서비스에 대해 포트 80 및 포트 443과 같은 여러 로드 밸런싱 포트에 액세스해야 하는 경우 두 개의 리스너를 구성할 수 있습니다. 한 리스너는 요청을 서비스로 전달하는 HTTPS를 담당하고 다른 리스너는 HTTP 요청을 적절한 HTTPS 포트로 경로를 재지정하는 책임을 집니다. 자세한 정보는 Application Load Balancers 사용 설명서Application Load Balancer에 리스너 생성을 참조하세요.

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

  • 서비스를 생성한 후 서비스 정의에 지정된 대상 그룹 ARN 또는 로드 밸런서 이름, 컨테이너 이름 및 컨테이너 포트는 변경할 수 없습니다. AWS CLI 또는 SDK를 사용하여 로드 밸런서 구성을 수정할 수 있습니다. 구성을 변경하는 방법에 대한 자세한 정보는 Amazon Elastic Container Service API Reference(Amazon Elastic Container Service API 레퍼런스)의 UpdateService를 참조하세요. 기존 서비스의 로드 밸런서 구성은 추가, 제거 또는 변경할 수 없습니다. 서비스에 대한 태스크 정의를 업데이트하는 경우, 서비스를 만들 때 지정한 컨테이너 이름 및 컨테이너 포트가 태스크 정의에서 그대로 유지되어야 합니다.

  • 서비스의 작업이 로드 밸런서 상태 확인 기준에 실패하면 작업이 중단되고 다시 시작됩니다. 이 프로세스는 서비스가 원하는 실행 작업 수에 도달할 때까지 계속됩니다.

  • IP 주소로 구성된 Network Load Balancer를 대상으로 사용하는 경우 요청은 Network Load Balancer의 프라이빗 IP 주소에서 오는 것으로 간주됩니다. 즉, 대상 보안 그룹에서 수신 요청 집합과 상태 확인을 허용하는 즉시 Network Load Balancer 뒤에 있는 서비스가 효과적으로 열려 있습니다.

  • Network Load Balancer를 사용하여 Fargate의 Amazon ECS 태스크로 UDP 트래픽을 라우팅하려면 태스크에 플랫폼 버전 1.4.0(Linux) 또는 1.0.0(Windows)을 사용해야 합니다.

  • 클라이언트 연결 시간 제한보다 길어야 하는 대상 그룹 등록 취소 지연보다 길게 태스크 정의의 StopTimeout을 설정하여 클라이언트 애플리케이션의 오류를 최소화합니다. 권장 클라이언트 구성에 대한 자세한 정보는 Builders' Library를 참조하세요.

    또한 연결 종료를 위한 Network Load Balancer 대상 그룹 속성은 등록 취소 시간 이후에 남아 있는 모든 연결을 닫습니다. 이로 인해 클라이언트가 처리하지 않는 경우 클라이언트가 원하지 않는 오류 메시지를 표시할 수 있습니다.

  • 로드 밸런서-활성화 서비스에 문제가 있는 경우, 서비스 로드 밸런서 문제 해결을 참조하세요

Classic Load Balancer 고려 사항

다음 고려 사항은 Classic Load Balancer를 사용하는 Amazon ECS 서비스에만 해당됩니다.

  • Fargate 시작 유형의 서비스와 같이 awsvpc 네트워크 모드를 사용하는 작업이 있는 서비스는 Classic Load Balancer를 지원하지 않습니다.

  • 단일 태스크 정의에서 시작되는 모든 컨테이너는 항상 동일한 컨테이너 인스턴스에 배치됩니다. Classic Load Balancer의 경우, 서비스 정의에서 다수의 호스트 포트를 정의하고 이러한 리스너 포트를 로드 밸런서에 추가하여 동일 로드 밸런서 뒤에 (동일 태스크 정의 내의) 다수의 컨테이너를 둘 수 있습니다. 예를 들어 컨테이너 인스턴스에서 포트 3030을 사용하는 OpenSearch Service와 해당 컨테이너 인스턴스에서 포트 4040을 사용하는 Logstash 및 OpenSearch Dashboards로 태스크 정의가 구성되는 경우 동일한 로드 밸런서가 2개의 리스너를 통해 OpenSearch Service와 OpenSearch Dashboards에 트래픽을 라우팅할 수 있습니다. 자세한 정보는 Classic Load Balancer 사용 설명서Classic Load Balancer용 리스너를 참조하세요.

    중요

    동일 Classic Load Balancer에 여러 서비스를 연결하지 않는 것이 좋습니다. 전체 컨테이너 인스턴스는 호스트 및 포트 조합이 아닌 Classic Load Balancer로 등록 및 등록 취소되므로 이 구성으로 인해 한 서비스의 작업이 중지될 경우 문제가 발생할 수 있습니다. 이 시나리오에서 한 서비스 중지의 작업으로 인해 전체 컨테이너 인스턴스가 Classic Load Balancer에서 등록 취소될 수 있으며 동일한 컨테이너 인스턴스의 다른 서비스에서 다른 작업이 계속 사용됩니다. 여러 서비스를 단일 로드 밸런서에 연결하려면 Application Load Balancer를 사용하는 것이 좋습니다.

  • 서비스에 Classic Load Balancers를 사용하는 경우 용량 공급자 사용이 지원되지 않습니다.