Amazon EC2 Auto Scaling이 비정상적인 인스턴스를 종료하지 않은 이유는 무엇입니까?

최종 업데이트 날짜: 2018년 6월 13일

Amazon Elastic Compute Cloud(Amazon EC2) Auto Scaling 그룹이 설정되어 있지만, 비정상적인 Amazon EC2 인스턴스를 종료하지 않습니다. 이 문제를 해결하려면 어떻게 해야 합니까?

간략한 설명

Amazon EC2 Auto Scaling은 Amazon EC2 상태 확인 및 Elastic Load Balancing(ELB) 상태 확인을 사용하여 인스턴스의 상태를 자동으로 확인할 수 있습니다. Amazon EC2 Auto Scaling 그룹의 모든 조정 작업은 Amazon EC2 콘솔의 [활동 기록]에 기록됩니다. 종종 활동 기록만으로는 Amazon EC2 Auto Scaling이 비정상적인 인스턴스를 종료하지 않은 이유를 확인하지 못할 수 있습니다.

Amazon EC2 콘솔에서 비정상적인 인스턴스 상태에 대해 자세히 알아보고, 해당 인스턴스를 종료하는 방법을 확인할 수 있습니다. 다음 설정을 확인하십시오.

  • 상태 확인 유예 기간
  • 일시 중지된 프로세스
  • EC2 콘솔의 인스턴스 상태
  • Auto Scaling 그룹의 인스턴스 상태
  • ELB 상태 확인

해결 방법

먼저 Amazon EC2 Auto Scaling의 인스턴스 상태를 기록합니다.

  1. Amazon EC2 콘솔에 로그인합니다. Auto Scaling 아래의 탐색 창에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [인스턴스] 보기를 선택하고 인스턴스 상태를 기록합니다.

상태 확인 유예 기간

Amazon EC2 Auto Scaling은 상태 확인 유예 기간이 만료된 후 EC2 상태 확인 및 ELB 상태 확인에 기반하여 서비스 상태인 인스턴스를 종료합니다. 유예 기간을 확인하는 방법:

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling]에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [세부 정보] 보기를 선택한 다음, 상태 확인 유예 기간이 얼마인지 기록합니다.

일시 중지된 프로세스

HealthCheck, ReplaceUnhealthy 또는 Terminate 등의 프로세스가 일시 중지되면 Amazon EC2 Auto Scaling이 비정상적인 인스턴스를 탐지, 교체 또는 종료하는 기능에 영향을 미칩니다.

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling]에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [세부 정보] 보기를 선택합니다.
  3. [편집]을 선택하고 [일시 중지된 프로세스]에서 HealthCheck, ReplaceUnhealthy 또는 Terminate가 있는 경우 모두 제거합니다.
  4. [저장]을 선택하여 프로세스를 다시 시작합니다.

Amazon EC2 콘솔의 인스턴스 상태

Amazon EC2 Auto Scaling은 손상된 상태의 인스턴스를 즉시 종료하지 않습니다. Amazon EC2 Auto Scaling은 그 대신 인스턴스가 복구될 때까지 몇 분간 기다립니다. 인스턴스가 손상되었는지 확인하는 방법:

  1. Amazon EC2 콘솔 탐색 창의 [인스턴스]에서 [인스턴스]를 선택한 다음, 인스턴스를 선택합니다.
  2. [상태 확인] 보기를 선택하고 인스턴스 상태가 손상되었는지 기록합니다.

Amazon EC2 Auto Scaling은 상태 확인에 데이터를 보고하지 못한 인스턴스를 지연하거나 종료하지 않을 수 있습니다. 일반적으로 Amazon CloudWatch의 상태 확인 지표에 데이터가 부족할 때 이런 상황이 발생합니다. 이런 인스턴스를 수동으로 종료하는 방법:

  1. Amazon EC2 콘솔 탐색 창의 [인스턴스]에서 [인스턴스]를 선택한 다음, 인스턴스를 선택합니다.
  2. [모니터링] 보기에서 인스턴스 상태를 기록합니다.
  3. 상태가 데이터 부족인 경우, 다시 인스턴스를 선택하고 [작업] 메뉴를 선택한 다음, [인스턴스 상태], [종료]를 선택합니다.

