인스턴스 종료를 정상적으로 처리하도록 애플리케이션을 설계하십시오. - Amazon EC2 Auto Scaling

기계 번역으로 제공되는 번역입니다. 제공된 번역과 원본 영어의 내용이 상충하는 경우에는 영어 버전이 우선합니다.

인스턴스 종료를 정상적으로 처리하도록 애플리케이션을 설계하십시오.

이 주제에서는 Auto Scaling 그룹이 아직 종료할 준비가 되지 않은 인스턴스를 종료하거나 할당된 작업을 완료하기에 너무 빨리 인스턴스를 종료하는 것을 방지하는 데 사용할 수 있는 기능을 다룹니다. 이 세 가지 기능을 모두 조합하여 사용하거나 별도로 사용하여 인스턴스 종료를 정상적으로 처리하도록 애플리케이션을 설계할 수 있습니다.

예를 들어 장기 실행 작업을 위해 수신 메시지를 수집하는 Amazon SQS 대기열이 있다고 가정해 보겠습니다. 새 메시지가 도착하면 Auto Scaling 그룹의 인스턴스가 메시지를 검색하여 처리를 시작합니다. 각 메시지를 처리하는 데 3시간이 걸립니다. 메시지 수가 증가하면 Auto Scaling 그룹에 새 인스턴스가 자동으로 추가됩니다. 메시지 수가 줄어들면 기존 인스턴스는 자동으로 해지됩니다. 이 경우 Amazon EC2 Auto Scaling에서 종료할 인스턴스를 결정해야 합니다. 기본적으로 Amazon EC2 Auto Scaling은 현재 유휴 상태인 인스턴스가 아니라 3시간의 긴 작업을 처리하는 데 2.9시간이 걸리는 인스턴스를 종료할 수 있습니다. Amazon EC2 Auto Scaling을 사용할 때 예상치 못한 종료 문제가 발생하지 않도록 하려면 이 시나리오에 대응하도록 애플리케이션을 설계해야 합니다.

중요

Amazon EC2 Auto Scaling에서 인스턴스 종료를 정상적으로 처리하도록 애플리케이션을 설계할 때는 다음 사항을 염두에 두십시오.

  • 인스턴스가 비정상인 경우 Amazon EC2 Auto Scaling은 사용자가 사용하는 기능에 관계없이 인스턴스를 교체합니다 (ReplaceUnhealthy프로세스를 일시 중단하지 않는 한). 수명 주기 후크를 사용하여 애플리케이션이 정상적으로 해지되도록 하거나 인스턴스가 해지되기 전에 복구해야 하는 모든 데이터를 복사할 수 있습니다.

  • 해지 수명 주기 후크는 인스턴스가 해지되기 전에 실행되거나 완료되는 것이 보장되지 않습니다. 문제가 발생하더라도 Amazon EC2 Auto Scaling은 여전히 인스턴스를 종료합니다.

인스턴스 스케일 인 보호

인스턴스 해지가 기본적으로 거부되어야 하고 특정 인스턴스에 대해서만 명시적으로 허용되어야 하는 중요한 작업인 많은 상황에서 인스턴스 스케일 인 보호 기능을 사용할 수 있습니다. 예컨대, 컨테이너화된 워크로드를 실행할 때 모든 인스턴스를 보호하고 현재 또는 예약된 작업이 없는 인스턴스에 대해서만 보호를 해제하는 것이 일반적입니다. ECSAmazon과 같은 서비스에서는 인스턴스 스케일 인 보호 기능이 포함된 통합 기능을 제품에 내장했습니다.

Auto Scaling 그룹에서 스케일인 보호를 활성화하여 인스턴스가 생성될 때 인스턴스에 스케일인 보호를 적용하고 기존 인스턴스에 대해 스케일인 보호를 활성화할 수 있습니다. 인스턴스가 더 이상 수행할 작업이 없는 경우, 보호 기능을 해제할 수 있습니다. 인스턴스는 새 작업에 대한 폴링을 계속하고 새 작업이 할당되면 보호를 다시 활성화할 수 있습니다.

애플리케이션은 인스턴스의 해지 가능 여부를 관리하는 중앙 집중식 제어 영역 또는 인스턴스 자체에서 보호 기능을 설정할 수 있습니다. 그러나 많은 수의 인스턴스가 스케일 인 보호 기능을 계속적으로 토글하는 경우, 제한 문제가 발생할 수 있습니다.

