인스턴스 종료를 원활하게 처리할 수 있도록 애플리케이션 설계 - Amazon EC2 Auto Scaling

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

인스턴스 종료를 원활하게 처리할 수 있도록 애플리케이션 설계

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

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

중요

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

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

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

인스턴스 스케일 인 보호

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

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

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

자세한 설명은 인스턴스 스케일 인 보호를 사용하여 인스턴스 종료 제어 섹션을 참조하세요.

사용자 지정 해지 정책

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

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

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

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

해지 수명 주기 후크

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

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

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

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

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

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

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