Amazon Elastic Compute Cloud
Linux 인스턴스용 사용 설명서

스팟 인스턴스 중단

스팟 인스턴스에 대한 수요는 매 순간 상당히 다를 수 있으며 스팟 인스턴스의 가용성도 사용 가능한 미사용 EC2 인스턴스의 양에 따라 상당히 달라질 수 있습니다. 스팟 인스턴스가 중단될 가능성은 항상 있습니다. 따라서 스팟 인스턴스 중단에 대비하여 애플리케이션을 준비해야 합니다.

EC2 집합 또는 스팟 집합에 지정된 온디맨드 인스턴스는 중단할 수 없습니다.

서비스 중단의 이유

Amazon EC2에서 스팟 인스턴스를 중단시킬 수 있는 이유는 다음과 같습니다.

  • 가격 – 스팟 가격이 최고 가격보다 큽니다.

  • 용량 – 미사용 EC2 인스턴스가 스팟 인스턴스 수요를 충족할 만큼 충분하지 않으면 Amazon EC2에서 스팟 인스턴스를 중단합니다. 인스턴스가 중단되는 순서는 Amazon EC2에서 결정됩니다.

  • 제약 조건 – 요청에 시작 그룹 또는 가용 영역 그룹과 같은 제약 조건이 포함되는 경우 제약 조건을 더 이상 충족할 수 없으면 이러한 스팟 인스턴스가 그룹으로 종료됩니다.

중단 동작

스팟 인스턴스가 중단되면 Amazon EC2가 최대 절전 모드로 전환할 것인지, 중지시킬 것인지 또는 종료시킬 것인지 지정할 수 있습니다. 사용자의 요구에 적합한 중단 동작을 선택할 수 있습니다. 기본값은 중단된 스팟 인스턴스를 종료하는 것입니다. 중단 동작을 변경하려면 스팟 요청을 생성할 때 콘솔에서 인터럽트 방식을 선택하거나, 시작 구성 또는 시작 템플릿에서 InstanceInterruptionBehavior를 지정합니다. 스팟 요청을 생성할 때 콘솔에서 중단 동작을 변경하려면 목표 용량 유지를 선택합니다. 이 옵션을 선택하면 인터럽트 방식이 나타나며 스팟 인스턴스가 중단될 때 스팟 서비스가 스팟 인스턴스를 종료는지, 중지하는지 또는 최대 절전 모드로 전환하는지를 지정할 수 있습니다.

중단된 스팟 인스턴스 중지

다음 요구 사항이 충족되는 경우 Amazon EC2가 중단된 스팟 인스턴스를 중지하도록 이 동작을 변경할 수 있습니다.

요구 사항

  • 스팟 인스턴스 요청의 유형은 persistent이어야 합니다. 스팟 인스턴스 요청에서 시작 그룹을 지정할 수 없습니다.

  • EC2 집합 또는 스팟 집합 요청의 유형은 maintain이어야 합니다.

  • 루트 볼륨은 인스턴스 스토어 볼륨이 아니라 EBS 볼륨이어야 합니다.

스팟 인스턴스가 Spot 서비스에 의해 중지된 후에는 Spot 서비스만 스팟 인스턴스를 다시 시작할 수 있으며 동일한 시작 사양을 사용해야 합니다.

persistent 스팟 인스턴스 요청에 의해 시작된 스팟 인스턴스의 경우 스팟 서비스는 용량이 동일한 가용 영역에서 사용 가능한 경우 중지된 인스턴스와 동일한 인스턴스 유형에 대해 중지된 인스턴스를 다시 시작합니다.

EC2 집합 또는 스팟 집합의 인스턴스가 중지되고 플릿이 maintain 유형인 경우 스팟 서비스는 대체 인스턴스를 시작하여 대상 용량을 유지합니다. Spot 서비스는 지정된 할당 전략(lowestPrice, diversified 또는 InstancePoolsToUseCount)을 기반으로 최상의 풀을 찾습니다. 이전에 중지된 인스턴스로 풀의 우선 순위를 지정하지 않습니다. 나중에 할당 전략으로 이전에 중지된 인스턴스가 풀에 포함되면 스팟 서비스는 중지된 인스턴스를 다시 시작하여 대상 용량을 충족합니다.