자세한 설명은 인스턴스 확장 보호를 사용하여 인스턴스 종료를 제어할 수 있습니다. 섹션을 참조하세요.

사용자 지정 해지 정책

인스턴스 스케일 인 보호와 마찬가지로 사용자 지정 해지 정책은 Auto Scaling 그룹이 특정 인스턴스를 해지하는 것을 방지하는 데 도움이 됩니다.

기본적으로 Auto Scaling 그룹은 기본 해지 정책을 사용하여 어떤 인스턴스를 먼저 해지할지 결정합니다. 어떤 인스턴스가 먼저 해지되는지 더 세밀하게 제어하고 싶은 경우, Lambda 함수를 사용하여 사용자 지정 해지 정책을 구현할 수 있습니다. Amazon EC2 Auto Scaling은 종료할 인스턴스를 결정해야 할 때마다 함수를 호출합니다. 함수가 반환하는 인스턴스만 해지합니다. 함수에서 오류가 발생하거나, 시간 초과가 발생하거나, 빈 목록이 생성되는 경우 Amazon EC2 Auto Scaling은 인스턴스를 종료하지 않습니다.

사용자 지정 해지 정책은 인스턴스가 과도하게 중복되거나 활용도가 낮은 시점을 파악하여 해지할 수 있는 경우에 유용합니다. 이를 지원하려면 그룹 전체의 워크로드를 모니터링하는 컨트롤 플레인을 사용하여 애플리케이션을 구현해야 합니다. 이렇게 하면 인스턴스가 여전히 작업을 처리 중인 경우, Lambda 함수가 해당 인스턴스를 포함하지 않도록 인식합니다.

자세한 설명은 Lambda를 사용하여 사용자 지정 해지 정책 생성 섹션을 참조하세요.

해지 수명 주기 후크

해지 수명 주기 후크는 이미 해지하도록 선택된 인스턴스의 수명을 연장합니다. 현재 인스턴스에 할당된 모든 메시지 또는 요청을 완료하거나 진행 상황을 저장하고 작업을 다른 인스턴스로 전송할 수 있는 추가 시간을 제공합니다.

많은 워크로드의 경우, 해지를 위해 선택된 인스턴스에서 수명 주기 후크를 통해 애플리케이션을 정상적으로 해지하는 것으로 충분할 수 있습니다. 이는 최선의 방법이며 장애가 발생한 경우, 해지를 방지하는 데 사용할 수 없습니다.

수명 주기 후크를 사용하려면 인스턴스가 해지되도록 선택된 시점을 알아야 합니다. 이를 알 수 있는 방법은 다음 두 가지입니다:

옵션 설명 가장 적합한 용도 설명서 링크
인스턴스 내부 인스턴스 메타데이터 서비스 (IMDS) 는 인스턴스에서 직접 인스턴스 상태를 폴링할 수 있는 안전한 엔드포인트입니다. 메타데이터가 Terminated(으)로 돌아오면 인스턴스가 해지되도록 예약된 것입니다. 인스턴스가 해지되기 전에 인스턴스에서 작업을 수행해야 하는 애플리케이션. 대상 수명 주기 상태 검색
인스턴스 외부 인스턴스가 해지되면 이벤트 알림이 생성됩니다. Amazon EventBridgeSQS, Amazon 또는 Amazon을 사용하여 규칙을 SNS 생성하여 이러한 이벤트를 캡처하고 Lambda 함수 등을 사용하여 응답을 호출할 수 있습니다. 인스턴스 외부에서 작업을 수행해야 하는 애플리케이션. 알림 대상 구성

수명 주기 후크를 사용하려면 또한 해당 인스턴스가 언제 완전히 해지될 준비가 되는지를 알아야 합니다. Amazon EC2 Auto Scaling은 CompleteLifecycleAction호출이 오거나 제한 시간이 경과한 시점 중 먼저 발생하는 경우를 제외하고 EC2 Amazon에 인스턴스를 종료하라고 지시하지 않습니다.

기본적으로 인스턴스는 해지 수명 주기 후크로 인해 1시간 동안 계속 실행될 수 있습니다(하트비트 타임아웃). 1시간이 수명 주기 작업을 완료하는 데 충분하지 않은 경우, 기본 시간 제한을 구성할 수 있습니다. 수명 주기 작업이 실제로 진행 중이면 호출을 통해 제한 시간을 연장할 수 있습니다. RecordLifecycleActionHeartbeatAPI

자세한 내용은 Amazon EC2 Auto Scaling 수명 주기 후크 단원을 참조하십시오.