가용 영역 전체의 Amazon ECS 서비스 밸런싱
애플리케이션의 고가용성 달성에 도움이 되려면 여러 가용 영역에서 실행되도록 다중 태스크 서비스를 구성하는 것이 좋습니다. 첫 번째 배치 전략을 가용 영역 분산으로 지정하는 서비스의 경우 AWS에서는 사용 가능한 가용 영역에 서비스 태스크가 균등하게 분산되도록 최선을 다합니다. 그러나 한 가용 영역과 다른 가용 영역에서 실행되는 태스크 수가 동일하지 않은 경우가 있을 수 있습니다(예: 가용 영역 중단 후). 이 태스크 불균형이 해결되도록 가용 영역 리밸런싱 특성을 활성화할 수 있습니다. 가용 영역 리밸런싱을 통해 Amazon ECS에서는 각 서비스의 가용 영역 전체의 태스크 분산을 지속적으로 모니터링합니다. Amazon ECS에서는 균등하지 않은 태스크 분산이 감지되면 자동으로 가용 영역 사이에 워크로드가 리밸런싱되도록 조처합니다. 여기에는 태스크가 가장 적은 가용 영역에서 새 태스크를 시작하고 과부하가 걸린 가용 영역에서 태스크를 종료하는 것이 포함됩니다. 이 재분산은 장애 지점이 되는 가용 영역이 없어지므로 컨테이너화된 애플리케이션의 전체 가용성을 유지하는 데 도움이 됩니다. 자동 리밸런싱 프로세스를 통해 수동 개입 필요성이 제거되므로 이벤트 후 복구 시간이 단축됩니다.
다음은 가용 영역 리밸런싱 프로세스의 개요입니다.
-
Amazon ECS에서는 서비스의 상태가 안정되면 모니터링을 시작하고 각 가용 영역에서 실행되는 태스크 수를 조사합니다.
-
Amazon ECS에서는 각 가용 영역에서 실행되는 태스크 수에서 불균형이 탐지되면 다음과 같은 작업을 수행합니다.
-
가용 영역 리밸런싱이 시작되고 있음을 나타내는 서비스 이벤트를 보냅니다.
-
실행 중인 태스크 수가 가장 적은 가용 영역의 태스크를 시작합니다.
-
실행 중인 태스크 수가 가장 많은 가용 영역의 태스크를 중지합니다.
-
스케줄러에서는 과도하게 규모가 조정된 가용 영역의 태스크를 중지하기 전에 새로 시작된 태스크가
HEALTHY
및RUNNING
이 될 때까지 기다립니다. -
가용 영역 리밸런싱 결과가 있는 서비스 이벤트를 보냅니다.
-
Amazon ECS에서 불균형 태스크 분배를 탐지하는 방법
Amazon ECS는 서비스의 원하는 태스크 수를 구성된 가용 영역 수로 나누어 각 가용 영역에서 실행되는 태스크 수의 불균형을 확인합니다. 원하는 태스크 수가 균등하게 분배되지 않는 경우 Amazon ECS는 나머지 태스크를 구성된 가용 영역 전체에 균등하게 분배합니다. 각 가용 영역에는 태스크가 1개 이상 있어야 합니다.
2개의 가용 영역에 대해 원하는 태스크 수가 2개로 구성된 Amazon ECS 서비스를 예로 들어 보겠습니다. 이 시나리오에서는 원하는 태스크 수가 균등하게 배포됩니다. 균형 잡힌 분배는 가용 영역당 태스크 1개입니다. 가용 영역 1에 태스크가 2개 있고 가용 영역 2에 태스크가 없는 경우 Amazon ECS는 가용 영역 1에서 태스크를 중지하기 전에 가용 영역 2에서 태스크를 시작하여 재분배를 시작합니다.
이제 2개의 가용 영역에 대해 원하는 태스크 수가 3개로 구성된 Amazon ECS 서비스를 예로 들어 보겠습니다. 이 시나리오에서는 원하는 태스크 수가 균등하게 배포되지 않습니다. 각 가용 영역에는 태스크가 1개 이상 있고 나머지 태스크는 가용 영역 2에 배치되므로 균형 잡힌 분배는 가용 영역 1에 태스크 1개와 가용 영역 2에 태스크 2개입니다.
3개의 가용 영역에 대해 원하는 태스크 수가 5개로 구성된 Amazon ECS 서비스를 예로 들어 보겠습니다. 이 시나리오에서는 원하는 태스크 수가 균등하게 배포되지 않습니다. 균형 잡힌 분배는 가용 영역 1에 태스크 1개와 가용 영역 2와 3 각각에 태스크 2개입니다. 모든 가용 영역에 태스크가 1개씩 있음을 고려하여 나머지 2개의 태스크는 가용 영역에 균등하게 분배됩니다.
가용 영역 재분배 구성 시 고려 사항
가용 영역 재분배를 구성하려는 경우 다음 사항을 고려하세요.
가용 영역 리밸런싱에서는 Fargate 및 EC2 시작 유형을 지원합니다. 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)하는 전략을 생성할 수 있습니다. 이 경우 가용 영역 분산 전략이 먼저 지정되므로 가용 영역 리밸런싱이 작동합니다. 배치 전략 배열의 첫 번째 전략이 가용 영역 분산 구성 요소가 아닌 경우 가용 영역 리밸런싱이 작동하지 않는다는 점을 유의해야 합니다. 이 요구 사항에 따라 태스크 분산의 일차적인 초점이 고가용성에 매우 중요한 가용 영역 전체의 균형 유지 관리에 맞춰집니다. 태스크 배치 전략 및 제약 조건에 대한 자세한 내용은 Amazon ECS가 컨테이너 인스턴스에 작업을 배치하는 방법 단원을 참조하세요.
Fargate 시작 유형을 사용하는 태스크에 대해서는 작업 배치 전략 및 제약이 지원되지 않습니다. Fargate는 액세스 가능한 가용 영역 전체에 작업을 분산시키기 위해 최선을 다합니다. 용량 공급자에 Fargate와 Fargate 스팟이 모두 포함되는 경우 분산 동작은 용량 공급자마다 독립적입니다.
다음 예제 전략에서는 가용 영역 전체에 균등하게 태스크를 분산한 다음에 각 가용 영역 내에서 메모리를 기준으로 태스크를 빈팩(bin pack)합니다. 가용 영역 리밸런싱은 spread
전략이 첫 번째이므로 서비스와 호환됩니다.
"placementStrategy": [ { "field": "attribute:ecs.availability-zone", "type": "spread" }, { "field": "memory", "type": "binpack" } ]
가용 영역 리밸런싱 켜기
신규 및 기존 서비스에 대해 가용 영역 리밸런싱을 활성화해야 합니다.
콘솔, API 또는 AWS CLI를 사용하여 가용 영역 리밸런싱을 활성화 및 비활성화할 수 있습니다.
서비스 유형 | API | 콘솔 | CLI |
---|---|---|---|
기존 | UpdateService | Amazon ECS 서비스 업데이트 | update-service |
New | CreateService | 콘솔을 사용하여 Amazon ECS 서비스 생성 | create-service |