Amazon EC2 Auto Scaling 용량 재분배 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling 용량 재분배

스팟 인스턴스의 가용성에 영향을 미치는 변경 사항을 모니터링하고 자동으로 응답하도록 Amazon EC2 Auto Scaling를 구성할 수 있습니다. 용량 재분배를 사용하면 실행 중인 인스턴스가 EC2에 의해 중단되기 전에 새로운 스팟 인스턴스로 플릿을 선제적으로 보강하여 워크로드 가용성을 유지할 수 있습니다.

작동 방식

는 EC2 인스턴스 재분배 권장 사항 알림을 알고 있습니다. Amazon EC2 Auto Scaling는 스팟 인스턴스가 중단 위험이 상승할 때 이러한 알림을 내보냅니다.Amazon EC2 그룹에 대해 용량 재분배가 활성화된 경우 Auto Scaling는 재분배 권장 사항을 받은 그룹의 스팟 인스턴스를 사전 예방적으로 교체하여 높은 중단 위험이 없는 새로운 스팟 인스턴스로 워크로드를 재분배할 기회를 제공합니다.Amazon EC2 Auto Scaling 즉, Amazon EC2 Auto Scaling에서 기존 인스턴스가 중단되기 전에 새 스팟 인스턴스를 시작하는 동안 워크로드가 계속 작업을 처리할 수 있습니다. 또한 수명 주기 후크를 사용하여 종료 전에 인스턴스에서 사용자 지정 작업을 수행할 수도 있습니다.

EC2 인스턴스 재분배 권장 사항에 대한 자세한 내용은 https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/rebalance-recommendations.html의 Linux 인스턴스용 Amazon EC2 사용 설명서EC2 인스턴스 재분배 권장 사항을 참조하십시오.

자세한 내용과 용량 재분배 기능에 대한 연습은 AWS 컴퓨팅 블로그의 EC2 Auto Scaling에 대한 새로운 용량 재분배 기능을 사용하여 스팟 인스턴스 수명 주기 사전 관리 블로그 게시물을 참조하십시오.

참고

용량 재분배가 비활성화되면 Amazon EC2 Auto Scaling가 인스턴스를 중단하여 상태 확인에 실패한 후 스팟 인스턴스를 교체합니다. Amazon EC2는 항상 인스턴스가 중단되기 전에 EC2 인스턴스 재분배 권장 사항과 스팟 2분 인스턴스 중단 공지를 제공합니다.Amazon EC2

용량 재분배 활성화

언제든지 용량 재분배를 활성화하거나 비활성화할 수 있습니다.

고려 사항

