Auto Scaling 그룹에 수명 주기 후크 추가 - Amazon EC2 Auto Scaling

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

Auto Scaling 그룹에 수명 주기 후크 추가

Auto Scaling 인스턴스를 대기 상태로 전환하고 해당 인스턴스에 대해 사용자 지정 작업을 수행하려는 경우, Auto Scaling 그룹에 수명 주기 후크를 추가할 수 있습니다. 사용자 지정 작업은 인스턴스가 시작될 때 또는 해지되기 전에 수행됩니다. 수명 주기 작업을 완료할 때까지 혹은 제한 시간이 끝날 때까지 인스턴스는 대기 상태로 유지됩니다.

AWS Management Console에서 Auto Scaling 그룹을 생성한 후 해당 그룹에 하나 이상의 수명 주기 후크를 추가할 수 있으며, 최대 50개까지 추가할 수 있습니다. AWS CLI, AWS CloudFormation 또는 SDK를 사용하여 Auto Scaling 그룹을 생성할 때 해당 그룹에 수명 주기 후크를 추가할 수도 있습니다.

기본적으로 콘솔에 수명 주기 후크를 추가하면 Amazon EC2 Auto Scaling이 Amazon EventBridge EventBridge로 수명 주기 이벤트 알림을 전송합니다. 권장되는 모범 사례는 EventBridge 또는 사용자 데이터 스크립트를 사용하는 것입니다. Amazon SNS 또는 Amazon SQS로 알림을 직접 전송하는 수명 주기 후크를 생성하려면 이 주제의 예에 표시된 것처럼 put-lifecycle-hook 명령을 사용할 수 있습니다.

수명 주기 후크 추가(콘솔)

Auto Scaling 그룹에 수명 주기 후크를 추가하려면 다음 단계를 따르십시오. 스케일 아웃(인스턴스 시작) 및 스케일 인(인스턴스 해지)를 위한 수명 주기 후크를 생성하려면 두 개의 개별 후크를 생성해야 합니다.

시작하기 전에 필요한 대로 Auto Scaling 그룹에 대한 수명 주기 후크 추가 준비의 설명에 따라 사용자 지정 작업을 설정하십시오.

스케일 아웃을 위한 수명 주기 후크를 추가
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 열고 탐색 창에서 Auto Scaling 그룹(Auto Scaling Groups)을 선택합니다.

  2. Auto Scaling 그룹 옆의 확인란을 선택합니다. 페이지 하단에 분할 창이 열립니다.

  3. 인스턴스 관리 탭의 Lifecycle hooks(수명 주기 후크)에서 Create lifecycle hook(수명 주기 후크 생성)을 선택합니다.

  4. 스케일 아웃(인스턴스 실행)을 위한 수명 주기 후크를 정의하려면 다음을 수행하세요.

    1. Lifecycle hook name(수명 주기 후크 이름)에 수명 주기 후크의 이름을 지정합니다.

    2. Lifecycle transition(수명 주기 전환)에서 Instance launch(인스턴스 시작)를 선택합니다.

    3. 하트비트 제한 시간에서는 스케일 아웃할 때 훅이 시간 초과되기 전에 인스턴스가 대기 상태로 유지되는 시간을 지정하십시오. 범위는 30 ~ 7200초입니다. 제한 시간을 길게 설정하면 사용자 지정 작업을 완료하기 위한 시간을 더 많이 제공합니다. 그러면, 제한 시간이 해지되기 전에 작업을 마칠 경우, 인스턴스가 다음 상태로 진행하도록 complete-lifecycle-action 명령을 보냅니다.

    4. 기본 결과(Default result)에서 수명 주기 후크 제한 시간이 경과하거나 예기치 못한 오류가 발생할 때 수행할 작업을 지정합니다. 계속 또는 포기를 선택할 수 있습니다.

      • 계속을 선택하면 Auto Scaling 그룹이 다른 수명 주기 후크를 진행한 다음 인스턴스를 서비스할 수 있습니다.

      • 포기를 선택하면 Auto Scaling 그룹이 잔여 작업을 중단하고 인스턴스를 즉각 해지합니다.

    5. (옵션) 알림 메타데이터에 Amazon EC2 Auto Scaling이 알림 대상에 메시지를 전송할 때 포함할 다른 정보를 지정합니다.

  5. 생성을 선택합니다.

