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 규칙을 만들려면
- Amazon EventBridge 콘솔(https://console.aws.amazon.com/events/)을 엽니다.
- Create rule을 선택합니다.
- Define rule detail에서 다음을 수행합니다.
- 규칙의 Name을 입력하고, 선택적으로 설명을 입력합니다. 규칙은 같은 리전과 같은 이벤트 버스에서 다른 규칙과 이름이 같을 수 없어요.
- Event bus에서
default를 선택합니다. 계정의 AWS 서비스가 이벤트를 생성하면 항상 계정의 기본 이벤트 버스로 이동해요. - Rule type에서
Rule with an event pattern을 선택합니다. - Next를 선택합니다.
- Build event pattern에서 다음을 수행합니다.
- Event source에서
AWS events or EventBridge partner events를 선택합니다. - Event pattern에서, 이 예시에서는
EC2 Instance Rebalance Recommendation이벤트와 일치하도록 다음 이벤트 패턴을 지정한 다음 Save를 선택합니다.
- Event source에서
{
"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 상자에 이 예시의 이벤트 패턴을 추가합니다.
- Next를 선택합니다.
- **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단계) 항목을 참고하세요.
- Target types에서
- Next를 선택합니다.
- (선택) Tags에서 규칙에 하나 이상의 태그를 지정한 다음 Next를 선택합니다.
- 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