Amazon ECS 배포 회로 차단기가 장애를 감지하는 방법 - Amazon Elastic Container Service

Amazon ECS 배포 회로 차단기가 장애를 감지하는 방법

배포 회로 차단기는 작업이 안정 상태에 도달하는지 확인하는 롤링 업데이트 메커니즘입니다. 배포 회로 차단기에는 실패한 배포를 COMPLETED 상태의 배포로 자동 롤백하는 옵션이 있습니다.

서비스 배포의 상태가 변경되면 Amazon ECS는 서비스 배포 상태 변경 이벤트를 EventBridge로 전송합니다. 이를 통해 서비스 배포 상태를 프로그래밍 방식으로 모니터링할 수 있습니다. 자세한 내용은 Amazon ECS 서비스 배포 상태 변경 이벤트 단원을 참조하십시오. 수동 조치를 통해 배포를 시작할 수 있도록 eventNameSERVICE_DEPLOYMENT_FAILED인 EventBridge 규칙을 생성하고 모니터링하는 것이 좋습니다. 자세한 정보는 Amazon EventBridge 사용 설명서EventBridge 규칙 생성을 참조하세요.

배포 회로 차단기는 배포가 실패한 것으로 확인하면 COMPLETED 상태의 최신 배포를 찾습니다. 그리고 이 배포를 롤백 배포로 사용합니다. 롤백이 시작되면 배포가 COMPLETED에서 IN_PROGRESS로 변경됩니다. 즉, 배포가 COMPLETED 상태에 도달하기까지 다른 롤백을 사용할 수 없습니다. 배포 회로 차단기가 COMPLETED 상태의 배포를 찾지 못하면 회로 차단기는 새 작업을 시작하지 않으며 배포가 중단됩니다.

서비스를 생성하면 스케줄러는 시작하지 못한 작업을 2단계로 추적합니다.

  • 1단계 - 스케줄러는 작업을 모니터링하여 작업이 실행 중 상태로 전환되는지 확인합니다.

    • 성공 - 실행 중 상태로 전환된 작업이 두 개 이상 있기 때문에 배포가 완료됨 상태로 전환될 가능성이 있습니다. 실패 기준을 건너뛰고 회로 차단기는 2단계로 진행합니다.

    • 실패 - 실행 중 상태로 전환되지 않은 작업이 연속적으로 발생하고 배포가 실패 상태로 전환될 수 있습니다.

  • 2단계 - 실행 중 상태인 작업이 하나 이상 있을 때 배포가 이 단계로 설정됩니다. 회로 차단기는 평가 중인 현재 배포의 작업에 대해 상태 확인을 확인합니다. 검증된 상태 확인은 Elastic Load Balancing, AWS Cloud Map 서비스 상태 확인, 컨테이너 상태 확인입니다.

    • 성공 - 실행 중인 작업 중 상태 확인에 통과된 작업이 하나 이상 있습니다.

    • 실패 - 상태 확인 실패로 인해 교체된 작업이 실패 임계값에 도달했습니다.

서비스에 배포 회로 차단기를 사용할 때 다음 사항을 고려해야 합니다. EventBridge에서 규칙을 생성합니다.

  • DescribeServices 응답은 배포 상태인 rolloutStaterolloutStateReason에 대한 인사이트를 제공합니다. 새 배포가 시작되면 롤아웃 상태는 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-count 3 \ --deployment-configuration "deploymentCircuitBreaker={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}"

예제

배포 1은 COMPLETED 상태입니다.

배포 2를 시작할 수 없으므로 회로 차단기는 배포 1로 롤백합니다. 배포 1이 IN_PROGRESS 상태로 전환됩니다.

배포 3이 시작되고 COMPLETED 상태의 배포가 없으므로 배포 3은 롤백하거나 작업을 시작할 수 없습니다.

실패 임계값

배포 회로 차단기는 임계값을 계산한 다음 이 값을 사용하여 배포를 FAILED 상태로 이동할 시기를 결정합니다.

배포 회로 차단기의 최소 임계값은 3이고 최대 임계값은 200이며 다음 공식의 값을 사용하여 배포 실패를 확인합니다.

Minimum threshold <= 0.5 * desired task count => maximum threshold

계산 결과가 최솟값 3보다 크지만 최댓값인 200보다 작으면 실패 임계값은 계산된 임계값(반올림)으로 설정됩니다.

참고

임계값은 변경할 수 없습니다.

배포 상태 검사에는 두 단계가 있습니다.

  1. 배포 회로 차단기는 배포의 일부인 태스크를 모니터링하고 RUNNING 상태의 태스크를 확인합니다. 스케줄러는 현재 배포된 태스크가 RUNNING 상태일 때 실패 기준을 무시하고 다음 단계로 진행합니다. 태스크가 RUNNING 상태에 도달하지 못하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 임계값과 같으면 배포가 FAILED로 표시됩니다.

  2. RUNNING 상태의 작업이 하나 이상 있을 때 이 단계가 시작됩니다. 배포 회로 차단기는 현재 배포의 태스크에 대해 다음 리소스를 대상으로 상태 확인을 수행합니다.

    • Elastic Load Balancing 로드 밸런서

    • AWS Cloud Map 서비스

    • Amazon ECS 컨테이너 상태 확인

    태스크에 대한 상태 확인이 실패하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 임계값과 같으면 배포가 FAILED로 표시됩니다.

다음 표에 몇 가지 예가 나와 있습니다.

원하는 작업 개수 계산 임계값

1

3 <= 0.5 * 1 => 200
3(계산된 값이 최솟값보다 작음)

25

3 <= 0.5 * 25 => 200
13(값이 반올림됨)

400

3 <= 0.5 * 400 => 200
200

800

3 <= 0.5 * 800 => 200
200(계산된 값이 최댓값보다 큼)

예를 들어, 임계값이 3인 경우 회로 차단기는 실패 횟수가 0으로 설정된 상태에서 시작됩니다. 작업이 RUNNING 상태에 도달하지 못하면 배포 회로 차단기가 실패 횟수를 하나씩 늘립니다. 실패 횟수가 3과 같아지면 배포가 FAILED로 표시됩니다.

롤백 옵션을 사용하는 방법에 대한 추가 예제는 Amazon ECS 배포 회로 차단기 발표를 참조하세요.