Auto Scaling 그룹에서 일시적으로 인스턴스 제거 - Amazon EC2 Auto Scaling

Auto Scaling 그룹에서 일시적으로 인스턴스 제거

InService 상태의 인스턴스를 Standby 상태로 설정하고, 인스턴스를 업데이트하거나 문제 해결한 다음, 해당 인스턴스를 서비스 상태로 되돌릴 수 있습니다. 대기 상태의 인스턴스는 Auto Scaling 그룹에 여전히 속하나, 로드 밸런서 트래픽을 처리하지는 못합니다.

이 기능을 사용하면 상태 확인의 일부로 또는 축소 이벤트 중에 인스턴스를 종료하는 Amazon EC2 Auto Scaling에 대한 걱정 없이 인스턴스를 중지 및 시작하거나 재부팅할 수 있습니다.

예를 들어 시작 템플릿 또는 시작 구성을 변경하여 Auto Scaling 그룹의 Amazon Machine Image(AMI)를 언제든 변경할 수 있습니다. Auto Scaling 그룹이 시작하는 모든 후속 인스턴스가 이 AMI를 사용합니다. 그러나 Auto Scaling 그룹은 현재 서비스 중인 인스턴스를 업데이트하지 않습니다. 이러한 인스턴스를 종료하고 Amazon EC2 Auto Scaling이 인스턴스를 대체하도록 하거나 인스턴스 새로 고침 기능을 사용하여 인스턴스를 종료하고 대체할 수 있습니다. 또는 인스턴스 상태를 대기로 설정하고 소프트웨어를 업데이트한 후 인스턴스를 다시 서비스 상태로 설정할 수 있습니다.

Auto Scaling 그룹에서 인스턴스를 분리하는 것은 인스턴스를 대기 상태로 전환하는 것과 유사합니다. 독립 실행형 EC2 인스턴스와 같은 인스턴스를 관리하고 종료하려는 경우 인스턴스 분리가 유용할 수 있습니다. 자세한 정보는 Auto Scaling 그룹에서 EC2 인스턴스 분리을 참조하십시오.

중요

인스턴스를 대기 상태로 설정하면 Auto Scaling 그룹이 가용 영역 간에 불균형하게 분배될 수 있습니다. AZRebalance 프로세스를 일시 중지하지 않은 경우 Amazon EC2 Auto Scaling은 가용 영역을 재분배하여 보상합니다. 자세한 정보는 Auto Scaling 그룹에 대한 프로세스 일시 중단 및 재개을 참조하십시오.

중요

대기 상태의 인스턴스에 대해 요금이 청구됩니다.

대기 상태를 작동하는 방법

대기 상태는 Auto Scaling 그룹에서 인스턴스를 일시적으로 제거할 수 있도록 다음과 같이 작동합니다.

  1. 인스턴스를 대기 상태로 설정합니다. 인스턴스는 대기 상태를 끝낼 때까지 이 상태로 유지됩니다.

  2. Auto Scaling 그룹에 연결된 로드 밸런서 대상 그룹 또는 Classic Load Balancer가 있는 경우 로드 밸런서에서 해당 인스턴스가 등록 취소됩니다. 로드 밸런서에 대해 Connection Draining이 활성화된 경우 Elastic Load Balancing은 등록 취소 프로세스를 완료하기 전에 300초 동안 대기하는데, 이는 진행 중인 요청을 완료하는 데 도움이 될 수 있습니다.

  3. 기본적으로 인스턴스를 대기 상태로 설정하면 희망 용량으로 지정한 값은 감소합니다. 그러면 이 인스턴스가 대기 상태에 있는 동안 추가 인스턴스를 시작하지 않도록 합니다. 또는 용량이 감소되지 않도록 지정할 수 있습니다. 이 옵션을 지정하는 경우, Auto Scaling 그룹이 인스턴스를 시작하고 대기 상태에 있는 인스턴스를 대체합니다. 하나 이상의 인스턴스가 대기 상태에 있는 동안 애플리케이션의 용량을 유지하기 위해서입니다.

  4. 인스턴스를 업데이트하거나 문제를 해결할 수 있습니다.

  5. 대기 상태를 끝내 인스턴스를 서비스 상태로 되돌립니다.

  6. 대기 상태였던 인스턴스를 다시 서비스 상태로 설정한 이후 원하는 용량이 증가합니다. 인스턴스를 대기 상태로 설정할 때 용량을 줄이지 않은 경우, Auto Scaling 그룹은 필요 이상의 인스턴스가 있음을 감지합니다. 그런 다음 종료 정책을 적용하여 그룹의 크기를 줄입니다. 자세한 정보는 축소 시 종료할 Auto Scaling 인스턴스 제어을 참조하십시오.

  7. Auto Scaling 그룹에 연결된 로드 밸런서 대상 그룹 또는 Classic Load Balancer가 있는 경우 로드 밸런서에 해당 인스턴스가 등록됩니다.

다음 그림에서는 이 프로세스에서 인스턴스 상태 간 전환을 보여 줍니다.


                    인스턴스가 대기 상태 시작 및 종료.

Auto Scaling 그룹에서 인스턴스의 전체 수명 주기에 대한 자세한 내용은 Amazon EC2 Auto Scaling 인스턴스 수명 주기 섹션을 참조하세요.

대기 상태의 인스턴스 상태

Amazon EC2 Auto Scaling은 대기 상태의 인스턴스에 대한 상태 확인을 수행하지 않습니다. 인스턴스가 대기 상태에 있는 동안 이 인스턴스의 상태는 대기 상태로 설정되기 전의 상태를 반영합니다. 스턴스를 서비스 상태로 설정할 때까지 Amazon EC2 Auto Scaling은 해당 인스턴스에 대한 상태 확인을 수행하지 않습니다.