이 구성에는 다음 고려 사항이 적용됩니다.

  • 여러 인스턴스 유형을 사용하도록 Auto Scaling 그룹을 구성하는 것이 좋습니다. 이렇게 하면 인스턴스 유형 및 구매 옵션이 여러 개인 Auto Scaling 그룹에 설명된 대로 각 가용 영역 내의 다양한 스팟 인스턴스 풀에서 인스턴스를 유연하게 시작할 수 있습니다.

  • 할당 전략도 사용하는 것이 좋습니다.capacity-optimized 용량 재분배 기능과 함께 사용되는 capacity-optimized 할당 전략을 사용하면 인스턴스를 가장 적합한 스팟 풀에서 유지할 수 있습니다.

  • 가능할 때마다 리전 내의 모든 가용 영역에 Auto Scaling 그룹을 생성해야 합니다. 이렇게 하면 Amazon EC2 Auto Scaling가 각 가용 영역에서 사용 가능한 용량을 살펴볼 수 있습니다. 한 가용 영역에서 시작에 실패하면 Amazon EC2 Auto Scaling는 성공할 때까지 지정된 가용 영역에서 스팟 인스턴스를 계속 시작하려고 시도합니다.

  • 용량 재분배를 사용하면 Amazon EC2 Auto Scaling가 다음과 같이 동작합니다. 새 인스턴스를 시작할 때 Amazon EC2 Auto Scaling는 새 인스턴스가 상태 확인을 통과할 때까지 기다렸다가 이전 인스턴스 종료를 진행합니다. 두 개 이상의 인스턴스를 교체할 때 각 이전 인스턴스의 종료는 새 인스턴스가 시작된 후 시작되어 상태 확인을 통과합니다. 는 이전 인스턴스를 종료하기 전에 새 인스턴스를 시작하려고 시도하므로 지정된 최대 용량에 도달하거나 이에 근접하면 재분배 활동을 지연시키거나 완전히 중지할 수 있습니다.Amazon EC2 Auto Scaling 이 문제를 피하기 위해 Amazon EC2 Auto Scaling는 재분배 활동 중에 그룹의 지정된 최대 용량을 일시적으로 초과할 수 있습니다.

    • 새 인스턴스가 시작되지 않거나 시작되지만 상태 확인은 실패할 경우 Amazon EC2 Auto Scaling은 계속해서 인스턴스를 다시 시작하려고 시도합니다. 새 인스턴스를 시작하는 동안 이전 인스턴스가 결국 중단되고 강제로 종료됩니다.

    • 조정 활동이 진행 중이고 Auto Scaling 그룹이 새로운 원하는 용량보다 적은 경우 Amazon EC2 Auto Scaling은 이전 인스턴스를 종료하기 전에 먼저 확장합니다.

  • 가 인스턴스를 종료하기 전에 재분배 알림을 수신하는 인스턴스 내에서 애플리케이션을 정상적으로 종료하도록 용량 재분배를 활성화할 때 수명 주기 후크를 구성할 수 있습니다.Amazon EC2 Auto Scaling

  • 스팟 인스턴스를 사용할 때 애플리케이션은 일부 중단에 대한 내결함성을 갖추고 있어야 애플리케이션이 중단되지 않습니다. 인스턴스가 마지막 2분 중단 공지를 받는 경우 Amazon EC2 Auto Scaling는 종료 수명 주기 후크를 호출하고 즉시 교체를 시작하려고 시도합니다.

용량 재분배 활성화(콘솔)

그룹을 생성하거나 업데이트할 때 용량 재분배를 활성화하거나 비활성화할 수 있습니다.Auto Scaling

새 Auto Scaling 그룹에 대해 용량 재분배를 활성화하려면

의 지침에 따라 새 인스턴스 유형 및 구매 옵션이 여러 개인 Auto Scaling 그룹 그룹을 생성합니다.Auto Scaling 그룹을 생성할 때 마법사의 2단계에서 인스턴스 구매 옵션 및 네트워크 설정을 구성합니다.Auto Scaling 인스턴스 배포 설정, 스팟 할당 설정, 용량 재분배 및 Auto Scaling가 시작할 수 있는 인스턴스 유형을 포함하여 Amazon EC2 Auto Scaling 그룹에 대한 추가 설정을 지정하려면 구매 옵션 및 인스턴스 유형 결합을 선택합니다.

인스턴스 배포 섹션에서 용량 재분배 확인란을 선택하거나 선택 취소하여 용량 재분배를 활성화할지 여부를 선택할 수 있습니다. 이 설정은 스팟 할당 전략이 Auto Scaling용량 최적화로 설정된 경우 콘솔을 사용하여 생성된 그룹에서 기본적으로 활성화됩니다.


                    용량 재분배 확인란

기존 Auto Scaling 그룹에 대해 용량 재분배를 활성화하려면

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

  2. 탐색 창의 AUTO SCALING에서 Auto Scaling 그룹.을 선택합니다.

  3. Auto Scaling 그룹 옆에 있는 확인란을 선택합니다.

    Auto Scaling 그룹 페이지 하단에서 분할 창이 열리고 선택한 그룹에 대한 정보가 표시됩니다.

  4. 세부 정보 탭에서 구매 옵션 및 인스턴스 유형, 편집을 선택합니다.

  5. 인스턴스 배포 섹션에서 다음을 수행합니다.

    • 용량 재분배를 활성화하려면 용량 재분배 확인란을 선택합니다.

    • 용량 재분배를 비활성화하려면 용량 재분배 확인란의 선택을 취소합니다.

  6. Update.]를 선택합니다.

