서비스에 여러 대상 그룹 등록 - Amazon Elastic Container Service

서비스에 여러 대상 그룹 등록

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

여러 대상 그룹을 지정하는 서비스를 생성하려는 경우 Amazon ECS API, SDK, AWS CLI 또는 AWS CloudFormation 템플릿을 사용하여 서비스를 생성해야 합니다. 서비스가 생성되면 AWS Management Console에서 서비스 및 서비스에 등록된 대상 그룹을 볼 수 있습니다. 기존 서비스의 로드 밸런서 구성을 수정하려면 UpdateService를 사용해야 합니다.

여러 대상 그룹은 다음 유형을 사용해 서비스 정의에서 정의될 수 있습니다. 서비스 정의의 전체 구문은 서비스 정의 템플릿 섹션을 참조하세요.

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"container_name", "containerPort":container_port }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"container_name", "containerPort":container_port } ]

여러 대상 그룹 고려 사항

서비스 정의에 여러 대상 그룹을 지정할 때는 다음을 고려해야 합니다.

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

  • 서비스 정의에 여러 대상 그룹을 지정하는 것은 다음 조건에서만 지원됩니다.

    • 서비스는 Application Load Balancer 또는 Network Load Balancer를 사용해야 합니다.

    • 서비스는 롤링 업데이트(ECS) 배포 컨트롤러 유형을 사용해야 합니다.

  • 여러 대상 그룹 지정은 Fargate 및 EC2 시작 유형을 모두 사용하는 태스크를 포함하는 서비스에 대해 지원됩니다.

  • 여러 대상 그룹을 지정하는 서비스를 생성하는 경우 Amazon ECS 서비스 연결 역할을 생성해야 합니다. 역할은 API 요청에서 role 파라미터를 생략하거나 AWS CloudFormation에서 Role 속성을 생략하여 생성됩니다. 자세한 정보는 Amazon ECS용 서비스 연결 역할 섹션을 참조하세요.

서비스 정의 예

다음은 서비스 정의에 여러 대상 그룹을 정의하는 사용 사례입니다. 서비스 정의의 전체 구문은 서비스 정의 템플릿 섹션을 참조하세요.

예: 내부 및 외부 트래픽에 대해 개별 로드 밸런서 사용

다음 사용 사례에서 서비스는 동일한 컨테이너 및 포트에 내부 트래픽 및 인터넷 경계 트래픽용으로 두 개의 로드 밸런서를 사용합니다.

"loadBalancers":[ //Internal ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"nginx", "containerPort":8080 }, //Internet-facing ELB { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"nginx", "containerPort":8080 } ]

예: 동일한 컨테이너에 여러 포트 노출

다음 사용 사례에서 서비스는 하나의 로드 밸런서를 사용하지만 동일한 컨테이너에 여러 포트를 노출합니다. 예를 들어 Jenkins 컨테이너는 Jenkins 웹 인터페이스용으로 8080 포트를 노출하고 API용으로 50000 포트를 노출할 수 있습니다.

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"jenkins", "containerPort":8080 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"jenkins", "containerPort":50000 } ]

예: 여러 컨테이너의 포트 노출

다음 사용 사례에서 서비스는 하나의 로드 밸런서와 두 개의 대상 그룹을 사용해 각 컨테이너별로 개별 포트를 노출합니다.

"loadBalancers":[ { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_1/1234567890123456", "containerName":"webserver", "containerPort":80 }, { "targetGroupArn":"arn:aws:elasticloadbalancing:region:123456789012:targetgroup/target_group_name_2/6543210987654321", "containerName":"database", "containerPort":3306 } ]