EC2 Fleet과 Spot Fleet에서 Capacity Rebalancing으로 위험한 Spot 인스턴스 교체

EC2 Fleet과 Spot Fleet에서 Capacity Rebalancing으로 위험한 Spot 인스턴스 교체 (Use Capacity Rebalancing in EC2 Fleet and Spot Fleet to replace at-risk Spot Instances)

Capacity Rebalancing을 사용하면 EC2 Fleet이나 Spot Fleet이 중단 위험이 있는 Spot 인스턴스를 사전에 교체해 원하는 Spot 용량을 유지할 수 있어요. Spot 인스턴스가 중단 위험이 높아지면 Amazon EC2가 리밸런싱 권장(rebalance recommendation)을 보내요. Capacity Rebalancing이 활성화되면, 리밸런싱 권장은 위험한 인스턴스가 중단되기 전에 새 Spot 인스턴스 시작을 트리거해요.

출처: 문서

본문

Capacity Rebalancing은 실행 중인 인스턴스가 Amazon EC2에 의해 중단되기 전에 새 Spot 인스턴스로 플릿을 사전에 보강해서 워크로드 가용성을 유지하는 데 도움을 줘요.

교체 Spot 인스턴스를 시작하도록 EC2 Fleet을 Capacity Rebalancing으로 구성하기

create-fleet 명령과 MaintenancерStrategies 구조의 관련 파라미터를 사용해요. JSON 구성 예시는 Example 7: Configure Capacity Rebalancing to launch replacement Spot Instances를 참고하세요.

교체 Spot 인스턴스를 시작하도록 Spot Fleet을 Capacity Rebalancing으로 구성하기

Amazon EC2 콘솔이나 AWS CLI로 Capacity Rebalancing을 구성할 수 있어요.

  • (콘솔) Spot Fleet을 만들 때 Capacity rebalance 확인란을 선택해요. 자세한 내용은 정의된 파라미터로 Spot Fleet 요청 만들기의 step 6.d를 참고하세요.
  • (AWS CLI) request-spot-fleet 명령과 SpotMaintenancерStrategies 구조의 관련 파라미터를 사용해요. JSON 구성 예시는 Example 8: Configure Capacity Rebalancing to launch replacement Spot Instances를 참고하세요.

제한 사항 (Limitations)

  • Capacity Rebalancing은 maintain 유형의 플릿에서만 사용할 수 있어요.
  • 플릿이 실행 중일 때는 Capacity Rebalancing 설정을 수정할 수 없어요. Capacity Rebalancing 설정을 변경하려면 플릿을 삭제하고 새 플릿을 만들어야 해요.

구성 옵션 (Configuration options)

EC2 Fleet과 Spot Fleet의 ReplacementStrategy는 다음 두 가지 값을 지원해요.

launch-before-terminate

Amazon EC2는 교체 Spot 인스턴스가 시작된 후 리밸런싱 알림을 받은 Spot 인스턴스를 종료해요. launch-before-terminate를 지정하면 termination-delay 값도 지정해야 해요. 교체 인스턴스가 시작된 후 Amazon EC2는 termination-delay 기간 동안 기다린 다음 이전 인스턴스를 종료해요. termination-delay의 최소값은 120초(2분), 최대값은 7200초(2시간)예요. 인스턴스 종료 절차(shutdown procedures)가 완료되는 데 걸리는 시간을 예측할 수 있을 때만 launch-before-terminate를 사용할 것을 권장해요. 이렇게 하면 이전 인스턴스가 종료 절차가 완료된 후에만 종료되도록 보장할 수 있어요. 참고로 Amazon EC2는 termination-delay 전에 2분 경고와 함께 이전 인스턴스를 중단할 수 있어요. 교체 Spot 인스턴스도 중단 위험이 높아질 수 있으므로, launch-before-terminate와 함께 lowest-price(EC2 Fleet) 또는 lowestPrice(Spot Fleet) 할당 전략을 사용하는 것을 강력히 권장하지 않아요.

launch

Amazon EC2는 기존 Spot 인스턴스에 대해 리밸런싱 알림이 발생하면 교체 Spot 인스턴스를 시작해요. Amazon EC2는 리밸런싱 알림을 받은 인스턴스를 종료하지 않아요. 이전 인스턴스를 종료할 수도 있고 실행 상태로 둘 수도 있어요. 실행 중인 동안에는 모든 인스턴스에 대해 요금이 부과돼요.

고려 사항 (Considerations)

EC2 Fleet이나 Spot Fleet을 Capacity Rebalancing으로 구성하면 다음을 고려해요.

요청에 가능한 한 많은 Spot 용량 풀을 제공해요