용량 재분배 활성화(AWS CLI)

다음 예제에서는 AWS CLI를 사용하여 용량 재분배를 활성화 및 비활성화하는 방법을 보여 줍니다.

다음 파라미터와 함께 create-auto-scaling-group 또는 update-auto-scaling-group 명령을 사용합니다.

  • --capacity-rebalance / --no-capacity-rebalance 용량 재분배가 활성화되었는지 여부를 나타내는 부울 값입니다.—

create-auto-scaling-group 명령을 호출하기 전에 그룹에 사용하도록 구성된 시작 템플릿의 이름이 필요합니다.Auto Scaling 자세한 내용은 단원을 참조하십시오.그룹에 대한 시작 템플릿 생성Auto Scaling.

참고

다음 절차는 JSON 또는 YAML 형식의 구성 파일을 사용하는 방법을 보여줍니다. 버전 1을 사용하는 경우 JSON 형식의 구성 파일을 지정해야 합니다.AWS CLI 버전 2를 사용하는 경우 YAML 또는 JSON 형식의 구성 파일을 지정할 수 있습니다.AWS CLI

새 Auto Scaling 그룹을 생성하고 구성하려면

  • 다음 create-auto-scaling-group 명령을 사용하여 새 그룹을 생성하고 용량 재분배를 활성화하여 JSON 파일을 Auto Scaling 그룹의 유일한 파라미터로 참조합니다.Auto Scaling

    aws autoscaling create-auto-scaling-group --cli-input-json file://~/config.json

    혼합 인스턴스 정책을 지정하는 CLI 구성 파일이 아직 없는 경우 하나를 생성합니다.

    구성 파일의 최상위 JSON 객체에 다음 줄을 추가합니다.

    { "CapacityRebalance": true }

    다음은 예제 config.json 파일입니다.

    { "AutoScalingGroupName": "my-asg", "DesiredCapacity": 12, "MinSize": 12, "MaxSize": 15, "CapacityRebalance": true, "MixedInstancesPolicy": { "InstancesDistribution": { "OnDemandBaseCapacity": 0, "OnDemandPercentageAboveBaseCapacity": 25, "SpotAllocationStrategy": "capacity-optimized" }, "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Default" }, "Overrides": [ { "InstanceType": "c5.large" }, { "InstanceType": "c5a.large" }, { "InstanceType": "m5.large" }, { "InstanceType": "m5a.large" }, { "InstanceType": "c4.large" }, { "InstanceType": "m4.large" }, { "InstanceType": "c3.large" }, { "InstanceType": "m3.large" } ] } }, "TargetGroupARNs": "arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff", "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" }

새 Auto Scaling 그룹을 생성하고 구성하려면

  • 다음 create-auto-scaling-group 명령을 사용하여 새 그룹을 생성하고 용량 재분배를 활성화하여 YAML 파일을 Auto Scaling 그룹의 유일한 파라미터로 참조합니다.Auto Scaling

    aws autoscaling create-auto-scaling-group --cli-input-yaml file://~/config.yaml

    YAML 형식의 구성 파일에 다음 줄을 추가합니다.

    CapacityRebalance: true

    다음은 예제 config.yaml 파일입니다.

    --- AutoScalingGroupName: my-asg DesiredCapacity: 12 MinSize: 12 MaxSize: 15 CapacityRebalance: true MixedInstancesPolicy: InstancesDistribution: OnDemandBaseCapacity: 0 OnDemandPercentageAboveBaseCapacity: 25 SpotAllocationStrategy: capacity-optimized LaunchTemplate: LaunchTemplateSpecification: LaunchTemplateName: my-launch-template Version: $Default Overrides: - InstanceType: c5.large - InstanceType: c5a.large - InstanceType: m5.large - InstanceType: m5a.large - InstanceType: c4.large - InstanceType: m4.large - InstanceType: c3.large - InstanceType: m3.large TargetGroupARNs: - arn:aws:elasticloadbalancing:us-west-2:123456789012:targetgroup/my-alb-target-group/943f017f100becff VPCZoneIdentifier: subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782

