Fargate용 Amazon ECS 클러스터
AWS Fargate 용량 공급자의 Amazon ECS를 사용하면 Amazon ECS 작업에서 Fargate 및 Fargate Spot 용량을 모두 사용할 수 있습니다.
Fargate Spot을 사용하면 Fargate 가격 대비 할인된 요금으로 중단 방지 Amazon ECS 작업을 실행할 수 있습니다. Fargate 스팟은 여분의 컴퓨팅 용량에 대한 태스크를 실행합니다. AWS에 용량이 다시 필요한 경우 2분간 경고한 후에 작업이 중단됩니다.
Fargate 및 Fargate Spot 용량 공급자를 사용하는 작업이 중지되면 작업 상태 변경 이벤트가 Amazon EventBridge로 전송됩니다. 중지된 이유는 원인을 설명합니다. 자세한 내용은 Amazon ECS 작업 상태 변경 이벤트 섹션을 참조하세요.
클러스터에는 Fargate 및 Amazon EC2 Auto Scaling 그룹 용량 공급자가 혼합되어 포함될 수 있습니다. 그러나 용량 공급자 전략에 Fargate 또는 Amazon EC2 Auto Scaling 그룹 용량 공급자만 포함될 수 있으며 둘 다 포함될 수는 없습니다. 자세한 내용은 Amazon EC2 Auto Scaling 그룹 용량 공급자를 참조하세요.
용량 공급자를 사용할 때는 다음 사항을 고려해야 합니다.
-
용량 공급자를 클러스터와 연결하려면 먼저 클러스터를 용량 공급자 전략과 연결해야 합니다.
-
용량 공급자 전략에 최대 20개의 용량 공급자를 지정할 수 있습니다.
-
Fargate 용량 공급자를 사용하기 위해 Amazon EC2 Auto Scaling 그룹 용량 공급자를 사용하여 서비스를 업데이트할 수 없습니다. 반대의 경우도 마찬가지입니다.
-
용량 공급자 전략에서 콘솔의 용량 공급자에 대해
weight값이 지정되지 않으면 기본값1을 사용합니다. API 또는 AWS CLI를 사용할 경우에 기본값은0입니다. -
용량 공급자 전략 내에서 여러 용량 공급자가 지정된 경우 하나 이상의 용량 공급자가 0보다 큰 가중치 값을 가져야 합니다. 가중치가 0인 용량 공급자는 태스크를 배치하는 데 사용되지 않습니다. 전략에 가중치가 모두 0으로 동일한 여러 개의 용량 공급자를 지정하는 경우 용량 공급자 전략을 사용하는
RunTask또는CreateService작업이 실패합니다. -
용량 공급자 전략에서는 하나의 용량 공급자만 정의된 base 값을 가질 수 있습니다. base 값을 지정하지 않으면 기본값 0이 사용됩니다.
-
클러스터에는 Amazon EC2 Auto Scaling 용량 공급자와 Fargate 용량 공급자가 혼합되어 포함될 수 있습니다. 그러나 용량 공급자 전략에 Amazon EC2 Auto Scaling 그룹 또는 Fargate 용량 공급자만 포함될 수 있으며 둘 다 포함될 수는 없습니다.
-
클러스터에는 두 용량 공급자를 모두 사용하는 서비스와 독립 실행형 태스크가 혼합되어 포함될 수 있습니다. 시작 유형이 아닌 용량 공급자 전략을 사용하도록 서비스를 업데이트할 수 있습니다. 하지만 이 경우 새 배포를 강제로 실행해야 합니다.
Fargate Spot 종료 알림
수요가 매우 많은 기간에는 Fargate 스팟 용량을 사용할 수 없을 수 있습니다. 이로 인해 Fargate 스팟 작업이 지연될 수 있습니다. 이러한 경우 필요한 용량을 사용할 수 있을 때까지 Amazon ECS 서비스에서 태스크 시작을 다시 시도합니다. Fargate는 스팟 용량을 온디맨드 용량으로 대체하지 않습니다.
스팟 중단으로 인해 Fargate Spot 용량을 사용하는 태스크가 중지되면 태스크가 중단되기 전에 2분 간 경고가 전송됩니다. 경고는 작업 상태 변경 이벤트로 Amazon EventBridge에 전송되고 실행 중인 작업에 SIGTERM 신호로 전송됩니다. Fargate Spot을 서비스의 일부로 사용할 경우 이 시나리오에서 서비스 스케줄러는 중단 신호를 수신하고 사용 가능한 용량이 있는 경우 Fargate Spot에 대한 추가 작업의 시작을 시도합니다. 작업이 하나뿐인 서비스는 용량을 사용할 수 있을 때까지 중단됩니다. 정상 종료에 대한 자세한 내용은 Graceful shutdowns with ECS
작업이 중지되기 전에 컨테이너가 정상적으로 종료되도록 하려면 다음을 구성할 수 있습니다.
-
태스크가 사용 중인 컨테이너 정의에서
stopTimeout초 이하의120값을 지정할 수 있습니다. 기본stopTimeout값은 30초입니다.stopTimeout값을 더 길게 지정하면 작업 상태 변경 이벤트가 수신되는 순간부터 컨테이너가 강제로 중지되는 시점 사이의 시간이 더 많이 확보됩니다. 자세한 내용은 컨테이너 제한 시간 섹션을 참조하세요. -
SIGTERM 신호를 컨테이너 내에서 수신해야 정리 태스크를 수행할 수 있습니다. 이 신호를 처리하는 데 실패하면 작업은 구성된
stopTimeout이후에 SIGKILL 신호를 받는 데 실패하여 데이터가 손실되거나 오류가 발생할 수 있습니다.
다음은 작업 상태 변경 이벤트의 코드 조각입니다. 이 코드 조각에는 Fargate Spot 중단에 대한 중지 사유와 중지 코드가 표시됩니다.
{ "version": "0", "id": "9bcdac79-b31f-4d3d-9410-fbd727c29fab", "detail-type": "ECS Task State Change", "source": "aws.ecs", "account": "111122223333", "resources": [ "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6f1cebef" ], "detail": { "clusterArn": "arn:aws:ecs:us-east-1:111122223333:cluster/default", "createdAt": "2016-12-06T16:41:05.702Z", "desiredStatus": "STOPPED", "lastStatus": "RUNNING", "stoppedReason": "Your Spot Task was interrupted.", "stopCode": "SpotInterruption", "taskArn": "arn:aws:ecs:us-east-1:111122223333:task/b99d40b3-5176-4f71-9a52-9dbd6fEXAMPLE", ... } }
다음은 Amazon ECS 작업 상태 변경 이벤트에 대한 EventBridge 규칙을 생성하는 데 사용되는 이벤트 패턴입니다. 필요한 경우 detail 필드에 클러스터를 지정할 수 있습니다. 이렇게 하면 해당 클러스터에 대한 작업 상태 변경 이벤트를 수신하게 됩니다. EventBridge 규칙 생성에 대한 자세한 내용은 Amazon EventBridge 사용 설명서의 Amazon EventBridge 시작하기를 참조하세요.
{ "source": [ "aws.ecs" ], "detail-type": [ "ECS Task State Change" ], "detail": { "clusterArn": [ "arn:aws:ecs:us-west-2:111122223333:cluster/default" ] } }