플릿이 여러 인스턴스 유형과 가용 영역을 사용하도록 구성해요. 이렇게 하면 다양한 Spot 용량 풀에서 Spot 인스턴스를 시작할 수 있는 유연성을 제공해요. 자세한 내용은 인스턴스 유형과 가용 영역에 대해 유연하게 하기를 참고하세요.

교체 Spot 인스턴스의 중단 위험을 높이지 않기

중단 위험을 높이지 않으려면 capacity-optimized 또는 capacity-optimized-prioritized 할당 전략을 권장해요. 이 전략은 교체 Spot 인스턴스가 가장 최적의 Spot 용량 풀에서 시작되도록 보장해서 가까운 미래에 중단될 가능성이 더 낮아요. 자세한 내용은 price and capacity optimized 할당 전략 사용을 참고하세요. lowest-price 할당 전략을 사용하면 교체 Spot 인스턴스가 중단 위험이 높아질 수 있어요. Amazon EC2는 그 순간 사용 가능한 용량이 있는 최저 가격 풀에서 항상 인스턴스를 시작하기 때문이에요. 교체 Spot 인스턴스가 시작 직후 중단될 가능성이 높아도 그렇게요.

Amazon EC2는 가용성이 같거나 더 나은 경우에만 새 인스턴스를 시작해요

Capacity Rebalancing의 목표 중 하나는 Spot 인스턴스의 가용성을 개선하는 것이에요. 기존 Spot 인스턴스가 리밸런싱 권장을 받으면, Amazon EC2는 새 인스턴스가 기존 인스턴스와 같거나 더 나은 가용성을 제공할 때만 새 인스턴스를 시작해요. 새 인스턴스의 중단 위험이 기존 인스턴스보다 나쁘면 Amazon EC2는 새 인스턴스를 시작하지 않아요. 하지만 Amazon EC2는 Spot 용량 풀을 계속 평가하고 가용성이 개선되면 새 인스턴스를 시작해요. Amazon EC2가 새 인스턴스를 사전에 시작하지 않고 기존 인스턴스가 중단될 가능성이 있어요. 이 경우 Amazon EC2는 새 인스턴스의 중단 위험이 높은지 여부와 관계없이 새 인스턴스를 시작하려고 시도해요.

Capacity Rebalancing은 Spot 인스턴스 중단률을 높이지 않아요

Capacity Rebalancing을 활성화해도 Spot 인스턴스 중단률(Amazon EC2가 용량을 회수할 때 수거되는 Spot 인스턴스 수)은 증가하지 않아요. 하지만 Capacity Rebalancing이 인스턴스가 중단 위험에 있다고 감지하면 Amazon EC2가 즉시 새 인스턴스를 시작하려고 시도해요. 그 결과 위험한 인스턴스가 중단된 후 Amazon EC2가 새 인스턴스를 시작하기를 기다린 것보다 더 많은 인스턴스가 교체될 수 있어요. Capacity Rebalancing을 활성화하면 더 많은 인스턴스를 교체할 수 있지만, 인스턴스가 중단되기 전에 조치를 취할 시간이 더 많아지므로 수동적인 대응보다 능동적인 대응의 이점이 있어요. Spot 인스턴스 중단 알림이 있으면 일반적으로 인스턴스를 우아하게 종료할 시간이 최대 2분뿐이에요. Capacity Rebalancing이 새 인스턴스를 미리 시작하면 기존 프로세스가 위험한 인스턴스에서 완료될 가능성이 더 높아지고, 인스턴스 종료 절차를 시작할 수 있으며, 위험한 인스턴스에 새 작업이 예약되는 것을 막을 수 있어요. 새로 시작된 인스턴스가 애플리케이션을 인계받도록 준비할 수도 있어요. Capacity Rebalancing의 능동적 교체 덕분에 우아한 연속성을 누릴 수 있어요. 이론적 예시로 Capacity Rebalancing의 위험과 이점을 보여주면 다음과 같아요.

  • 2:00 PM – 인스턴스 A에 리밸런싱 권장이 도착하고, Amazon EC2가 즉시 교체 인스턴스 B를 시작하려고 시도해서 종료 절차를 시작할 시간을 줘요.
  • 2:30 PM – 인스턴스 B에 리밸런싱 권장이 도착하고 인스턴스 C로 교체되어 종료 절차를 시작할 시간을 줘요.
  • 2:32 PM – Capacity Rebalancing이 활성화되지 않았다면, 인스턴스 A에 대해 Spot 인스턴스 중단 알림을 2:32 PM에 받았을 것이고 조치할 시간이 최대 2분뿐이지만, 인스턴스 A는 그때까지 계속 실행됐을 거예요.

Amazon EC2는 충족된 용량이 목표 용량의 2배가 될 때까지 교체 Spot 인스턴스를 시작할 수 있어요

