Amazon ECS 배포 회로 차단기가 장애를 감지하는 방법
배포 회로 차단기는 작업이 안정 상태에 도달하는지 확인하는 롤링 업데이트 메커니즘입니다. 배포 회로 차단기에는 실패한 배포를 COMPLETED
상태의 배포로 자동 롤백하는 옵션이 있습니다.
서비스 배포의 상태가 변경되면 Amazon ECS는 서비스 배포 상태 변경 이벤트를 EventBridge로 전송합니다. 이를 통해 서비스 배포 상태를 프로그래밍 방식으로 모니터링할 수 있습니다. 자세한 내용은 Amazon ECS 서비스 배포 상태 변경 이벤트 단원을 참조하십시오. 수동 조치를 통해 배포를 시작할 수 있도록 eventName
이 SERVICE_DEPLOYMENT_FAILED
인 EventBridge 규칙을 생성하고 모니터링하는 것이 좋습니다. 자세한 내용은 Amazon EventBridge 사용 설명서의 EventBridge 시작하기를 참조하세요.
배포 회로 차단기는 배포가 실패한 것으로 확인하면 COMPLETED
상태의 최신 배포를 찾습니다. 그리고 이 배포를 롤백 배포로 사용합니다. 롤백이 시작되면 배포가 COMPLETED
에서 IN_PROGRESS
로 변경됩니다. 즉, 배포가 COMPLETED
상태에 도달하기까지 다른 롤백을 사용할 수 없습니다. 배포 회로 차단기가 COMPLETED
상태의 배포를 찾지 못하면 회로 차단기는 새 작업을 시작하지 않으며 배포가 중단됩니다.
서비스를 생성하면 스케줄러는 시작하지 못한 작업을 2단계로 추적합니다.
-
1단계 - 스케줄러는 작업을 모니터링하여 작업이 실행 중 상태로 전환되는지 확인합니다.
-
성공 - 실행 중 상태로 전환된 작업이 두 개 이상 있기 때문에 배포가 완료됨 상태로 전환될 가능성이 있습니다. 실패 기준을 건너뛰고 회로 차단기는 2단계로 진행합니다.
-
실패 - 실행 중 상태로 전환되지 않은 작업이 연속적으로 발생하고 배포가 실패 상태로 전환될 수 있습니다.
-
-
2단계 - 실행 중 상태인 작업이 하나 이상 있을 때 배포가 이 단계로 설정됩니다. 회로 차단기는 평가 중인 현재 배포의 작업에 대해 상태 확인을 확인합니다. 검증된 상태 확인은 Elastic Load Balancing, AWS Cloud Map 서비스 상태 확인, 컨테이너 상태 확인입니다.
-
성공 - 실행 중인 작업 중 상태 확인에 통과된 작업이 하나 이상 있습니다.
-
실패 - 상태 확인 실패로 인해 교체된 작업이 실패 임계값에 도달했습니다.
-
서비스에 배포 회로 차단기를 사용할 때 다음 사항을 고려해야 합니다. EventBridge에서 규칙을 생성합니다.
-
DescribeServices
응답은 배포 상태인rolloutState
및rolloutStateReason
에 대한 인사이트를 제공합니다. 새 배포가 시작되면 롤아웃 상태는IN_PROGRESS
상태에서 시작됩니다. 서비스가 정상 상태에 도달하면 롤아웃 상태가COMPLETED
로 전환됩니다. 서비스가 안정 상태에 도달하지 못하고 회로 차단기가 켜지면 배포가FAILED
상태로 전환됩니다.FAILED
상태의 배포는 새로운 작업을 시작하지 않습니다. -
Amazon ECS는 시작되고 완료된 배포에 대해 서비스 배포 상태 변경 이벤트를 전송하는 것 외에도 회로 차단기가 켜진 배포가 실패할 경우 이벤트를 전송합니다. 이러한 이벤트는 배포가 실패한 이유 또는 롤백으로 인해 배포가 시작된 경우에 대한 세부 정보를 제공합니다. 자세한 내용은 Amazon ECS 서비스 배포 상태 변경 이벤트 단원을 참조하십시오.
-
이전 배포가 실패하고 롤백이 시작되었기 때문에 새 배포가 시작된 경우 서비스 배포의
reason
필드에 롤백으로 인해 배포가 시작되었음이 표시됩니다. -
배포 회로 차단기는 롤링 업데이트(
ECS
) 배포 컨트롤러를 사용하는 Amazon ECS 서비스에만 지원됩니다. -
Amazon ECS 콘솔 또는 AWS CLI(CloudWatch 옵션과 함께 배포 회로 차단기를 사용할 때)를 사용해야 합니다. 자세한 내용은 AWS Command Line Interface 참조에서 정의된 파라미터를 사용하여 서비스 생성 및 create-service를 참조하세요.
다음 create-service
AWS CLI 예제에서는 배포 회로 차단기에 롤백 옵션이 사용된 경우 Linux 서비스를 생성하는 방법을 보여줍니다.
aws ecs create-service \ --service-name
MyService
\ --deployment-controller type=ECS
\ --desired-count3
\ --deployment-configuration "deploymentCircuitBreaker={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
}"
예시:
배포 1은 COMPLETED
상태입니다.
배포 2를 시작할 수 없으므로 회로 차단기는 배포 1로 롤백합니다. 배포 1이 IN_PROGRESS
상태로 전환됩니다.
배포 3이 시작되고 COMPLETED
상태의 배포가 없으므로 배포 3은 롤백하거나 작업을 시작할 수 없습니다.
실패 임계값
배포 회로 차단기는 임계값을 계산한 다음 이 값을 사용하여 배포를 FAILED
상태로 이동할 시기를 결정합니다.
배포 회로 차단기의 최소 임계값은 3이고 최대 임계값은 200이며 다음 공식의 값을 사용하여 배포 실패를 확인합니다.
Minimum threshold <= 0.5 * desired task count
=> maximum threshold
계산 결과가 최솟값 3보다 크지만 최댓값인 200보다 작으면 실패 임계값은 계산된 임계값(반올림)으로 설정됩니다.
참고
임계값은 변경할 수 없습니다.
배포 상태 검사에는 두 단계가 있습니다.
-
배포 회로 차단기는 배포의 일부인 태스크를 모니터링하고
RUNNING
상태의 태스크를 확인합니다. 스케줄러는 현재 배포된 태스크가RUNNING
상태일 때 실패 기준을 무시하고 다음 단계로 진행합니다. 태스크가RUNNING
상태에 도달하지 못하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 임계값과 같으면 배포가FAILED
로 표시됩니다. -
RUNNING
상태의 작업이 하나 이상 있을 때 이 단계가 시작됩니다. 배포 회로 차단기는 현재 배포의 태스크에 대해 다음 리소스를 대상으로 상태 확인을 수행합니다.-
Elastic Load Balancing 로드 밸런서
-
AWS Cloud Map 서비스
-
Amazon ECS 컨테이너 상태 확인
태스크에 대한 상태 확인이 실패하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 임계값과 같으면 배포가
FAILED
로 표시됩니다. -
다음 표에 몇 가지 예가 나와 있습니다.
원하는 작업 개수 | 계산 | 임계값 |
---|---|---|
1 |
|
3(계산된 값이 최솟값보다 작음) |
25 |
|
13(값이 반올림됨) |
400 |
|
200 |
800 |
|
200(계산된 값이 최댓값보다 큼) |
예를 들어, 임계값이 3인 경우 회로 차단기는 실패 횟수가 0으로 설정된 상태에서 시작됩니다. 작업이 RUNNING
상태에 도달하지 못하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 3과 같아지면 배포가 FAILED
로 표시됩니다.
롤백 옵션을 사용하는 방법에 대한 추가 예제는 Amazon ECS 배포 회로 차단기 발표