Amazon EC2 Auto Scaling 에 대한 인스턴스 가중치를 구성하려면 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling 에 대한 인스턴스 가중치를 구성하려면

여러 인스턴스 유형을 시작하도록 Auto Scaling 그룹을 구성하는 경우 각 인스턴스가 그룹의 원하는 용량에 기여하는 용량 유닛 수를 정의할 수 있습니다.인스턴스 가중치 부여. 이를 통해 애플리케이션의 성능에 직접 매핑되는 방식으로 각 인스턴트 유형의 상대적 가중치를 지정할 수 있습니다. 코어(vCPU) 또는 메모리(GiB) 등과 같은 특정 애플리케이션 요구 사항에 따라 인스턴스에 가중치를 부여할 수 있습니다.

예를 들어 최소 8개의 vCPU 및 15GiB의 RAM에서 최적의 성능을 발휘하는 컴퓨팅 집약적 애플리케이션을 실행하는 경우, c5.2xlarge를 기본 유닛으로 사용할 때 다음 EC2 인스턴스 유형은 모두 애플리케이션 요구 사항을 충족합니다.

인스턴스 유형의 예
인스턴스 유형 vCPU 메모리(GiB)
c5.2xlarge 8 16
c5.4xlarge 16 32
c5.12xlarge 48 96
c5.18xlarge 72 144
c5.24xlarge 96 192

기본적으로 모든 인스턴스 유형은 동일한 가중치로 처리됩니다. 이 Auto Scaling 시작하면 해당 인스턴스 유형이 크든 작든 각 인스턴스가 그룹의 원하는 용량에 가산됩니다.

그런데 인스턴스 가중치를 사용하는 경우 각 인스턴스 유형에 연결할 용량 유닛 수를 지정하는 숫자 값을 할당하게 됩니다. 예를 들어 인스턴스 간의 크기가 서로 다른 경우 c5.2xlarge 인스턴스의 가중치는 2, c5.4xlarge(2배 더 큼)의 가중치는 4와 같은 식으로 지정할 수 있습니다. 그런 다음 Amazon EC2 Auto Scaling 이 인스턴스를 시작하면 가중치가 원하는 용량에 가산됩니다.

단위 시간당 가격

다음 표는 미국 동부(버지니아, 오하이오)의 여러 가용 영역에 있는 스팟 인스턴스의 시간당 가격과 동일한 리전의 온디맨드 인스턴스 가격을 비교한 것입니다. 표시된 가격은 현재 가격이 아니라 예를 든 것이며, 인스턴스 시간당 가격입니다.

예: 인스턴스 시간당 스팟 요금
인스턴스 유형 us-east-1a us-east-1b us-east-1c 온디맨드 가격
c5.2xlarge 0.180 USD 0.191 USD 0.170 USD 0.34 USD
c5.4xlarge 0.341 USD 0.361 USD 0.318 USD 0.68 USD
c5.12xlarge 0.779 USD 0.777 USD 0.777 USD 2.04 USD
c5.18xlarge 1.207 USD 1.475 USD 1.357 USD 3.06 USD
c5.24xlarge 1.555 USD 1.555 USD 1.555 USD 4.08 USD

인스턴스 가중치를 사용하면 단위 시간당 사용량을 기준으로 비용을 평가할 수 있습니다. 단위 시간당 가격은 인스턴스 유형에 따른 가격을 인스턴스가 나타내는 유닛 수로 나누어 계산합니다. 온디맨드 인스턴스의 경우, 하나의 인스턴스 유형을 배포하는 경우 동일한 인스턴스 유형의 다른 크기를 배포하더라도 단위 시간당 가격이 동일합니다. 그러나 단위 시간당 스팟 가격은 스팟 풀에 따라 다릅니다.

가중치가 부여된 인스턴스에서 단위 시간당 가격이 어떻게 계산되는지 이해하는 가장 쉬운 방법은 예를 살펴보는 것입니다. 예를 들어 간단한 계산을 위해 us-east-1a에서만 스팟 인스턴스를 시작한다고 할 경우 단위 시간당 가격은 아래와 같습니다.

예: 단위 시간당 스팟 가격
인스턴스 유형 us-east-1a 인스턴스 가중치 단위 시간당 가격
c5.2xlarge 0.180 USD 2 0.090 USD
c5.4xlarge 0.341 USD 4 0.085 USD
c5.12xlarge 0.779 USD 12 0.065 USD
c5.18xlarge 1.207 USD 18 0.067 USD
c5.24xlarge 1.555 USD 24 0.065 USD

Considerations