Auto Scaling 그룹의 인스턴스 상태

Amazon EC2 Auto Scaling은 대기 상태의 인스턴스에 상태 확인을 실행하지 않습니다. Standby 인스턴스를 InService 상태로 다시 설정하는 방법:

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling 그룹]에서 인스턴스 그룹을 선택하고 [인스턴스] 보기를 선택합니다.
  2. 필터 메뉴 [모든 수명 주기 상태]를 선택한 다음, [Standby]를 선택합니다.
  3. 상태 확인을 다시 시작하려면 인스턴스의 컨텍스트(마우스 오른쪽 버튼 클릭) 메뉴를 열고 [InService로 설정]을 선택하면 Standby 상태가 종료됩니다.

Amazon EC2 Auto Scaling은 수명 주기 후크가 완료되기를 기다리는 경우 인스턴스가 종료되기를 기다립니다. 수명 주기 상태를 찾아서 수명 주기 후크를 완료하는 방법:

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling]에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [인스턴스] 보기를 선택하고 인스턴스의 수명 주기 상태를 기록합니다.
  3. 상태가 terminating:wait인 경우, 하트비트 시간 초과를 확인한 다음 completing-lifecycle-action을 실행하여 수명 주기 후크를 완료합니다.

Amazon EC2 Auto Scaling이 ELB Connection Draining 기간이 완료되기를 기다리는 경우, 인스턴스가 종료될 때까지 대기합니다.

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling]에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [인스턴스] 보기를 선택하고 인스턴스의 수명 주기종료 중인지 확인합니다.
  3. [작업 기록] 보기를 선택합니다.
  4. [필터]에서는 [ELB Connection Draining 대기 중]을 선택하여 해당 그룹이 인스턴스 종료를 기다리는 중인지 확인합니다.

ELB 상태 확인

ELB 설정은 상태 확인과 인스턴스 교체에 영향을 미칩니다. ELB 콘솔의 인스턴스 상태를 기록합니다.

  1. Amazon EC2 console 탐색 창의 [Load Balancing]에서 [로드 밸런서]를 선택한 다음, 인스턴스가 등록된 로드 밸런서를 선택합니다.
  2. [인스턴스] 보기를 선택하고 인스턴스의 상태와 설명을 기록합니다.

Amazon EC2 Auto Scaling은 그룹의 상태 확인 구성이 EC2로 설정된 경우 ELB 상태 확인 결과를 사용하여 인스턴스 상태를 확인하지 않습니다. 따라서 Amazon EC2 Auto Scaling은 ELB 상태 확인에 실패한 인스턴스를 종료하지 않습니다. ELB 콘솔에서 인스턴스 상태가 OutofService이지만 Amazon EC2 Auto Scaling 콘솔에서는 Healthy인 경우, 상태 확인 유형이 ELB로 설정되었는지 확인하십시오.

  1. Amazon EC2 콘솔 탐색 창의 [Auto Scaling]에서 [Auto Scaling 그룹]을 선택한 다음, 인스턴스 그룹을 선택합니다.
  2. [세부 정보] 보기를 선택하고 상태 확인 유형을 기록합니다.
  3. [편집]을 선택하고 [상태 확인 유형]에 ELB를 선택한 다음, [저장]을 선택합니다.

그룹의 상태 확인 유형이 이미 ELB로 지정되어 있고 ELB 콘솔에서 인스턴스 상태가 OutofService일 경우, 앞서 기록해둔 상태 설명을 사용하여 이후의 단계를 결정합니다.

  • 인스턴스 등록이 아직 진행 중인 경우: 로드 밸런서가 인스턴스 등록을 완료하고 인스턴스가 InService 상태에 들어가기를 기다립니다.
  • LoadBalancer가 트래픽을 라우팅하도록 구성되지 않은 Amazon EC2 가용 영역에 인스턴스가 있는 경우Auto Scaling 그룹 또는 로드 밸런서의 서브넷을 편집하고 인스턴스 서브넷과 동일한지 확인합니다.
  • 인스턴스가 상태 확인에서 구성된 HealthyThreshold 개수를 연속적으로 통과하지 못한 경우: ELB가 상태 확인을 완료하고 인스턴스가 InService 상태가 되기를 기다립니다.