예를 들어 lowestPrice 할당 전략을 사용하여 스팟 집합을 고려하십시오. 초기 시작 시, c3.large 풀은 시작 사양의 lowestPrice 기준을 충족합니다. 나중에 c3.large 인스턴스가 중단되면 스팟 서비스는 인스턴스를 중지하고 lowestPrice 전략에 맞는 다른 풀에서 용량을 보충합니다. 이번에는 풀이 c4.large 풀로, 스팟 서비스는 c4.large 인스턴스를 시작하여 대상 용량을 충족합니다. 마찬가지로 스팟 집합은 다음에 c5.large 풀로 이동할 수 있습니다. 이러한 각각의 전환에서 스팟 서비스는 이전에 인스턴스가 중지된 풀에 우선 순위를 지정하지 않고 지정된 할당 전략에 따라 우선 순위를 지정합니다. lowestPrice 전략은 이전에 인스턴스가 중지된 풀로 되돌아갈 수 있습니다. 예를 들어 인스턴스가 c5.large 풀에서 중단되고 lowestPrice 전략이 다시 c3.large 또는 c4.large 풀로 연결되면 이전에 중지 된 인스턴스가 다시 시작되어 대상 용량을 충족합니다.

스팟 인스턴스가 중지되었을 때 일부 인스턴스 속성을 수정할 수 있지만 인스턴스 유형은 수정할 수 없습니다. EBS 볼륨을 분리하거나 삭제한 경우 스팟 인스턴스를 시작해도 연결되지 않습니다. 루트 볼륨을 분리했는데 스팟 서비스가 해당 스팟 인스턴스를 시작하려고 시도하면 인스턴스 시작은 실패하고 스팟 서비스는 중지된 인스턴스를 종료합니다.

중지된 상태의 스팟 인스턴스를 종료할 수 있습니다. 스팟 요청이나 EC2 집합 또는 스팟 집합을 취소하면 스팟 서비스에서는 중지된 상태의 연결된 스팟 인스턴스를 모두 종료합니다.

스팟 인스턴스가 중지 상태인 동안에는 유지 중인 EBS 볼륨에 대한 요금만 부과됩니다. EC2 집합 및 스팟 집합을 사용하는 경우 중지된 인스턴스가 많으면 해당 계정의 EBS 볼륨 수 제한을 초과할 수 있습니다.

중단된 스팟 인스턴스를 최대 절전 모드로 전환

다음 요구 사항이 충족되는 경우 Amazon EC2가 중단된 스팟 인스턴스를 최대 절전 모드로 전환하도록 이 동작을 변경할 수 있습니다.

요구 사항

  • 스팟 인스턴스 요청의 유형은 persistent이어야 합니다. 스팟 인스턴스 요청에서 시작 그룹을 지정할 수 없습니다.

  • EC2 집합 또는 스팟 집합 요청의 유형은 maintain이어야 합니다.

  • 루트 볼륨은 인스턴스 스토어 볼륨이 아니라 EBS 볼륨이어야 하고 최대 절전 모드에서 인스턴스 메모리(RAM)를 저장하기에 충분한 크기여야 합니다.

  • 메모리 용량이 100GB 미만인 C3, C4, C5, M4, M5, R3, R4 인스턴스가 지원됩니다.

  • Amazon Linux 2, Amazon Linux AMI, 4.4.0-1041 이상의 AWS-tuned Ubuntu 커널(linux-aws)이 포함된 Ubuntu, Windows Server 2008 R2 이상 등의 운영 체제가 지원됩니다.

  • 지원되는 운영 체제에서 최대 절전 에이전트를 설치하거나 다음과 같이 이미 에이전트를 포함하고 있는 AMI 중 하나를 사용하십시오.

    • Amazon Linux 2

    • Amazon Linux AMI 2017.09.1 이상

    • Ubuntu Xenial 16.04 20171121 이상

    • Windows Server 2008 R2 AMI 2017.11.19 이상

    • Windows Server 2012 또는 Windows Server 2012 R2 AMI 2017.11.19 이상

    • Windows Server 2016 R2 AMI 2017.11.19 이상

    • Windows Server 2019

  • 에이전트를 시작합니다. 인스턴스 시작 시 에이전트를 시작하도록 사용자 데이터를 사용하는 것이 좋습니다. 또는 에이전트를 수동으로 시작할 수도 있습니다.

