EC2 인스턴스 리밸런싱 권장 사항

EC2 인스턴스 리밸런싱 권장 사항 (Rebalance recommendations)

EC2 인스턴스 **리밸런싱 권장 사항(rebalance recommendation)**은 Spot 인스턴스가 중단 위험이 높아졌을 때 알려주는 신호예요. 이 신호는 2분 전 Spot 인스턴스 중단 알림보다 먼저 도착할 수 있어서, Spot 인스턴스를 사전에 관리할 기회를 줘요. 중단 위험이 높지 않은 새 Spot 인스턴스나 기존 Spot 인스턴스로 워크로드를 리밸런싱하기로 결정할 수 있어요.

출처: 문서

본문

Amazon EC2가 2분 전 Spot 인스턴스 중단 알림 이전에 리밸런싱 권장 신호를 항상 보낼 수 있는 건 아니에요. 그래서 리밸런싱 권장 신호가 2분 중단 알림과 함께 도착할 수도 있어요.

리밸런싱 권장 사항은 EventBridge 이벤트와 Spot 인스턴스의 인스턴스 메타데이터 항목으로 제공돼요. 이벤트는 최선 노력(best effort) 기준으로 발행돼요.

참고 — 리밸런싱 권장 사항은 2020년 11월 5일 00:00 UTC 이후 실행된 Spot 인스턴스에서만 지원돼요.

목차

  • 취할 수 있는 리밸런싱 조치
  • 리밸런싱 권장 신호 모니터링
  • 리밸런싱 권장 신호를 사용하는 서비스

취할 수 있는 리밸런싱 조치

취할 수 있는 리밸런싱 조치의 예시는 다음과 같아요.

정상 종료 (Graceful shutdown)

Spot 인스턴스에 대한 리밸런싱 권장 신호를 받으면 인스턴스 종료 절차를 시작할 수 있어요. 여기에는 프로세스를 멈추기 전에 완료되도록 하는 작업이 포함될 수 있어요. 예를 들어 시스템·애플리케이션 로그를 Amazon Simple Storage Service(Amazon S3)에 업로드하고, Amazon SQS 워커를 종료하고, Domain Name System(DNS)에서 등록 해제를 완료할 수 있어요. 외부 스토리지에 작업을 저장하고 나중에 재개할 수도 있어요.

새 작업 예약 방지 (Prevent new work from being scheduled)

Spot 인스턴스에 대한 리밸런싱 권장 신호를 받으면 인스턴스에서 새 작업이 예약되지 않도록 하면서, 예약된 작업이 완료될 때까지 인스턴스를 계속 사용할 수 있어요.

대체 인스턴스를 사전에 실행하기 (Proactively launch new replacement instances)

리밸런싱 권장 신호가 발행될 때 Auto Scaling 그룹, EC2 Fleet, Spot Fleet이 대체 Spot 인스턴스를 자동으로 실행하도록 구성할 수 있어요. 자세한 내용은 Amazon EC2 Auto Scaling 사용 설명서의 Use Capacity Rebalancing to handle Amazon EC2 Spot interruptions 항목과 이 사용 설명서의 Use Capacity Rebalancing in EC2 Fleet and Spot Fleet to replace at-risk Spot Instances 항목을 참고하세요.

리밸런싱 권장 신호 모니터링

리밸런싱 권장 신호가 발행될 때 앞 절에서 지정한 조치를 취할 수 있도록 이 신호를 모니터링할 수 있어요. 리밸런싱 권장 신호는 Amazon EventBridge(이전 명칭 Amazon CloudWatch Events)로 보내지는 이벤트와 Spot 인스턴스의 인스턴스 메타데이터로 제공돼요.

리밸런싱 권장 신호 모니터링:

  • Amazon EventBridge 사용하기
  • 인스턴스 메타데이터 사용하기

Amazon EventBridge 사용하기

Spot 인스턴스에 대해 리밸런싱 권장 신호가 발행되면 그 신호의 이벤트가 Amazon EventBridge로 전송돼요. EventBridge가 규칙에 정의된 패턴과 일치하는 이벤트 패턴을 감지하면, 규칙에 지정된 대상(들)을 호출해요.

