용량 소유자(capacity owner)를 위한 인터럽트 가능 Capacity Reservations
용량 소유자(capacity owner)를 위한 인터럽트 가능 Capacity Reservations
**용량 소유자(capacity owner)**는 소스 Capacity Reservation을 소유하고, 다른 팀과 미사용 용량을 공유하기 위해 **인터럽트 가능 Capacity Reservation(interruptible Capacity Reservation)**을 만드는 계정이에요. 필요할 때 회수(reclaim)할 통제권을 유지하면서 말이죠.
출처: 문서
본문
이 섹션에서는 용량 소유자로서 인터럽트 가능 Capacity Reservation을 만들고, 수정하고, 회수하고, 추적하는 방법을 다룹니다.
관련 주제 (Topics)
- 인터럽트 가능 Capacity Reservation 만들기 (Creating an interruptible Capacity Reservation)
- 인터럽트 가능 Capacity Reservation 보기 (View your interruptible Capacity Reservation)
- 인터럽트 가능 Capacity Reservation 수정 (Modifying your interruptible Capacity Reservation)
- 0 용량으로 인터럽트 가능 Capacity Reservation 유지 (Retaining interruptible Capacity Reservation at zero capacity)
- 회수 프로세스와 추적 (Reclamation process and tracking)
- 인터럽트 가능 예약 공유 (Sharing interruptible reservations)
인터럽트 가능 Capacity Reservation 만들기
소스 예약의 미사용 용량을 다른 워크로드에 사용할 수 있게 하되, 필요할 때 회수할 통제권을 유지하려면 인터럽트 가능 Capacity Reservation을 만들어요.
사전 조건 (Prerequisites)
인터럽트 가능 할당을 만들기 전에 소스 On-Demand Capacity Reservation이 다음 요구사항을 충족하는지 확인하세요.
- Capacity Reservation이 active 상태이고 종료 날짜가 설정되어 있지 않아야 합니다. pending, expired, cancelled 상태이거나 종료 날짜가 예정된 예약에서는 할당을 만들 수 없어요.
- Capacity Reservation에 할당 가능한 사용 가능한 용량이 있어야 해요. 사용 가능한 인스턴스(미사용 용량이라고도 함)만 할당할 수 있습니다.
- 소스 Capacity Reservation당 인터럽트 가능 할당을 하나만 만들 수 있어요. 이미 할당이 있다면 새로 만들기 전에 수정하거나 취소해야 합니다.
- 인터럽트 가능 Capacity Reservation에 한 번에 최대 1000개 인스턴스를 할당할 수 있어요.
콘솔이나 AWS CLI로 인터럽트 가능 Capacity Reservation을 만들 수 있어요.
콘솔 (Console)
인터럽트 가능 Capacity Reservation을 만들려면
- Amazon EC2 콘솔을 엽니다. https://console.aws.amazon.com/ec2/
- Capacity Reservations를 선택합니다.
- 자신의 Capacity Reservation을 선택합니다.
- Actions, Create interruptible reservation을 선택합니다.
- Quantity에 할당할 인스턴스 수를 입력합니다.
- Allocation preference when all capacity is reclaimed에서 Default 또는 Retain을 선택합니다.
- (선택) 태그를 추가합니다.
- Create interruptible reservation을 선택합니다.
AWS CLI
인터럽트 가능 Capacity Reservation을 만들려면
create-interruptible-capacity-reservation-allocation 명령을 사용합니다.
aws ec2 create-interruptible-capacity-reservation-allocation \
--capacity-reservation-id cr-1234567890abcdef0 \
--instance-count 10
인터럽트 가능 Capacity Reservation 보기
인터럽트 가능 Capacity Reservation을 만든 뒤에는 계정에서 또는 특정 리소스에서 인터럽트 가능 예약을 볼 수 있어요.
계정의 모든 인터럽트 가능 Capacity Reservations 보기
다음 절차를 사용해 계정의 인터럽트 가능 Capacity Reservations를 봅니다.
콘솔 (Console)
- 콘솔의 Capacity Reservations 페이지로 갑니다.
- Interruptible 열에서 Yes로 표시된 예약을 찾습니다.
- 세부 정보를 볼 인터럽트 가능 예약을 선택합니다.
AWS CLI
aws ec2 describe-capacity-reservations \
--capacity-reservation-id cr-interruptible-id \
--filters Name=interruptible,Values=true
특정 소스에서 만든 인터럽트 가능 Capacity Reservation 보기
특정 소스 Capacity Reservation에서 만든 인터럽트 가능 Capacity Reservation을 보려면 다음 절차를 사용합니다.
aws ec2 describe-capacity-reservations \
--capacity-reservation-id cr-source-id
응답에는 인터럽트 가능 Capacity Reservation ID와 할당 세부 정보가 포함된 interruptibleCapacityAllocation 객체가 들어 있어요. 응답 구조에 대한 정보는 Amazon EC2 API Reference의 InterruptibleCapacityAllocation을 참고하세요.
인터럽트 가능 Capacity Reservation 수정하기
다음 절차를 사용해 인터럽트 가능 Capacity Reservation을 편집하거나 취소합니다.
참고
- 할당을 줄일 때 먼저 사용 가능한 인스턴스를 회수한 다음, 요청한 수를 충족할 때까지 실행 중인 인스턴스를 회수해요. 사용 가능한 인스턴스만으로 수를 충족할 수 있으면 종료가 발생하지 않습니다. 할당된 인스턴스 수의 모든 수정은 인터럽트 가능 Capacity Reservation에 직접 하는 것이 아니라 소스 Capacity Reservation을 통해 수행됩니다.
- 인터럽트 가능 Capacity Reservation은 한 번에 최대 1000개 인스턴스(증가 또는 감소)씩만 수정할 수 있어요.
인터럽트 가능 Capacity Reservation 편집하기
다음 절차를 사용해 인터럽트 가능 Capacity Reservation을 편집합니다.
콘솔 (Console)
- 소스 Capacity Reservation 상세 페이지에서 Edit interruptible allocation 링크를 선택합니다.
- Quantity에 새 수를 입력합니다.
- 공유할 용량 추가
- 소스 Capacity Reservation으로 용량 회수
- Update를 선택합니다.
AWS CLI
aws ec2 update-interruptible-capacity-reservation-allocation \
--capacity-reservation-id cr-1234567890abcdef0 \
--target-instance-count 80
인터럽트 가능 Capacity Reservation 취소하기
할당을 영구적으로 제거하고 모든 용량을 반환하려면 다음 절차를 사용합니다.
콘솔 (Console)
- 소스 Capacity Reservation 상세 페이지에서 인터럽트 가능 용량 할당 세부 정보로 이동합니다.
- Edit interruptible allocation을 선택합니다.
- Quantity에 0을 입력합니다.
- Update를 선택합니다.
AWS CLI
aws ec2 update-interruptible-capacity-reservation-allocation \
--capacity-reservation-id cr-1234567890abcdef0 \
--target-instance-count 0
0 크기 기본 설정 유지 (Retain zero size preference)
0 크기 기본 설정(zero size preference)을 retain으로 구성했다면 인터럽트 가능 Capacity Reservation은 0개 인스턴스에서 active 상태로 유지돼요. 취소하려면 0 크기 기본 설정을 default로 업데이트한 다음 할당을 0으로 줄이세요. 자세한 내용은 Retaining interruptible Capacity Reservation at zero capacity 문서를 참고하세요.
0 용량으로 인터럽트 가능 Capacity Reservation 유지하기
기본적으로 Amazon EC2는 할당을 0개 인스턴스로 줄이면 인터럽트 가능 예약을 취소해요. 회수된 용량은 소스 Capacity Reservation으로 돌아갑니다.
나중에 다시 용량을 공유할 예정이라면 인터럽트 가능 예약을 0개 인스턴스에서 active로 유지하도록 구성할 수 있어요. 이 옵션을 쓰면 나중에 예약을 다시 만들지 않고 같은 예약에 인스턴스를 할당할 수 있습니다.
이 동작은 **0 크기 기본 설정(zero size preference)**으로 제어해요. 콘솔이나 AWS CLI에서 인터럽트 가능 Capacity Reservation 할당을 만들거나 편집할 때 설정할 수 있습니다.
콘솔 (Console)
Create interruptible reservation 또는 Edit interruptible allocation 페이지의 Allocation preference when all capacity is reclaimed에서 다음 중 하나를 선택합니다.
- Default – 할당을 0으로 줄이면 Amazon EC2가 인터럽트 가능 Capacity Reservation을 취소합니다.
- Retain – 할당을 0으로 줄여도 인터럽트 가능 Capacity Reservation이 0 용량에서 active로 유지됩니다. 나중에 다시 인스턴스를 할당할 수 있어요.
변경 사항을 저장한 뒤에는 이 설정이 인터럽트 가능 Capacity Reservation 세부 정보에 읽기 전용 필드인 Zero size preference로 표시됩니다.
AWS CLI
인터럽트 가능 Capacity Reservation을 0 용량에서 active로 유지하려면 create-interruptible-capacity-reservation-allocation 또는 update-interruptible-capacity-reservation-allocation을 호출할 때 --zero-size-preference retain을 지정합니다. 할당이 0에 도달하면 예약을 취소하려면 default를 지정합니다.
aws ec2 update-interruptible-capacity-reservation-allocation \
--capacity-reservation-id cr-1234567890abcdef0 \
--zero-size-preference retain
회수 프로세스와 추적 (Reclamation process and tracking)
용량을 회수하면:
- 실행 중인 인스턴스는 **EventBridge 이벤트를 통해 2분 간격의 중단 알림(interruption warning)**을 받아요.
- 공지 기간이 지나면 회수된 용량의 실행 중인 인스턴스가
shutting down상태로 들어갔다가 종료됩니다. - 종료되면 회수된 인스턴스는 소스 Capacity Reservation에서 즉시 사용 가능해져요.
- 완료되면 할당 상태가
updating에서active로 변경됩니다.
완전한 회수는 인스턴스 유형과 종료 시간에 따라 몇 분이 걸릴 수 있어요. 프로세스가 완료될 때 받는 EventBridge 알림에 대한 자세한 내용은 Reclamation completion 문서를 참고하세요.
회수 상태 추적하기
소스 예약을 describe하여 회수 진행 상황을 모니터링합니다.
aws ec2 describe-capacity-reservations \
--capacity-reservation-id cr-1234567890abcdef0
응답은 interruptibleCapacityAllocation 객체 안에 다음 필드를 보여줘요.
- instance-count – 현재 할당된 인스턴스 수
- target-instance-count – 회수 후 요청된 수량
- status – 회수 중에는
updating, 완료되면active
인터럽트 가능 예약 공유하기 (Sharing interruptible reservations)
AWS Resource Access Manager(RAM)를 사용해 AWS 조직 내에서만 인터럽트 가능 예약을 공유할 수 있어요.
고려사항:
- consumer 계정이 조직을 떠나면 인터럽트 가능 예약이 그 계정에서 자동으로 **공유 해제(unshared)**됩니다.
- 공유 해제된 예약에서 실행 중인 인스턴스는 결국 종료돼요.
- 다른 모든 공유 기능은 표준 Capacity Reservations와 동일하게 작동합니다.
전체 공유 절차는 Sharing Capacity Reservations 문서를 참고하세요.