권장 사항

  • 최대 절전 모드에서 인스턴스 메모리가 루트 볼륨에 저장되므로 암호화된 Amazon EBS 볼륨을 루트 볼륨으로 사용해야 합니다. 이렇게 해야 데이터가 볼륨에 저장되어 있고 인스턴스와 볼륨 간을 이동 중일 때 메모리(RAM)의 콘텐츠가 암호화됩니다. 루트 볼륨이 암호화된 Amazon EBS 볼륨인지 확인하려면 다음 세 가지 옵션 중 하나를 사용합니다.

    • EBS ‘단일 단계’ 암호화: 단일 실행 인스턴스 API 호출의 경우 암호화되지 않은 AMI에서 암호화된 EBS 지원 EC2 인스턴스를 시작할 수 있습니다. 자세한 내용은 EBS 지원 AMI를 통한 암호화 사용 단원을 참조하십시오.

    • 기본적인 EBS 암호화: 기본적으로 EBS 암호화를 활성화하여 AWS 계정에서 생성된 모든 새 EBS 볼륨이 암호화되도록 할 수 있습니다. 자세한 내용은 암호화 기본 제공 단원을 참조하십시오.

    • 암호화된 AMI: 암호화된 AMI를 사용하여 인스턴스를 시작하는 방식으로 EBS 암호화를 활성화할 수 있습니다. AMI에 암호화된 루트 스냅샷이 없을 경우, 이를 새로운 AMI 및 요청 암호화에 복사할 수 있습니다. 자세한 내용은 복사 중에 암호화되지 않은 이미지 암호화AMI 복사 단원을 참조하십시오.

스팟 인스턴스가 스팟 서비스에 의해 최대 절전 모드로 전환되어도 루트 볼륨에서 EBS 볼륨과 인스턴스 메모리(RAM)이 유지됩니다. 인스턴스의 프라이빗 IP 주소 역시 유지됩니다. 인스턴스 스토리지 볼륨과 다른 탄력적 IP 주소가 아닌 퍼블릭 IP 주소는 유지되지 않습니다. 인스턴스가 최대 절전 모드에 있는 동안에는 EBS 볼륨에 대한 요금만 부과됩니다. EC2 집합 및 스팟 집합을 사용하는 경우 최대 절전 모드로 전환된 인스턴스가 많으면 해당 계정의 EBS 볼륨 수 제한을 초과할 수 있습니다.

인스턴스가 스팟 서비스에서 신호를 수신할 때 에이전트는 운영 체제에 최대 절전 모드로 전환하라는 메시지를 보냅니다. 에이전트가 설치되어 있지 않거나 기반 운영 체제가 최대 절전 모드를 지원하지 않거나 인스턴스 메모리를 저장하기 충분한 볼륨 공간이 없는 경우에는 최대 절전 모드로의 전환이 실패하고 대신에 스팟 서비스가 인스턴스를 중지합니다.

스팟 서비스가 스팟 인스턴스를 최대 절전 모드로 전환하면 스팟 인스턴스가 중단되기 2분 전에 중지 공지를 수신합니다. 최대 절전 모드가 즉시 시작됩니다. 인스턴스가 최대 절전 모드를 활성화하는 동안에는 인스턴스 상태 확인이 실패할 수 있습니다. 최대 절전 모드 활성화가 완료되면 인스턴스의 상태는 stopped가 됩니다.

스팟 서비스에 의해 최대 절전 모드로 전환된 스팟 인스턴스는 해당 스팟 서비스에 의해서만 재개될 수 있습니다. 지정된 최고 가격보다 낮은 스팟 가격에서 용량이 가용 상태가 되면 스팟 서비스가 인스턴스를 재개합니다.

자세한 내용은 인스턴스 최대 절전 모드 준비 단원을 참조하십시오.

온디맨드 인스턴스 최대 절전 모드 전환에 대한 자세한 내용은 인스턴스를 최대 절전 모드로 전환 단원을 참조하십시오.

중단에 대한 준비

