R&D/클라우드

AWS Spot Instance 중단 대응

sunshout 2024. 4. 25. 11:18

Amazon EC2 Spot Instance는 언제든 종료될 수 있다는 가정을 가지고 사용해야 합니다.

Spot Instance Lice Cycle

Spot Instance는 다음과 같은 Life Cycle을 가지고 있습니다.

* Spot Instance가 Terminate 되기 2분 전에 Interruption notice가 발생합니다.
* 그리고 15분부터 "Rebalance recommendation" 이벤트가 발생합니다.
   . Rebalance recommendation 는 항상 spot instance terminate 2분 공지보다 먼저 발생하는 것은 아니라고 합니다. Interruption notice와 함께 도착할 수도 있고, 이후에 도착할 수도 있다고 합니다.
   . Rebalance recommendation은 2020년 11월 5일 이후 시작된 spot instance에만 지원된다고 합니다.

 

주) 인터넷을 보면 Spot Instance가 죽기 전에 "BidEvictedEvent"가 CloudTrail을 통해서 확인할 수 있다고 했는데, 저의 CloudTrail 정보에는 해당 이벤트가 발생하지 않았습니다.

AWS Guide를 보면, Rebalnce recommendation과 Interruption notice를 EventBridge를 통해서 확인하라고 나와 있습니다.

Detect Spot Instance Change

SNS Topic

 

Enable EventBridge

EventBridge에서 "Create Rule"을 선택합니다.

 

Name 을 설정하고,

* Event Bus: default (계정의 AWS 서비스가 이벤트를 생성하면 항상 계정의 기본 이벤트 버스로 이동합니다)
* Rule type: Rule with an event pattern(이벤트 패턴이 있는 규칙)을 선택합니다.

 

Event Source에는 "AWS events or EventBridge partner events(AWS이벤트 또는 EventBridge 파트너 이벤트)"를 선택하고

아래 Event pattern(이벤트 패턴)에는 EC2 Instance Rebalance Recommendation 이벤트와 일치하도록 설정합니다.

{
 "source": ["aws.ec2"],
 "detail-type": ["EC2 Instance Rebalance Recommendation"]
}

이벤트를 전달할 대상을 선택합니다.

참고

Spot Instance의 할인율과 중단 빈도 현황
https://aws.amazon.com/ko/ec2/spot/instance-advisor/

 

Amazon EC2 스팟 인스턴스 어드바이저

스팟 인스턴스 어드바이저 스팟 인스턴스 어드바이저를 사용하면 중단될 가능성이 가장 낮은 풀을 파악하여 온디맨드 요금보다 저렴한 요금을 사용할 수 있습니다. 스팟 인스턴스를 선택할 때

aws.amazon.com

https://younsl.github.io/blog/spot-interruption-notification/

 

Spot Interruption Notification

개요Spot 인스턴스 중단 알림이 발생할 때마다 Slack 채널로 메세지를 발송하도록 자동화합니다.EventBridge와 Lambda Function을 사용해 별도 인프라 관리가 필요 없는 서버리스 형태로 구현했습니다.아

younsl.github.io