플릿이 Capacity Rebalancing으로 구성되면, 플릿은 리밸런싱 권장을 받은 각 Spot 인스턴스에 대해 새 교체 Spot 인스턴스를 시작하려고 시도해요. Spot 인스턴스가 리밸런싱 권장을 받은 후에는 더 이상 충족된 용량의 일부로 계산되지 않아요. 교체 전략에 따라 Amazon EC2는 사전 구성된 종료 지연 후 인스턴스를 종료하거나 실행 상태로 둬요. 이렇게 하면 인스턴스에서 리밸런싱 작업을 수행할 기회가 생겨요. 플릿이 목표 용량의 2배에 도달하면 교체 인스턴스 자체가 리밸런싱 권장을 받아도 새 교체 인스턴스 시작을 중지해요. 예를 들어 목표 용량이 100인 Spot 인스턴스 플릿을 만들었다고 해요. 모든 Spot 인스턴스가 리밸런싱 권장을 받아 Amazon EC2가 교체 Spot 인스턴스 100개를 시작해요. 이로 인해 충족된 Spot 인스턴스 수가 200으로 올라가, 목표 용량의 두 배가 돼요. 교체 인스턴스 중 일부가 리밸런싱 권장을 받지만, 플릿이 목표 용량의 두 배를 초과할 수 없으므로 더 이상 교체 인스턴스가 시작되지 않아요. 실행 중인 동안 모든 인스턴스에 대해 요금이 부과된다는 점에 유의하세요.

리밸런싱 권장을 받은 Spot 인스턴스를 종료하도록 플릿을 구성할 것을 권장해요

플릿을 Capacity Rebalancing으로 구성한다면, 인스턴스 종료 절차가 완료되는 시간을 예측할 수 있을 때만 적절한 종료 지연으로 launch-before-terminate를 선택할 것을 권장해요. 이렇게 하면 이전 인스턴스가 종료 절차가 완료된 후에만 종료되도록 보장할 수 있어요. 리밸런싱이 권장된 인스턴스를 직접 종료하기로 선택한다면, 플릿의 Spot 인스턴스가 받는 리밸런싱 권장 신호를 모니터링할 것을 권장해요. 신호를 모니터링하면 Amazon EC2가 인스턴스를 중단하기 전에 해당 인스턴스에 리밸런싱 작업을 빠르게 수행한 다음 수동으로 종료할 수 있어요. 인스턴스를 종료하지 않으면 실행 중인 동안 계속 요금을 지불하게 돼요. Amazon EC2는 리밸런싱 권장을 받은 인스턴스를 자동으로 종료하지 않아요. Amazon EventBridge나 인스턴스 메타데이터를 사용해 알림을 설정할 수 있어요. 자세한 내용은 리밸런싱 권장 신호 모니터링을 참고하세요.

플릿은 확장/축소 중 충족된 용량을 계산할 때 리밸런싱 권장을 받은 인스턴스를 집계하지 않아요

플릿이 Capacity Rebalancing으로 구성되고 대상 용량을 변경해 확장하거나 축소하면, 플릿은 리밸런싱으로 표시된 인스턴스를 충족된 용량의 일부로 계산하지 않아요. 다음과 같아요.

  • 축소(Scale in) – 원하는 대상 용량을 줄이면 Amazon EC2는 원하는 용량에 도달할 때까지 리밸런싱으로 표시되지 않은 인스턴스를 종료해요. 리밸런싱으로 표시된 인스턴스는 충족된 용량에 집계되지 않아요. 예를 들어 대상 용량이 100인 Spot 인스턴스 플릿을 만들었다고 해요. 10개 인스턴스가 리밸런싱 권장을 받아 Amazon EC2가 새 교체 인스턴스 10개를 시작해서 충족 용량이 110이 돼요. 그런 다음 대상 용량을 50으로 줄이면(축소), 리밸런싱으로 표시된 10개 인스턴스는 Amazon EC2가 종료하지 않으므로 실제 충족 용량은 60이에요. 이 인스턴스를 수동으로 종료해야 하거나 실행 상태로 둘 수 있어요.
  • 확장(Scale out) – 원하는 대상 용량을 늘리면 Amazon EC2는 원하는 용량에 도달할 때까지 새 인스턴스를 시작해요. 리밸런싱으로 표시된 인스턴스는 충족된 용량에 집계되지 않아요. 예를 들어 대상 용량이 100인 Spot 인스턴스 플릿을 만들었다고 해요. 10개 인스턴스가 리밸런싱 권장을 받아 플릿이 새 교체 인스턴스 10개를 시작해서 충족 용량이 110이 돼요. 그런 다음 대상 용량을 200으로 늘리면(확장), 리밸런싱으로 표시된 10개 인스턴스는 플릿이 대상 용량의 일부로 계산하지 않으므로 실제 충족 용량은 210이에요. 이 인스턴스를 수동으로 종료해야 하거나 실행 상태로 둘 수 있어요.

더 알아보기 (Learn more)