스케일 인을 위한 수명 주기 후크 추가
  1. 스케일 아웃을 위한 수명 주기 후크를 생성한 후 중단한 부분부터 계속하려면 수명 주기 후크 만들기를 선택합니다.

  2. 스케일 인(인스턴스가 해지되거나 웜 풀로 돌아가는 것)을 위한 수명 주기 후크를 정의하려면 다음과 같이 하세요.

    1. Lifecycle hook name(수명 주기 후크 이름)에 수명 주기 후크의 이름을 지정합니다.

    2. Lifecycle transition(수명 주기 전환)에서 Instance terminate(인스턴스 해지)를 선택합니다.

    3. 하트비트 제한 시간에서는 스케일 아웃할 때 훅이 시간 초과되기 전에 인스턴스가 대기 상태로 유지되는 시간을 지정하십시오. CloudWatch에서 EC2 로그를 가져오는 것과 같은 최종 작업을 수행하는 데 필요한 시간에 따라 30 - 120초의 짧은 타임아웃 기간을 사용하는 것이 좋습니다.

    4. Default result(기본 결과)에 제한 시간이 경과하거나 예기치 못한 오류가 발생할 때 Auto Scaling 그룹에서 수행하는 작업을 지정합니다. ABANDON(중단) 및 CONTINUE(계속) 둘 다 인스턴스를 해지할 수 있습니다.

      • CONTINUE(계속)을 선택하면 해지 전에 Auto Scaling 그룹이 남아 있는 모든 작업(예: 다른 수명 주기 후크)을 진행할 수 있습니다.

      • 포기를 선택하면 Auto Scaling 그룹이 인스턴스를 즉각 해지합니다.

    5. (옵션) 알림 메타데이터에 Amazon EC2 Auto Scaling이 알림 대상에 메시지를 전송할 때 포함할 다른 정보를 지정합니다.

  3. 생성을 선택합니다.

수명 주기 후크 추가(AWS CLI)

put-lifecycle-hook 명령을 사용하여 수명 주기 후크를 생성하고 업데이트합니다.

스케일 아웃 시 작업을 수행하려면 다음 명령을 사용합니다.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-launch-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_LAUNCHING

축소 시 작업을 수행하려면 대신 다음 명령을 사용합니다.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING

Amazon SNS 또는 Amazon SQS를 사용하여 알림을 수신하려면 --notification-target-arn--role-arn 옵션을 추가합니다.

다음 예에서는 my-sns-topic이라는 SNS 주제를 알림 대상으로 지정하는 수명 주기 후크를 생성합니다.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg \ --lifecycle-transition autoscaling:EC2_INSTANCE_TERMINATING \ --notification-target-arn arn:aws:sns:region:123456789012:my-sns-topic \ --role-arn arn:aws:iam::123456789012:role/my-notification-role

이 주제는 다음 키-값 쌍에 해당하는 테스트 알림을 보냅니다.

"Event": "autoscaling:TEST_NOTIFICATION"

기본적으로 put-lifecycle ycleycle-hook 명령은 3600초(1시간)의 하트비트 제한 시간으로 수명 주기 후크를 생성합니다.

기존 수명 주기 후크에 대한 하트비트 제한 시간을 변경하려면 다음 예에 따라 --heartbeat-timeout 옵션을 추가합니다.

aws autoscaling put-lifecycle-hook --lifecycle-hook-name my-termination-hook \ --auto-scaling-group-name my-asg --heartbeat-timeout 120

인스턴스가 이미 대기 상태에 있는 경우, record-lifecycle-action-heartbeat CLI 명령을 통해 하트비트를 기록하여 수명 주기 후크가 제한 시간을 초과하지 않도록 할 수 있습니다. 그러면 수명 주기 후크를 만들 때 지정한 제한 시간 값을 기준으로 제한 시간이 늘어납니다. 제한 시간이 해지되기 전에 작업을 마칠 경우, complete-lifecycle-action 명령을 전송하여 인스턴스가 다음 상태로 진행하도록 할 수 있습니다. 자세한 정보와 지침은 Auto Scaling 그룹에서 수명 주기 작업 완료 섹션을 참조하세요.