가용 영역에 걸친 Amazon ECS 서비스 균형 조정

가용 영역에 걸친 Amazon ECS 서비스 균형 조정

2025년 9월 5일부터 Amazon ECS는 이 기능에 적격한 모든 서비스에 대해 가용 영역 리밸런싱(Availability Zone rebalancing)을 활성화해요. 가용 영역 확산(Availability Zone spread)이 첫 번째 태스크 배치 전략이거나 배치 전략이 없으면 서비스가 적격해요. 애플리케이션의 높은 가용성을 돕기 위해 다중 태스크 서비스를 여러 가용 영역에 걸쳐 실행하도록 구성하는 것을 권장해요.

출처: 문서

본문

첫 번째 배치 전략을 가용 영역 확산으로 지정한 서비스의 경우 AWS는 서비스 태스크를 사용 가능한 가용 영역에 고르게 분산하기 위해 최선을 다해요. 하지만 가용 영역 중단 후처럼 한 가용 영역에서 실행되는 태스크 수가 다른 가용 영역과 같지 않은 경우가 있을 수 있어요. 이 태스크 불균형을 해결하기 위해 가용 영역 리밸런싱 기능을 활성화할 수 있어요. 가용 영역 리밸런싱을 사용하면 Amazon ECS는 각 서비스의 가용 영역 전반의 태스크 분포를 지속적으로 모니터링해요. Amazon ECS가 고르지 않은 태스크 분포를 감지하면 가용 영역 전반에 걸쳐 워크로드를 리밸런싱하기 위해 자동으로 조치를 취해요. 여기에는 태스크가 가장 적은 가용 영역에서 새 태스크를 실행하고 과부하된 가용 영역의 태스크를 종료하는 것이 포함돼요. 이 재분배는 단일 가용 영역이 장애 지점이 되지 않도록 보장해, 컨테이너화된 애플리케이션의 전반적인 가용성을 유지하는 데 도움을 줘요. 자동화된 리밸런싱 프로세스는 수동 개입의 필요성을 없애 이벤트 후 복구 시간을 단축해 줘요.

다음은 가용 영역 리밸런싱 프로세스의 개요예요.

  1. Amazon ECS는 서비스가 안정 상태(steady state)에 도달한 후 모니터링을 시작하고, 각 가용 영역에서 실행되는 태스크 수를 확인해요.
  2. Amazon ECS는 각 가용 영역에서 실행되는 태스크 수의 불균형을 감지하면 다음 작업을 수행해요.
    • 가용 영역 리밸런싱이 시작됨을 알리는 서비스 이벤트를 보내요.
    • 실행 중인 태스크 수가 가장 적은 가용 영역에서 태스크를 시작해요.
    • 실행 중인 태스크 수가 가장 많은 가용 영역의 태스크를 중지해요.
    • 스케줄러는 과잉 스케일링된 가용 영역의 태스크를 중지하기 전에 새로 시작된 태스크가 HEALTHY 및 RUNNING이 될 때까지 기다려요.
    • 가용 영역 리밸런싱 결과와 함께 서비스 이벤트를 보내요.

Amazon ECS가 고르지 않은 태스크 분포를 감지하는 방법

Amazon ECS는 서비스의 desired task 수를 구성된 가용 영역 수로 나누어 각 가용 영역에서 실행되는 태스크 수의 불균형을 결정해요. desired task 수가 균등하게 나누어지지 않으면 Amazon ECS는 나머지 태스크를 구성된 가용 영역에 고르게 분산해요. 각 가용 영역에는 태스크가 하나 이상 있어야 해요.

예를 들어 두 가용 영역에 대해 desired count가 2인 Amazon ECS 서비스를 생각해 보세요. 이 시나리오에서 desired task 수는 균등하게 나누어져요. 균형 잡힌 분포는 가용 영역당 태스크 하나예요. 가용 영역 1에 태스크 2개가 있고 가용 영역 2에 태스크가 0개라면, Amazon ECS는 가용 영역 1의 태스크를 중지하기 전에 가용 영역 2에서 태스크를 시작해 리밸런싱을 시작해요.