기존 Auto Scaling 그룹에 대해 용량 재분배를 활성화하려면

그룹에 대해 용량 재분배가 활성화되어 있는지 확인하려면Auto Scaling

용량 재분배를 비활성화하려면

옵션과 함께 update-auto-scaling-group 명령을 사용하여 용량 재분배를 비활성화합니다.--no-capacity-rebalance

aws autoscaling update-auto-scaling-group --auto-scaling-group-name my-asg \ --no-capacity-rebalance

종료 수명 주기 후크 추가

종료 전에 코드를 실행하고 인스턴스에서 사용자 지정 작업을 수행할 수 있도록 용량 재분배를 활성화할 때 종료 수명 주기 후크를 구성하는 것이 좋습니다.

종료 수명 주기 후크를 사용할 수 있는 이유는 다음과 같습니다.

  • 시스템 또는 애플리케이션 로그를 Amazon Simple Storage Service에 업로드하려면(Amazon S3)

  • 작업자를 정상적으로 종료하려면Amazon SQS

  • DNS(도메인 이름 시스템)에서 등록 취소를 완료하려면

종료 수명 주기 후크가 없는 경우 다음 절차에 따라 하나를 생성합니다.

종료 수명 주기 후크를 추가하려면

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

  2. 탐색 창의 AUTO SCALING에서 Auto Scaling 그룹.을 선택합니다.

  3. Auto Scaling 그룹 옆에 있는 확인란을 선택합니다.

    Auto Scaling 그룹 페이지 하단에서 분할 창이 열리고 선택한 그룹에 대한 정보가 표시됩니다.

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

  5. 수명 주기 후크를 정의하려면 다음을 수행합니다.

    1. 수명 주기 후크 이름에 수명 주기 후크의 이름을 지정합니다.

    2. 수명 주기 전환에서 인스턴스 종료를 선택합니다.

    3. 하트비트 제한 시간에서 수명 주기 작업을 완료해야 하는 시간(초) 또는 제한 시간이 끝날 때까지의 시간을 지정합니다. 애플리케이션을 종료해야 하는 시간에 따라 30초에서 120초 사이의 값을 사용하는 것이 좋습니다.

    4. Default result(기본 결과)에서 수명 주기 후크 제한 시간이 경과하거나 예기치 않은 오류가 발생할 때 그룹에서 수행하는 작업을 지정합니다.Auto Scaling [ABANDON(중단)]과 [CONTINUE(계속)] 모두 인스턴스 종료를 허용합니다.

      • CONTINUE(계속)를 선택하면 Auto Scaling 그룹이 수명 주기 후크와 같은 나머지 작업을 종료 전에 진행할 수 있습니다.

      • [ABANDON]을 선택하면 Auto Scaling 그룹이 인스턴스를 즉시 종료합니다.

    5. (선택 사항) Notification metadata(알림 메타데이터)에서 Amazon EC2 Auto Scaling가 7단계에서 구성한 다른 대상이나 AWS Lambda 함수에 메시지를 보낼 때마다 포함할 추가 정보를 지정합니다.

  6. Create.를 선택합니다.

  7. (선택 사항) 수명 주기 후크에 작업을 추가하려면 다음 단계에 따라 함수 또는 다른 대상을 구성합니다.AWS Lambda 그렇지 않고 Amazon EC2 인스턴스가 작업을 자동으로 실행하려면 스크립트를 실행하도록 구성해야 합니다. 인스턴스 종료 전에 작업을 완료할 시간이 충분하도록 1~2분 이내에 완료될 종료 시퀀스를 스크립팅하는 것이 좋습니다.

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