다음은 리밸런싱 권장 신호에 대한 예시 이벤트예요.

{
    "version": "0",
    "id": "12345678-1234-1234-1234-123456789012",
    "detail-type": "EC2 Instance Rebalance Recommendation",
    "source": "aws.ec2",
    "account": "123456789012",
    "time": "yyyy-mm-ddThh:mm:ssZ",
    "region": "us-east-2",
    "resources": ["arn:aws:ec2:us-east-2:123456789012:instance/i-1234567890abcdef0"],
    "detail": {
        "instance-id": "i-1234567890abcdef0"
    }
}

다음 필드가 규칙에 정의된 이벤트 패턴을 구성해요.

"detail-type": "EC2 Instance Rebalance Recommendation" — 이 이벤트가 리밸런싱 권장 이벤트임을 식별해요.

"source": "aws.ec2" — 이 이벤트가 Amazon EC2에서 온 것임을 식별해요.

EventBridge 규칙 만들기

이벤트 패턴이 규칙과 일치할 때 취할 조치를 자동화하는 EventBridge 규칙을 작성할 수 있어요.

다음 예시는 Amazon EC2가 리밸런싱 권장 신호를 내보낼 때마다 이메일, 문자 메시지, 모바일 푸시 알림을 보내는 EventBridge 규칙을 만들어요. 이 신호는 EC2 Instance Rebalance Recommendation 이벤트로 발행되며, 이 이벤트가 규칙에 정의된 조치를 트리거해요.

EventBridge 규칙을 만들기 전에 이메일, 문자 메시지, 모바일 푸시 알림용 Amazon SNS 토픽을 먼저 만들어야 해요.

리밸런싱 권장 이벤트용 EventBridge 규칙을 만들려면

  1. Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.
  2. Create rule을 선택합니다.
  3. Define rule detail에서 다음을 수행합니다.
    • 규칙의 Name을 입력하고, 선택적으로 설명을 입력합니다. 규칙은 같은 리전과 같은 이벤트 버스에서 다른 규칙과 이름이 같을 수 없어요.
    • Event bus에서 default를 선택합니다. 계정의 AWS 서비스가 이벤트를 생성하면 항상 계정의 기본 이벤트 버스로 이동해요.
    • Rule type에서 Rule with an event pattern을 선택합니다.
    • Next를 선택합니다.
  4. Build event pattern에서 다음을 수행합니다.
    • Event source에서 AWS events or EventBridge partner events를 선택합니다.
    • Event pattern에서, 이 예시에서는 EC2 Instance Rebalance Recommendation 이벤트와 일치하도록 다음 이벤트 패턴을 지정한 다음 Save를 선택합니다.
{
 "source": ["aws.ec2"],
 "detail-type": ["EC2 Instance Rebalance Recommendation"]
}

이벤트 패턴을 추가하려면 Event pattern form을 선택해 템플릿을 사용하거나, **Custom pattern (JSON editor)**을 선택해 자신만의 패턴을 지정할 수 있어요.

  • 템플릿으로 이벤트 패턴을 만들려면 다음을 수행합니다.
    • Event pattern form을 선택합니다.
    • Event source에서 AWS services를 선택합니다.
    • AWS Service에서 EC2 Spot Fleet을 선택합니다.
    • Event type에서 EC2 Instance Rebalance Recommendation을 선택합니다.
    • 템플릿을 사용자 지정하려면 Edit pattern을 선택하고 예시 이벤트 패턴과 일치하도록 수정합니다.
  • (대안) 사용자 지정 이벤트 패턴을 지정하려면 다음을 수행합니다.
    • **Custom pattern (JSON editor)**을 선택합니다.
    • Event pattern 상자에 이 예시의 이벤트 패턴을 추가합니다.
  1. Next를 선택합니다.
  2. **Select target(s)**에서 다음을 수행합니다.
    • Target types에서 AWS service를 선택합니다.
    • Select a target에서, 이벤트 발생 시 이메일, 문자 메시지, 모바일 푸시 알림을 보내려면 SNS topic을 선택합니다.
    • Topic에서 기존 토픽을 선택합니다. 먼저 Amazon SNS 콘솔을 사용해 Amazon SNS 토픽을 만들어야 해요. 자세한 내용은 Amazon Simple Notification Service 개발자 안내서의 Using Amazon SNS for application-to-person (A2P) messaging 항목을 참고하세요.
    • (선택) Additional settings에서 추가 설정을 구성할 수 있어요. 자세한 내용은 Amazon EventBridge 사용 설명서의 Creating Amazon EventBridge rules that react to events(16단계) 항목을 참고하세요.
  3. Next를 선택합니다.
  4. (선택) Tags에서 규칙에 하나 이상의 태그를 지정한 다음 Next를 선택합니다.
  5. Review and create에서 다음을 수행합니다.
    • 규칙의 세부 정보를 검토하고 필요하면 수정합니다.
    • Create rule을 선택합니다.