예를 들어, 정상인 인스턴스를 대기 상태로 설정한 후 종료하면 Amazon EC2 Auto Scaling은 해당 인스턴스를 정상으로 계속 보고합니다. 대기 상태에 있던 종료된 인스턴스를 다시 서비스 상태로 전환하려면, Amazon EC2 Auto Scaling는 인스턴스에 대한 상태 확인을 수행하고, 인스턴스가 종료 중이거나 비정상으로 판단되면 대체 인스턴스를 시작합니다. 상태 확인에 대한 소개는 Auto Scaling 인스턴스의 상태 확인 섹션을 참조하세요.

일시적으로 인스턴스 제거(콘솔)

다음 절차는 현재 서비스 중인 인스턴스를 업데이트하는 일반적인 프로세스를 보여 줍니다.

인스턴스를 일시적으로 제거하려면

  1. https://console.aws.amazon.com/ec2autoscaling/에서 Amazon EC2 Auto Scaling 콘솔을 엽니다.

  2. Auto Scaling 그룹 옆의 확인란을 선택합니다.

    Auto Scaling 그룹(Auto Scaling groups) 페이지 하단에 분할 창이 열립니다.

  3. 인스턴스 관리 탭의 인스턴스에서 인스턴스를 선택합니다.

  4. [Actions], [Set to Standby]를 선택합니다.

  5. Set to Standby(대기로 설정) 페이지에서 확인란을 선택하여 대체 인스턴스를 시작합니다. 혹은 확인란을 선택하지 않고 원하는 만큼 용량을 줄입니다. [Set to Standby]를 선택합니다.

  6. 필요에 따라 인스턴스를 업데이트하거나 문제 해결할 수 있습니다. 모두 마쳤으면 다음 단계를 계속하여 인스턴스를 서비스 상태로 되돌립니다.

  7. 인스턴스를 선택하고 [Actions], [Set to InService]를 선택합니다. Set to InService(서비스 중으로 설정) 대화 상자에서 Set to InService(서비스 중으로 설정)를 선택합니다.

인스턴스를 일시적으로 제거(AWS CLI)

다음 절차는 현재 서비스 중인 인스턴스를 업데이트하는 일반적인 프로세스를 보여 줍니다.

인스턴스를 일시적으로 제거하려면

  1. describe-auto-scaling-instances 명령을 사용하여 업데이트할 인스턴스를 식별합니다.

    aws autoscaling describe-auto-scaling-instances

    다음은 응답의 예입니다.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }
  2. enter-standby 명령을 사용하여 인스턴스를 Standby 상태로 이동합니다. --should-decrement-desired-capacity 옵션을 사용하면 원하는 용량을 줄이므로 Auto Scaling 그룹에서는 대체 인스턴스를 시작하지 않습니다.

    aws autoscaling enter-standby --instance-ids i-05b4f7d5be44822a6 \ --auto-scaling-group-name my-asg --should-decrement-desired-capacity

    다음은 응답의 예입니다.

    { "Activities": [ { "Description": "Moving EC2 instance to Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "3b1839fe-24b0-40d9-80ae-bcd883c2be32", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:31:26.150Z", "Progress": 50, "Cause": "At 2014-12-15T21:31:26Z instance i-05b4f7d5be44822a6 was moved to standby in response to a user request, shrinking the capacity from 4 to 3.", "StatusCode": "InProgress" } ] }
  3. (선택 사항) describe-auto-scaling-instances 명령을 사용하여 인스턴스가 Standby에 있는지 확인합니다.

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    다음은 응답의 예입니다. 인스턴스가 현재 Standby 상태임을 확인할 수 있습니다.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "Standby" }, ... ] }
  4. 필요에 따라 인스턴스를 업데이트하거나 문제 해결할 수 있습니다. 모두 마쳤으면 다음 단계를 계속하여 인스턴스를 서비스 상태로 되돌립니다.

  5. 다음 exit-standby 명령을 사용하여 인스턴스를 다시 서비스 상태로 설정합니다.

    aws autoscaling exit-standby --instance-ids i-05b4f7d5be44822a6 --auto-scaling-group-name my-asg

    다음은 응답의 예입니다.

    { "Activities": [ { "Description": "Moving EC2 instance out of Standby: i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "ActivityId": "db12b166-cdcc-4c54-8aac-08c5935f8389", "Details": "{\"Availability Zone\":\"us-west-2a\"}", "StartTime": "2014-12-15T21:46:14.678Z", "Progress": 30, "Cause": "At 2014-12-15T21:46:14Z instance i-05b4f7d5be44822a6 was moved out of standby in response to a user request, increasing the capacity from 3 to 4.", "StatusCode": "PreInService" } ] }
  6. (선택 사항) 다음 describe-auto-scaling-instances 명령을 사용하여 인스턴스가 다시 서비스 상태가 되었는지 확인합니다.

    aws autoscaling describe-auto-scaling-instances --instance-ids i-05b4f7d5be44822a6

    다음은 응답의 예입니다. 인스턴스의 상태가 InService입니다.

    { "AutoScalingInstances": [ { "ProtectedFromScaleIn": false, "AvailabilityZone": "us-west-2a", "LaunchTemplate": { "LaunchTemplateName": "my-launch-template", "Version": "1", "LaunchTemplateId": "lt-050555ad16a3f9c7f" }, "InstanceId": "i-05b4f7d5be44822a6", "AutoScalingGroupName": "my-asg", "HealthStatus": "HEALTHY", "LifecycleState": "InService" }, ... ] }