스팟 인스턴스 사용 시 따라야 할 몇 가지 모범 사례는 다음과 같습니다.

  • 기본 최고 가격인 온디맨드 가격을 사용하십시오.

  • 필수 소프트웨어 구성이 포함된 Amazon 머신 이미지(AMI)를 사용하여 요청이 이행되는 즉시 인스턴스를 실행할 준비가 되었는지 확인합니다. 시작 시 사용자 데이터를 사용하여 명령을 실행할 수도 있습니다.

  • 스팟 인스턴스가 종료되어도 영향을 받지 않을 장소에 중요한 데이터를 정기적으로 저장하십시오. 예를 들어, Amazon S3, Amazon EBS 또는 DynamoDB를 사용할 수 있습니다.

  • 작업을 작은 부분으로 분리하거나(눈금, 하둡 또는 대기열 기반 아키텍처 사용), 작업을 자주 저장할 수 있도록 검사점을 사용합니다.

  • 스팟 인스턴스 중단 공지를 사용하여 스팟 인스턴스의 상태를 모니터링합니다.

  • 이 경고를 즉시 제공하기 위해 모든 노력을 기울이고 있지만 경고를 보내기 전에 스팟 인스턴스가 종료될 수도 있습니다. 따라서 중단 공지를 테스트할 때도 애플리케이션을 테스트하여 예상치 않은 인스턴스 종료가 정상적으로 처리되는지 확인하십시오. 이렇게 하려면 온디맨드 인스턴스를 사용하여 애플리케이션을 실행한 다음 온디맨드 인스턴스를 직접 종료합니다.

인스턴스 최대 절전 모드 준비

이미 에이전트를 포함하고 있는 AMI를 사용하지 않는 한, 인스턴스에 최대 절전 모드 에이전트를 설치해야 합니다. 에이전트가 AMI에 포함되었거나 직접 설치했는지 여부와 관계없이 인스턴스 시작 시 에이전트를 실행해야 합니다.

다음 절차를 따르면 Linux 인스턴스를 준비하는 데 도움이 됩니다. Windows 인스턴스를 준비하는 방법은 Windows 인스턴스용 Amazon EC2 사용 설명서인스턴스 최대 절전 모드 준비를 참조하십시오.

Amazon Linux 인스턴스를 준비하려면

  1. 커널이 최대 절전 모드를 지원하고 필요할 경우 커널을 업데이트하는지 확인합니다.

  2. AMI에 에이전트가 포함되어 있지 않은 경우에는 다음 명령을 사용하여 에이전트를 설치합니다.

    sudo yum update; sudo yum install hibagent
  3. 사용자 데이터에 다음을 추가합니다.

    #!/bin/bash /usr/bin/enable-ec2-spot-hibernation

Ubuntu 인스턴스를 준비하려면

  1. AMI에 에이전트가 포함되어 있지 않은 경우에는 다음 명령을 사용하여 에이전트를 설치합니다. 최대 절전 모드 에이전트는 Ubuntu 16.04 이상에서만 사용할 수 있습니다.

    sudo apt-get install hibagent
  2. 사용자 데이터에 다음을 추가합니다.

    #!/bin/bash /usr/bin/enable-ec2-spot-hibernation

스팟 인스턴스 중단 공지

스팟 인스턴스 중단을 방지하는 가장 좋은 방법은 내결함성을 유지하도록 애플리케이션을 설계하는 것입니다. 또한 Amazon EC2가 스팟 인스턴스를 중단하거나 종료하기 2분 전에 경고해 주는 스팟 인스턴스 중단 공지를 이용할 수 있습니다. 5초마다 이러한 경고를 확인하는 것이 좋습니다.

이 경고를 CloudWatch 이벤트 및 스팟 인스턴스의 인스턴스 메타데이터 항목으로 사용할 수 있습니다.

최대 절전을 중지 행동으로 지정할 경우 중지 공지를 수신하지만, 최대 절전 과정은 즉시 시작되므로 2분 경고를 받지 않습니다.

EC2 스팟 인스턴스 Interruption Notice

Amazon EC2 스팟 인스턴스를 중단하려고 하면 실제 중단하기 2분 전에 이벤트를 내보냅니다. 이 이벤트는 Amazon CloudWatch Events를 통해 감지될 수 있습니다. 자세한 내용은 Amazon CloudWatch Events 사용 설명서 단원을 참조하십시오.

다음은 스팟 인스턴스 중단에 대한 이벤트의 예제입니다. 가능한 instance-action 값은 hibernate, stopterminate입니다.

{ "version": "0", "id": "12345678-1234-1234-1234-123456789012", "detail-type": "EC2 Spot Instance Interruption Warning", "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", "instance-action": "action" } }

