CloudWatch 경보가 Amazon ECS 배포 장애를 감지하는 방법
지정된 CloudWatch 경보가 ALARM
상태로 전환된 것을 탐지하면 배포를 실패로 설정하도록 Amazon ECS를 구성할 수 있습니다.
실패한 배포를 마지막으로 완료된 배포로 롤백하도록 구성을 설정할 수 있습니다.
다음 create-service
AWS CLI 예제에서는 배포 경보에 롤백 옵션이 사용된 경우 Linux 서비스를 생성하는 방법을 보여줍니다.
aws ecs create-service \ --service-name
MyService
\ --deployment-controller type=ECS
\ --desired-count3
\ --deployment-configuration "alarms={alarmNames=[alarm1Name
,alarm2Name
],enable=true
,rollback=true
}" \ --task-definitionsample-fargate:1
\ --launch-typeFARGATE
\ --platform-familyLINUX
\ --platform-version1.4.0
\ --network-configuration "awsvpcConfiguration={subnets=[subnet-12344321
],securityGroups=[sg-12344321
],assignPublicIp=ENABLED
}"
서비스에서 Amazon CloudWatch 경보 메서드를 사용하는 경우 다음을 고려하세요.
-
베이크 소요 시간은 새 서비스 버전이 스케일 아웃되고 이전 서비스 버전이 스케일 인된 후의 기간으로, 이 기간 동안 Amazon ECS는 배포와 관련된 경보를 계속 모니터링합니다. Amazon ECS는 배포와 관련된 경보 구성을 기반으로 이 기간을 계산합니다.
-
이제
deploymentConfiguration
요청 파라미터에alarms
데이터 유형이 포함됩니다. 경보 이름, 메서드 사용 여부 및 경보가 배포 실패를 나타내는 경우 롤백을 시작할지 여부를 지정할 수 있습니다. 자세한 내용은 Amazon Elastic Container Service API 참조의 CreateService를 참조하세요. -
DescribeServices
응답은 배포 상태인rolloutState
및rolloutStateReason
에 대한 인사이트를 제공합니다. 새 배포가 시작되면 롤아웃 상태는IN_PROGRESS
상태에서 시작됩니다. 서비스가 안정 상태에 도달하고 베이크 소요 시간이 완료되면 롤아웃 상태가COMPLETED
로 전환됩니다. 서비스가 안정 상태에 도달하지 못하고 경보가ALARM
상태로 전환되면 배포가FAILED
상태로 전환됩니다.FAILED
상태의 배포는 새로운 태스크를 시작하지 않습니다. -
Amazon ECS는 시작되고 완료된 배포에 대해 서비스 배포 상태 변경 이벤트를 전송합니다. 또한 Amazon ECS는 해당 경보를 사용하는 배포가 실패할 경우 이벤트를 전송합니다. 이러한 이벤트는 배포가 실패한 이유 또는 롤백으로 인해 배포가 시작된 경우에 대한 세부 정보를 제공합니다. 자세한 내용은 Amazon ECS 서비스 배포 상태 변경 이벤트 단원을 참조하십시오.
-
이전 배포가 실패하고 롤백이 켜졌기 때문에 새 배포가 시작된 경우 서비스 배포 상태 변경 이벤트의
reason
필드에 롤백 때문에 배포가 시작되었음이 표시됩니다. -
배포 회로 차단기와 Amazon CloudWatch 경보를 사용하여 실패를 탐지하는 경우 메서드 중 하나에 대한 기준이 충족되는 즉시 메서드 중 하나에서 배포 실패를 시작할 수 있습니다. 롤백은 배포 실패를 시작한 메서드에 대해 롤백 옵션을 사용할 때 발생합니다.
-
Amazon CloudWatch 경보는 롤링 업데이트(
ECS
) 배포 컨트롤러를 사용하는 Amazon ECS 서비스에만 지원됩니다. -
Amazon ECS 콘솔 또는 AWS CLI를 사용하여 이 옵션을 구성할 수 있습니다. 자세한 내용은 AWS Command Line Interface 참조에서 정의된 파라미터를 사용하여 서비스 생성 및 create-service를 참조하세요.
-
배포 상태가 장시간 동안
IN_PROGRESS
로 유지되는 것을 알 수 있습니다. 그 이유는 활성 배포를 삭제할 때까지 Amazon ECS에서 상태가 변경되지 않기 때문이며 베이크 소요 시간이 지나야 이러한 상황이 발생하지 않습니다. 경보 구성에 따라 새 기본 작업 세트는 스케일 업되고 이전 배포는 스케일 다운되더라도 경보를 사용하지 않을 때보다 배포가 몇 분 더 오래 걸리는 것처럼 보일 수 있습니다. CloudFormation 제한 시간을 사용하는 경우 제한 시간을 늘리는 것이 좋습니다. 자세한 내용은 AWS CloudFormation 사용 설명서의 템플릿에 대기 조건 생성을 참조하세요. -
Amazon ECS는
DescribeAlarms
를 호출하여 경보를 폴링합니다.DescribeAlarms
호출 수는 계정과 연결된 CloudWatch 서비스 할당량에 포함됩니다.DescribeAlarms
를 호출하는 다른 AWS 서비스가 있는 경우 Amazon ECS에서 경보를 폴링하는 데 영향을 받을 수 있습니다. 예를 들어 다른 서비스가 할당량에 도달할 만큼 충분히DescribeAlarms
를 직접 호출하면 해당 서비스는 제한이 발생하고 Amazon ECS 역시 제한이 발생하여 경보를 폴링할 수 없습니다. 제한 기간에 경보가 생성되면 Amazon ECS에서 경보를 놓치고 롤백이 발생하지 않을 수 있습니다. 배포에 다른 영향을 미치지 않습니다. CloudWatch 서비스 할당량에 대한 자세한 내용은 CloudWatch 사용 설명서의 CloudWatch 서비스 할당량을 참조하세요. -
배포 시작 시 경보가
ALARM
상태인 경우 Amazon ECS는 해당 배포 기간 동안 경보를 모니터링하지 않습니다(Amazon ECS는 경보 구성을 무시함). 이 동작은 초기 배포 실패를 수정하기 위해 새 배포를 시작하려는 경우를 다룹니다.
권장되는 경보
다음 경보 지표를 사용하는 것이 좋습니다.
-
Application Load Balancer를 사용하는 경우
HTTPCode_ELB_5XX_Count
및HTTPCode_ELB_4XX_Count
Application Load Balancer 지표를 사용합니다. 이러한 지표는 HTTP 급증을 확인합니다. Application Load Balancer 지표에 대한 자세한 내용은 Application Load Balancer 사용 설명서의 Application Load Balancer의 CloudWatch 지표를 참조하세요. -
기존 애플리케이션이 있는 경우
CPUUtilization
및MemoryUtilization
지표를 사용합니다. 이러한 지표는 클러스터 또는 서비스가 사용하는 CPU 및 메모리의 비율을 확인합니다. 자세한 내용은 고려 사항 단원을 참조하십시오. -
작업에서 Amazon Simple Queue Service 대기열을 사용하는 경우
ApproximateNumberOfMessagesNotVisible
Amazon SQS 지표를 사용합니다. 이 지표는 지연되어 즉시 읽을 수 없는 대기열의 메시지 수를 확인합니다. Amazon SQS 지표에 대한 자세한 내용은 Amazon Simple Queue Service 개발자 안내서의 Amazon SQS에 사용 가능한 CloudWatch 지표를 참조하세요.