이제 두 가용 영역에 대해 desired count가 3인 Amazon ECS 서비스를 생각해 보세요. 이 시나리오에서 desired task 수는 균등하게 나누어지지 않아요. 균형 잡힌 분포는 가용 영역 1에 태스크 1개, 가용 영역 2에 태스크 2개예요. 각 가용 영역에 태스크가 하나 이상 있고 나머지 태스크가 가용 영역 2에 배치되기 때문이에요.

세 가용 영역에 대해 desired count가 5인 Amazon ECS 서비스를 고려해 보세요. 이 시나리오에서 desired task 수는 균등하게 나누어지지 않아요. 균형 잡힌 분포는 가용 영역 1에 태스크 1개, 가용 영역 2와 3에 각각 태스크 2개예요. 각 가용 영역에 태스크 하나씩 반영한 후 나머지 태스크 2개가 가용 영역에 고르게 분산돼요.

가용 영역 리밸런싱 구성 시 고려 사항

가용 영역 리밸런싱을 구성하려 할 때 다음 사항을 고려하세요.

  • 가용 영역 리밸런싱은 Fargate와 EC2 용량 공급자를 지원하며 Amazon ECS Managed Instances에서 지원돼요. Fargate의 경우 Amazon ECS는 균형을 유지하기 위해 사용 가능한 가용 영역에 걸쳐 태스크를 자동으로 재분배해요. EC2 용량 공급자의 경우 Amazon ECS는 정의된 배치 전략과 제약을 존중하면서 기존 컨테이너 인스턴스에 걸쳐 태스크를 최선의 노력으로 리밸런싱해요. 하지만 Amazon ECS는 리밸런싱 프로세스의 일부로 저활용 가용 영역에서 새 인스턴스를 실행할 수 없어, 리밸런싱이 기존 컨테이너 인스턴스로 제한돼요.
  • 가용 영역 리밸런싱은 다음 구성에서 작동해요.
    • Replica 전략을 사용하는 서비스.
    • 첫 번째 태스크 배치 전략으로 가용 영역 확산을 지정하거나 배치 전략을 지정하지 않는 서비스.
  • 다음 기준 중 하나에 해당하는 서비스에는 가용 영역 리밸런싱을 사용할 수 없어요.
    • Daemon 전략을 사용하는 경우.
    • EXTERNAL 실행 유형(ECS Anywhere)을 사용하는 경우.
    • maximumPercent 값에 100%를 사용하는 경우.
    • Classic Load Balancer를 사용하는 경우.
    • 태스크 배치 제약으로 attribute:ecs.availability-zone을 사용하는 경우.

가용 영역 리밸런싱과 배치 전략 및 배치 제약

배치 전략은 Amazon ECS가 태스크 배치 및 종료를 위해 컨테이너 인스턴스와 가용 영역을 선택하는 방법을 결정해요. 태스크 배치 제약은 태스크가 특정 컨테이너 인스턴스에서 실행될 수 있는지 결정하는 규칙이에요.

  • EC2의 경우 가용 영역 리밸런싱과 함께 배치 전략과 배치 제약을 사용할 수 있어요. 하지만 가용 영역 리밸런싱이 작동하려면 가용 영역 확산 배치 전략이 첫 번째로 지정된 전략이어야 해요.
  • 가용 영역 리밸런싱은 다양한 배치 전략 조합과 호환돼요. 예를 들어 먼저 태스크를 가용 영역에 고르게 분산한 다음 각 가용 영역 내에서 메모리 기준으로 태스크를 bin pack하는 전략을 만들 수 있어요. 이 경우 가용 영역 확산 전략이 먼저 지정되므로 가용 영역 리밸런싱이 작동해요.
  • 배치 전략 배열의 첫 번째 전략이 가용 영역 확산 구성 요소가 아니면 가용 영역 리밸런싱이 작동하지 않는다는 점에 유의하세요. 이 요구 사항은 태스크 분포의 주요 초점이 가용 영역 간 균형 유지가 되도록 보장하며, 이는 높은 가용성에 중요해요.