instance-action

스팟 서비스에서 중지 또는 종료할 스팟 인스턴스를 표시한 경우 인스턴스 메타데이터에 instance-action 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 다음과 같이 instance-action을 검색할 수 있습니다.

[ec2-user ~]$ curl http://169.254.169.254/latest/meta-data/spot/instance-action

instance-action 항목은 해당 작업과 작업이 이루어지는 대략적 시간(UTC 기준)을 지정합니다.

다음 예제에서는 이 인스턴스가 중지될 시간을 알려 줍니다.

{"action": "stop", "time": "2017-09-18T08:22:00Z"}

다음 예제에서는 이 인스턴스가 종료될 시간을 알려 줍니다.

{"action": "terminate", "time": "2017-09-18T08:22:00Z"}

Amazon EC2가 인스턴스를 중지 또는 종료할 준비가 되지 않거나 사용자가 인스턴스를 직접 종료한 경우 instance-action 항목이 나타나지 않고 HTTP 404 오류를 수신하게 됩니다.

termination-time

이 항목은 이전 버전과의 호환성을 위해 보존되며, 그 대신 instance-action을 사용해야 합니다.

스팟 서비스에서 종료할 스팟 인스턴스를 표시한 경우 인스턴스 메타데이터에 termination-time 항목이 있습니다. 표시하지 않은 경우에는 이 항목이 없습니다. 다음과 같이 termination-time을 검색할 수 있습니다.

[ec2-user ~]$ if curl -s http://169.254.169.254/latest/meta-data/spot/termination-time | grep -q .*T.*Z; then echo terminated; fi

termination-time 항목은 인스턴스가 종료 신호를 받게 될 대략의 시간(UTC 기준)을 지정합니다. 다음 예를 참조하십시오.

2015-01-05T18:02:00Z

Amazon EC2가 인스턴스를 종료할 준비가 되지 않거나 사용자가 스팟 인스턴스를 직접 종료한 경우 termination-time 항목이 나타나지 않거나(HTTP 404 오류 수신) 이 항목에 시간 값이 아닌 값이 포함됩니다.

Amazon EC2에서 인스턴스를 종료하지 않으면 요청 상태가 fulfilled로 설정됩니다. termination-time 값은 과거 시점인 원래 예상 시간과 함께 인스턴스 메타데이터에 남습니다.

중단된 스팟 인스턴스에 대한 청구

스팟 인스턴스(스팟 블록에 있지 않음)가 중단되면 다음과 같이 요금이 부과됩니다.

스팟 인스턴스를 중단하는 사람 운영 체제 첫 번째 시간에 중단됨 첫 번째 시간 후 어떤 시간에든 중단됨

사용자가 스팟 인스턴스를 중단하는 경우

Linux(RHEL 및 SUSE 제외) 사용된 시간(초)에 대해 부과 사용된 시간(초)에 대해 부과
Windows, RHEL, SUSE 일부 시간만 사용한 경우에도 전체 시간에 대해 부과 사용한 전체 시간에 대해 부과되며, 중단된 일부 시간에 대해 전체 시간 요금 부과

Amazon EC2가 스팟 인스턴스를 중단하는 경우

Linux(RHEL 및 SUSE 제외) 무료 사용된 시간(초)에 대해 부과
Windows, RHEL, SUSE 무료

사용한 전체 시간에 대해 부과되지만, 중단된 일부 시간에 대한 요금은 무료

스팟 블록에 있는 스팟 인스턴스가 중단되면 다음과 같이 요금이 부과됩니다.

스팟 인스턴스를 중단하는 사람 운영 체제 첫 번째 시간에 중단됨 첫 번째 시간 후 어떤 시간에든 중단됨

사용자가 스팟 인스턴스를 중단하는 경우

Linux(RHEL 및 SUSE 제외) 사용된 시간(초)에 대해 부과 사용된 시간(초)에 대해 부과
Windows, RHEL, SUSE 일부 시간만 사용한 경우에도 전체 시간에 대해 부과 사용한 전체 시간에 대해 부과되며, 중단된 일부 시간에 대해 전체 시간 요금 부과

Amazon EC2가 스팟 인스턴스를 중단하는 경우

Linux(RHEL 및 SUSE 제외) 무료 무료
Windows, RHEL, SUSE 무료

무료