CloudWatch 알람이 Amazon ECS 배포 실패를 감지하는 방법
CloudWatch 알람이 Amazon ECS 배포 실패를 감지하는 방법
지정된 CloudWatch 알람이 ALARM 상태가 되는 것을 Amazon ECS가 감지하면 배포를 실패로 설정하도록 구성할 수 있습니다. 이 글에서는 배포 알람과 롤백 옵션 사용 방법을 알아봅니다.
출처: 문서
본문
지정된 CloudWatch 알람이 ALARM 상태가 되는 것을 Amazon ECS가 감지하면 배포를 실패로 설정하도록 구성할 수 있어요. 선택적으로 실패한 배포를 마지막 완료된 배포로 롤백하도록 구성할 수도 있습니다.
다음 create-service AWS CLI 예시는 롤백 옵션과 함께 배포 알람을 사용할 때 Linux 서비스를 만드는 방법을 보여줍니다.
aws ecs create-service \
--service-name MyService \
--deployment-controller type=ECS \
--desired-count 3 \
--deployment-configuration "alarms={alarmNames=[alarm1Name,alarm2Name],enable=true,rollback=true}" \
--task-definition sample-fargate:1 \
--launch-type FARGATE \
--platform-family LINUX \
--platform-version 1.4.0 \
--network-configuration "awsvpcConfiguration={subnets=[subnet-12344321],securityGroups=[sg-12344321],assignPublicIp=ENABLED}"
서비스에 Amazon CloudWatch 알람 방법을 사용할 때 다음을 고려하세요.
- 프로덕션 트래픽이 이동된 후 블루와 그린 서비스 개정이 동시에 실행되는 기간. Amazon ECS는 이 시간을 배포와 연결된 알람 구성에 따라 계산합니다. 이 값을 설정할 수 없습니다.
deploymentConfiguration요청 파라미터에는 이제alarms데이터 타입이 포함됩니다. 알람 이름, 방법 사용 여부, 알람이 배포 실패를 나타낼 때 롤백을 시작할지 여부를 지정할 수 있어요. 자세한 내용은 Amazon Elastic Container Service API Reference의 CreateService 문서를 참고하세요.DescribeServices응답은 배포 상태,rolloutState,rolloutStateReason에 대한 인사이트를 제공합니다. 새 배포가 시작되면 롤아웃 상태는IN_PROGRESS상태로 시작합니다. 서비스가 안정 상태(steady state)에 도달하고 베이크 타임(bake time)이 완료되면 롤아웃 상태는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 Reference의 create-service 문서를 참고하세요.
- 배포 상태가 오랫동안
IN_PROGRESS로 유지되는 것을 볼 수 있습니다. 그 이유는 Amazon ECS가 활성 배포를 삭제할 때까지 상태를 변경하지 않기 때문이며, 이는 베이크 타임 이후에나 발생합니다. 알람 구성에 따라 배포는 알람을 사용하지 않을 때보다 몇 분 더 오래 걸리는 것처럼 보일 수 있습니다(새 기본 태스크 세트가 스케일 업되고 이전 배포가 스케일 다운되더라도). CloudFormation 시간 제한을 사용한다면 시간 제한을 늘리는 것을 고려하세요. 자세한 내용은 AWS CloudFormation 사용자 가이드의 템플릿에서 대기 조건 생성 문서를 참고하세요. - Amazon ECS는
DescribeAlarms를 호출해 알람을 폴링합니다.DescribeAlarms호출은 계정에 연결된 CloudWatch 서비스 쿼터에 포함됩니다. 다른 AWS 서비스가DescribeAlarms를 호출한다면 Amazon ECS의 알람 폴링에 영향을 줄 수 있어요. 예를 들어 다른 서비스가 쿼터에 도달할 만큼 많은DescribeAlarms호출을 하면 해당 서비스는 스로틀링되고 Amazon ECS도 스로틀링되어 알람을 폴링하지 못합니다. 스로틀링 기간 중에 알람이 생성되면 Amazon ECS가 알람을 놓칠 수 있고 롤백이 발생하지 않을 수 있습니다. 배포에 다른 영향은 없습니다. CloudWatch 서비스 쿼터에 대한 자세한 내용은 CloudWatch 사용자 가이드의 CloudWatch 서비스 쿼터 문서를 참고하세요. - 배포 시작 시 알람이
ALARM상태라면 Amazon ECS는 해당 배포 기간 동안 알람을 모니터링하지 않습니다(알람 구성을 무시합니다). 이 동작은 초기 배포 실패를 수정하기 위해 새 배포를 시작하려는 경우를 다룹니다.
권장 알람 (Recommended alarms)
다음 알람 지표를 사용할 것을 권장합니다:
- Application Load Balancer를 사용한다면
HTTPCode_ELB_5XX_Count와HTTPCode_ELB_4XX_CountApplication Load Balancer 지표를 사용하세요. 이 지표는 HTTP 급증을 확인합니다.
더 알아보기 (Learn more)
- 배포 알람과 롤백에 대한 자세한 내용은 AWS 개발자 가이드의 관련 문서를 참고하세요.