자세한 내용은 Amazon EventBridge 사용 설명서의 Amazon EventBridge rules와 Amazon EventBridge event patterns 항목을 참고하세요.

인스턴스 메타데이터 사용하기

인스턴스 메타데이터 범주 events/recommendations/rebalance는 Spot 인스턴스에 대해 리밸런싱 권장 신호가 발행된 대략적인 시간(UTC)을 제공해요.

리밸런싱 권장 신호를 놓치지 않도록 5초마다 확인할 것을 권장해요.

Spot 인스턴스가 리밸런싱 권장 신호를 받으면 그 신호가 발행된 시간이 인스턴스 메타데이터에 있어요. 다음과 같이 신호가 발행된 시간을 검색할 수 있어요.

IMDSv2

Linux

Linux 인스턴스에서 다음 명령을 실행하세요.

TOKEN=`curl -X PUT "http://169.254.169.254/latest/api/token" -H "X-aws-ec2-metadata-token-ttl-seconds: 21600"` \
    && curl -H "X-aws-ec2-metadata-token: $TOKEN" http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

Windows

Windows 인스턴스에서 다음 cmdlet을 실행하세요.

[string]$token = Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token-ttl-seconds" = "21600"} `
    -Method PUT -Uri http://169.254.169.254/latest/api/token
Invoke-RestMethod `
    -Headers @{"X-aws-ec2-metadata-token" = $token} `
    -Method GET -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

IMDSv1

Linux

Linux 인스턴스에서 다음 명령을 실행하세요.

curl http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

Windows

Windows 인스턴스에서 다음 cmdlet을 실행하세요.

Invoke-RestMethod -Uri http://169.254.169.254/latest/meta-data/events/recommendations/rebalance

다음은 Spot 인스턴스에 대해 리밸런싱 권장 신호가 발행된 시간(UTC)을 나타내는 예시 출력이에요.

{"noticeTime": "2020-10-27T08:22:00Z"}

인스턴스에 대해 신호가 발행되지 않았다면 events/recommendations/rebalance가 존재하지 않고, 검색하려고 하면 HTTP 404 오류를 받아요.

리밸런싱 권장 신호를 사용하는 서비스

Amazon EC2 Auto Scaling, EC2 Fleet, Spot Fleet은 리밸런싱 권장 신호를 사용해, 실행 중인 인스턴스가 2분 전 Spot 인스턴스 중단 알림을 받기 전에 플릿을 새 Spot 인스턴스로 사전에 보강함으로써 워크로드 가용성을 유지하기 쉽게 해 줘요. 이 서비스들이 Spot 인스턴스 가용성에 영향을 주는 변화를 모니터링하고 사전에 대응하도록 할 수 있어요. 자세한 내용은 다음을 참고하세요.

  • Amazon EC2 Auto Scaling 사용 설명서의 Use Capacity Rebalancing to handle Amazon EC2 Spot interruptions 항목
  • 이 사용 설명서의 EC2 Fleet 및 Spot Fleet 주제에 있는 Use Capacity Rebalancing in EC2 Fleet and Spot Fleet to replace at-risk Spot Instances 항목

더 알아보기

  • 청구 (Billing)
  • Spot placement score