인스턴스 가중치를 효과적으로 구현하려면 다음 주요 사항을 고려해야 합니다.

  • 먼저 애플리케이션의 실제 성능 요구 사항을 반영하는 몇 가지 인스턴스 유형을 선택합니다. 그런 다음 가중치를 지정하여 각 인스턴스 유형을 Auto Scaling 그룹의 원하는 용량에 얼마나 가산할지를 결정합니다. 가중치는 그룹의 현재 인스턴스와 향후 인스턴스에 적용됩니다.

  • 가중치에 매우 큰 범위를 선택하지 않도록 주의하십시오. 예를 들어 한 인스턴스 유형에 가중치 1을 지정하고 다음으로 큰 인스턴스 유형에 가중치 200을 지정하는 것은 좋지 않지 않습니다. 가장 작은 가중치와 가장 큰 가중치의 차이가 너무 커서도 안 됩니다. 가중치 차이가 너무 큰 인스턴스 유형이 하나라도 있으면 지속적인 비용 성능 최적화에 부정적인 영향을 줄 수 있습니다.

  • Auto Scaling 그룹의 크기는 인스턴스가 아닌 용량 단위로 측정됩니다. 예를 들어 가중치가 vCPU를 기반으로 하는 경우 원하는 코어 수, 최소 및 최대 코어 수를 지정해야 합니다.

  • 원하는 용량이 가장 큰 가중치보다 최소 2~3배 더 크도록 가중치와 원하는 용량을 설정합니다.

  • 스팟 최고 가격을 직접 설정하는 경우 가격을 지정해야 합니다.인스턴스 시간당는 가장 비싼 인스턴스 유형에 대해 충분히 높습니다. Amazon EC2 Auto Scaling 은 가용 영역의 현재 스팟 가격이 최고가보다 낮고 사용 가능한 용량이 있는 경우 스팟 인스턴스를 프로비저닝합니다. 스팟 인스턴스에 대한 요청이 하나의 스팟 인스턴스 풀에서 이행될 수 없는 경우 스팟 인스턴스의 비용 절감 효과를 활용하기 위해 다른 스팟 풀에서 계속 시도합니다.

인스턴스 가중치 사용으로 다음과 같은 새로운 동작이 발생합니다.

  • 현재 용량이 원하는 용량 이상이 될 수 있습니다. Amazon EC2 Auto Scaling 은 원하는 용량이 완전히 충족될 때까지 인스턴스를 프로비저닝하려고 하므로 초과 요금이 발생할 수 있습니다. 예를 들어 두 인스턴스 유형 c5.2xlargec5.12xlarge를 지정하고 c5.2xlarge에 인스턴스 가중치 2, c5.12xlarge에 인스턴스 가중치 12를 할당한 경우, 원하는 용량을 충족하기까지 5개 유닛이 남아 있고 Amazon EC2 Auto Scaling 이c5.12xlarge, 원하는 용량은 7 단위를 초과합니다.

  • Amazon EC2 Auto Scaling 은 원하는 용량에 도달하기 위해 인스턴스를 가용 영역 전체에 배포하고 온디맨드 및 스팟 인스턴스에 대한 할당 전략을 적용하는 것이 초과 요금을 방지하는 것보다 우선합니다.

  • Amazon EC2 Auto Scaling 은 사용자가 기본 설정한 할당 전략을 사용하여 가용 영역 간의 균형을 유지하기 위해 최대 용량 제한을 초과할 수 있습니다. Amazon EC2 Auto Scaling 에서 부과하는 하드 제한은 원하는 용량과 가장 큰 가중치를 합한 값과 같습니다.

기존 그룹의 가중치를 추가하거나 수정할 때는 다음 사항에 유의하십시오.

  • 기존 Auto Scaling 그룹에 인스턴스 가중치를 추가할 때는 그룹에서 이미 실행 중인 모든 인스턴스 유형을 포함해야 합니다.

  • 기존 인스턴스 가중치를 수정할 때 Amazon EC2 Auto Scaling 은 새 가중치를 기준으로 원하는 용량에 도달하기 위해 인스턴스를 시작하거나 종료합니다.

  • 인스턴스 유형을 제거하는 경우, 인스턴스 유형이 제거되었더라도 해당 인스턴스 유형의 실행 중인 인스턴스는 마지막으로 업데이트된 가중치 값을 계속 갖게 됩니다.

Auto Scaling 그룹의 가중치를 추가하거나 수정하려면

가중치를 기존 Auto Scaling 그룹에 추가하거나 새 Auto Scaling 그룹에 가중치를 추가할 수 있습니다. 또한 기존 Auto Scaling 그룹을 업데이트하여 새 구성 옵션 (스팟 및 온디맨드 사용량, 스팟 할당 전략, 인스턴스 유형) 을 정의할 수 있습니다. 원하는 스팟 또는 온디맨드 인스턴스 수를 변경하면 Amazon EC2 Auto Scaling 은 새로운 구매 옵션에 맞추어 기존 인스턴스를 점진적으로 교체합니다.

인스턴스 가중치를 사용하여 Auto Scaling 그룹을 생성하기 전에 인스턴스 유형이 여러 개인 그룹을 시작하는 데 익숙해지는 것이 좋습니다. 자세한 내용과 추가 예는 여러 인스턴스 유형과 구매 옵션으로 구성된 Auto Scaling 그룹 단원을 참조하십시오.

