인스턴스 해지를 원활하게 처리할 수 있도록 Amazon EC2 Auto Scaling에서 애플리케이션을 설계하세요. - Amazon EC2 Auto Scaling

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

인스턴스 해지를 원활하게 처리할 수 있도록 Amazon EC2 Auto Scaling에서 애플리케이션을 설계하세요.

이 주제에서는 Amazon EC2 Auto Scaling이 스케일 인 이벤트에 응답할 때 예기치 않게 해지되지 않아야 하는 인스턴스에서 실행 중인 애플리케이션이 있는 경우, 취할 수 있는 다양한 접근 방식에 대해 설명합니다.

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

다음 기능을 사용하여 Auto Scaling 그룹이 아직 해지할 준비가 되지 않은 인스턴스를 해지하거나 할당된 작업을 완료하기 전에 인스턴스를 너무 빨리 해지하는 것을 방지할 수 있습니다. 이 세 가지 기능은 모두 함께 또는 개별적으로 사용할 수 있습니다.

중요

인스턴스 해지를 정상적으로 처리하기 위해 Amazon EC2 Auto Scaling에서 애플리케이션을 설계할 때는 다음 사항을 유의하세요.

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

  • 해지 라이프사이클 후크는 인스턴스가 해지되기 전에 실행되거나 완료되는 것이 보장되지 않습니다. 문제가 발생해도 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은 작업 호출을 받거나 제한 시간이 CompleteLifecycle경과한 시점 중 먼저 발생하는 시점을 기준으로 Amazon EC2에 인스턴스를 종료하라고 지시하지 않습니다.

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

자세한 정보는 Amazon EC2 Auto Scaling 라이프사이클 후크을 참조하세요.