설명
ECS 서비스는 새 버전 배포나 교체 중에도 필요한 수의 정상 태스크를 유지해야 서비스 중단을 줄일 수 있습니다. 배포 설정, 헬스 체크와 실행 용량이 맞지 않으면 태스크가 부족해지거나 배포가 진행되지 않을 수 있습니다. deployment_configuration을 생략해도 서비스 기본값이 적용되므로 생략 자체가 실행 태스크 부재를 뜻하지는 않습니다.
잠재적 영향
- 배포 중 처리 용량이 줄거나 서비스가 일시적으로 중단될 수 있습니다.
- 새 태스크를 배치할 여유가 없으면 배포나 장애 복구가 지연될 수 있습니다.
해결 방법
- 서비스의 배포 방식에 맞게
desired_count,minimum_healthy_percent,maximum_percent를 검토하세요. 비율을 실제 태스크 수로 환산해 충분한 정상 태스크와 교체 여유를 확보하세요. - 배치 제약, 클러스터 용량과 헬스 체크를 함께 검토하고 운영 조건에서 배포를 시험하세요.
예시
EC2 기반 복제 서비스의 롤링 배포를 가정합니다. 클러스터와 태스크 정의 및 배치 제약을 만족하는 인스턴스가 필요합니다.
변경 전
yaml
- name: ECS 서비스 생성
community.aws.ecs_service:
state: present
name: test-service
cluster: test-cluster
task_definition: test-task-definition
desired_count: 3
placement_constraints:
- type: memberOf
expression: "attribute:flavor==test"
placement_strategy:
- type: binpack
field: memory
태스크 수는 3으로 요청하며 배포 비율은 명시하지 않습니다. 실제 기본값과 사용 가능한 용량을 확인하세요.
변경 후
yaml
- name: ECS 서비스 생성
community.aws.ecs_service:
state: present
name: test-service
cluster: test-cluster
task_definition: test-task-definition
desired_count: 3
deployment_configuration:
minimum_healthy_percent: 75
maximum_percent: 150
placement_constraints:
- type: memberOf
expression: "attribute:flavor==test"
placement_strategy:
- type: binpack
field: memory
태스크 3개에 대해 최소 비율 75%는 올림하여 3개, 최대 비율 150%는 내림하여 4개입니다. 새 태스크 하나를 추가할 용량이 있어야 이 배포 설정을 활용할 수 있습니다.