다음 예제에서는 사용 하는 방법을 보여 줍니다.AWS CLIAuto Scaling 그룹을 생성할 때 가중치를 추가하고 기존 Auto Scaling 그룹의 가중치를 추가 또는 수정합니다. JSON 파일에서 다양한 파라미터를 구성한 다음 JSON 파일을 Auto Scaling 그룹의 유일한 파라미터로 참조할 수 있습니다.

Auto Scaling 그룹에 가중치를 추가하려면

  • 사용create-auto-scaling-group명령을 사용하여 새 Auto Scaling 그룹을 생성합니다. 예를 들어 다음 명령은 새 Auto Scaling 그룹을 생성하고 다음을 지정하여 인스턴스 가중치를 추가합니다.

    • 온디맨드 인스턴스로 시작할 그룹의 백분율 (0)

    • 각 가용 영역의 스팟 인스턴스에 대한 할당 전략(capacity-optimized)

    • 우선순위(m4.16xlarge, m5.24xlarge)에 따라 시작할 인스턴스 유형

    • 인스턴스 유형(16, 24) 간의 상대적 크기 차이(vCPU)에 해당하는 인스턴스 가중치

    • 각각 다른 가용 영역에 해당하는 인스턴스를 시작하는 서브넷(subnet-5ea0c127, subnet-6194ea3b, subnet-c934b782)

    • 시작 템플릿(my-launch-template) 및 시작 템플릿 버전($Latest)

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

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

    { "AutoScalingGroupName": "my-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "VPCZoneIdentifier": "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782", "Tags": [] }

기존 Auto Scaling 그룹에 대한 가중치를 추가하거나 수정하려면

  • update-auto-scaling-group 명령을 사용하여 가중치를 추가하거나 수정합니다. 예를 들어 다음을 지정하여 기존 Auto Scaling 그룹의 인스턴스 유형에 가중치를 추가합니다.

    • 우선 순위(c5.18xlarge, c5.24xlarge, c5.2xlarge, c5.4xlarge)에 따라 시작할 인스턴스 유형

    • 인스턴스 유형(18, 24, 2, 4) 간의 상대적 크기 차이(vCPU)에 해당하는 인스턴스 가중치

    • 가장 큰 가중치보다 크게 증가된 새 원하는 용량

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

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

    { "AutoScalingGroupName": "my-existing-asg", "MixedInstancesPolicy": { "LaunchTemplate": { "Overrides": [ { "InstanceType": "c5.18xlarge", "WeightedCapacity": "18" }, { "InstanceType": "c5.24xlarge", "WeightedCapacity": "24" }, { "InstanceType": "c5.2xlarge", "WeightedCapacity": "2" }, { "InstanceType": "c5.4xlarge", "WeightedCapacity": "4" } ] } }, "MinSize": 0, "MaxSize": 100, "DesiredCapacity": 100 }

Auto Scaling 그룹의 가중치를 확인하려면

  • 가중치를 확인하려면 다음 describe-auto-scaling-groups 명령을 사용합니다.

    aws autoscaling describe-auto-scaling-groups --auto-scaling-group-name my-asg

    다음은 응답의 예입니다.

    { "AutoScalingGroups": [ { "AutoScalingGroupName": "my-asg", "AutoScalingGroupARN": "arn", "MixedInstancesPolicy": { "LaunchTemplate": { "LaunchTemplateSpecification": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "$Latest" }, "Overrides": [ { "InstanceType": "m4.16xlarge", "WeightedCapacity": "16" }, { "InstanceType": "m5.24xlarge", "WeightedCapacity": "24" } ] }, "InstancesDistribution": { "OnDemandAllocationStrategy": "prioritized", "OnDemandBaseCapacity": 0, "OnDemandPercentageAboveBaseCapacity": 0, "SpotAllocationStrategy": "capacity-optimized" } }, "MinSize": 160, "MaxSize": 720, "DesiredCapacity": 480, "DefaultCooldown": 300, "AvailabilityZones": [ "us-west-2a", "us-west-2b", "us-west-2c" ], "LoadBalancerNames": [], "TargetGroupARNs": [], "HealthCheckType": "EC2", "HealthCheckGracePeriod": 0, "Instances": [ { "InstanceId": "i-027327f0ace86f499", "InstanceType": "m5.24xlarge", "AvailabilityZone": "us-west-2a", "LifecycleState": "InService", "HealthStatus": "Healthy", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "7" }, "ProtectedFromScaleIn": false, "WeightedCapacity": "24" }, { "InstanceId": "i-0ec0d761cc134878d", "InstanceType": "m4.16xlarge", "AvailabilityZone": "us-west-2a", "LifecycleState": "Pending", "HealthStatus": "Healthy", "LaunchTemplate": { "LaunchTemplateId": "lt-0b97f1e282EXAMPLE", "LaunchTemplateName": "my-launch-template", "Version": "7" }, "ProtectedFromScaleIn": false, "WeightedCapacity": "16" }, ... } ] }