Amazon EC2 Auto Scaling에 대한 대상 추적 조정 정책 - Amazon EC2 Auto Scaling

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

Amazon EC2 Auto Scaling에 대한 대상 추적 조정 정책

대상 추적 조정 정책을 사용하는 경우 조정 지표를 선택하고 대상 값을 설정합니다. Amazon EC2 Auto Scaling 은 조정 정책을 트리거하는 CloudWatch 경보를 생성 및 관리하고 지표와 대상 값을 기준으로 조정 조절을 계산합니다. 조정 정책은 필요에 따라 용량을 추가하거나 제거하여 측정치를 지정한 목표 값으로, 혹은 목표 값에 가깝게 유지합니다. 대상 추적 조정 정책은 지표를 목표 값에 가깝게 유지하는 것 외에도 로드 패턴 변화로 인한 지표의 변화에 따라 조정되기도 합니다.

예를 들어, 다음과 같은 경우에 대상 추적 조정을 사용할 수 있습니다.

  • Auto Scaling 그룹의 평균 총 CPU 사용량을 40% 로 유지하도록 대상 추적 조정 정책을 구성합니다.

  • Auto Scaling 그룹에 대해 Application Load Balancer 대상 그룹의 대상 1개당 요청 수를 유지하도록 대상 추적 조정 정책을 구성합니다.

애플리케이션 요구 사항에 따라, 대상 추적을 사용할 때 이러한 인기 조정 지표 중 하나가 가장 적합하거나 이러한 지표 또는 다른 지표의 조합이 요구 사항을 더 잘 충족할 수도 있습니다.

Considerations

Auto Scaling 그룹에 대해 대상 추적 조정 정책을 생성하기 전에 대상 추적 조정 정책의 다음 특성 및 동작을 이해해야 합니다.

  • 대상 추적 조정 정책은 지정한 측정치가 목표 값을 초과할 때 Auto Scaling 그룹을 확장하도록 되어 있습니다. 대상 추적 조정 정책에서는 지정한 측정치가 목표 값보다 작을 때 Auto Scaling 그룹을 확장할 수 없습니다.

  • 대상 값과 실제 지표 데이터 포인트 사이에는 차이가 발생할 수 있습니다. 추가하거나 제거할 인스턴스 수를 결정할 때마다 항상 반올림 또는 내림을 통해 어림짐작으로 동작하기 때문입니다. 이는 인스턴스를 부족하게 추가하거나 너무 많이 제거하는 일을 방지하기 위해서입니다. 하지만 인스턴스가 줄어서 Auto Scaling 그룹이 작아지는 경우에는 그룹의 사용량이 목표 값에서 멀어질 수도 있습니다. 예를 들어 CPU 사용률 목표값을 50% 로 설정한 후 Auto Scaling 그룹이 목표값을 초과한다고 가정해 보겠습니다. 1.5개의 인스턴스를 추가하면 CPU 활용률이 50% 가까이 감소할 것을 알 수 있습니다. 하지만 1.5개의 인스턴스를 추가할 수 없기 때문에 반올림을 통해 인스턴스 2개를 추가합니다. 그러면 CPU 사용량이 50% 아래로 떨어지는 동시에 애플리케이션은 리소스를 충분히 확보하게 됩니다. 마찬가지로 인스턴스를 1.5개 제거하면 CPU 사용량이 증가하여 50%를 상회한다고 판단할 경우에는 인스턴스를 1개만 제거합니다.

  • 인스턴스가 더 많고 규모가 큰 Auto Scaling 그룹의 경우, 활용도가 더 많은 수의 인스턴스에 분산되므로 인스턴스를 추가 또는 제거하면 대상 값과 실제 측정치 데이터 포인트 간에 차이가 줄어 듭니다.

  • 응용 프로그램 가용성을 보장하기 위해 Auto Scaling 그룹은 가능한 한 빨리 측정치에 비례하여 확장되고 더 점진적으로 축소됩니다.

  • 각각 다른 측정치를 사용한다는 전제 하에 Auto Scaling 그룹에 다수의 대상 추적 조정 정책을 보유할 수 있습니다. Amazon EC2 Auto Scaling 의 목적은 항상 가용성을 우선시하므로 대상 추적 정책이 확장 또는 축소를 허용하는지에 따라 그 동작이 달라집니다. 대상 추적 정책 중 하나라도 확장을 허용할 경우 Auto Scaling 그룹을 확장하지만, 모든 대상 추적 정책 (축소 부분이 활성화됨) 이 축소를 허용하는 경우에만 그룹을 축소합니다. 자세한 내용은 다중 동적 확장 정책 섹션을 참조하세요.

  • 대상 추적 조정 정책에서 축소 부분을 비활성화할 수 있습니다. 이 기능을 사용하면 Auto Scaling 그룹에서 여러 방법을 사용하여 유연하게 조정할 수 있습니다. 예를 들어 축소를 위해 대상 추적 조정 정책을 사용하는 동시에 다른 정책 유형을 사용할 수 있습니다.

  • 대상 추적 조정 정책에 대해 구성된 CloudWatch 경보는 편집하거나 삭제하지 마십시오. 대상 추적 조정 정책과 연결된 CloudWatch 경보는AWS에서 제거되며 더 이상 필요하지 않을 때 자동으로 삭제됩니다.

지표 선택

대상 추적 조정 정책에서는 사전 정의 지표나 사용자 지정 지표를 사용할 수 있습니다.

다음과 같은 사전 정의 지표를 사용할 수 있습니다.

  • ASGAverageCPUUtilization- Auto Scaling 그룹의 평균 CPU 사용률을 나타냅니다.

  • ASGAverageNetworkIn- Auto Scaling 그룹별로 모든 네트워크 인터페이스에서 수신한 평균 바이트 수.

  • ASGAverageNetworkOut- Auto Scaling 그룹별로 모든 네트워크 인터페이스에서 전송한 평균 바이트 수.

  • ALBRequestCountPerTarget- Application Load Balancer 대상 그룹에서 대상별로 이행된 요청 수.

사용자 지정 지표를 지정하여 CloudWatch 에서 사용 가능한 다른 Amazon CloudWatch 지표 또는 고유한 지표를 선택할 수 있습니다. 를 사용해야 합니다.AWS CLI또는 SDK를 사용하여 사용자 지정 지표로 대상 추적 정책을 생성합니다.

지표를 선택하는 경우, 다음 사항에 유의하십시오.

  • 모든 지표를 대상 추적에 사용할 수 있는 것은 아닙니다. 사용자 지정한 지표를 지정할 때 이 방법이 중요할 수 있습니다. 측정치는 유효한 사용량 수치로서 인스턴스의 사용량을 설명해야 합니다. 지표 값은 Auto Scaling 그룹의 인스턴스 수에 비례하여 증가하거나 감소합니다. 즉, 지표 데이터를 사용하여 인스턴스 수에 따라 비례적으로 확장하거나 축소할 수 있습니다. 예를 들어 Auto Scaling 그룹의 CPU 사용량 (즉 Amazon EC2 지표 지표) 이 유효합니다.CPUUtilization측정치 측정치 차원AutoScalingGroupName), Auto Scaling 그룹의 부하가 인스턴스 전체에 분산되어 있는 경우

  • 다음 지표는 대상 추적에 사용할 수 없습니다.

    • Auto Scaling 그룹 앞에 있는 로드 밸런서가 수신하는 요청 수 (Elastic Load Balancing 지표) 입니다.RequestCount). 로드 밸런서가 수신하는 요청 수는 Auto Scaling 그룹의 사용량에 따라 변경되지 않습니다.

    • 로드 밸런서 요청 지연 시간 (Elastic Load Balancing 지표)Latency). 요청 지연 시간은 사용량 증가에 따라 늘어날 수는 있지만 반드시 비례하지는 않습니다.

    • CloudWatch Amazon SQS 대기열 지표ApproximateNumberOfMessagesVisible. 대기열의 메시지 수는 대기열의 메시지를 처리하는 Auto Scaling 그룹의 크기에 비례하여 변경되지 않을 수 있습니다. 그러나 Auto Scaling 그룹의 EC2 인스턴스당 대기열의 메시지 수를 측정하는 사용자 지정 지표는 작동할 수 있습니다. 자세한 내용은 Amazon SQS 기반으로 확장 섹션을 참조하세요.

  • 지정된 지표에 데이터가 없는 경우, 대상 추적 조정 정책이 Auto Scaling 그룹에서 축소되지 않습니다. 단,ALBRequestCountPerTarget지표. 그러한 이유는 ALBRequestCountPerTarget 지표가 관련 데이터가 없는 기간 동안 0을 내보내고, 대상 추적 정책이 지표 데이터로 하여금 활용도가 적은 추세를 해석하도록 요구하기 때문입니다. Auto Scaling 그룹을 Application Load Balancer 대상 그룹으로 라우팅하지 않은 경우 인스턴스 0개로 축소하려면, 그룹의 최소 용량을 0으로 설정해야 합니다.

  • ALBRequestCountPerTarget메트릭을 지정하려면ResourceLabel매개 변수를 사용하여 지표와 연결된 로드 밸런서 대상 그룹을 식별합니다.

Amazon EC2 지표 모니터링

지표 값 변동에 따른 응답 속도를 높이기 위해 지표를 기준으로 한 조정 주기를 1분으로 설정하는 것이 좋습니다. 주기를 5분으로 하면 응답 시간이 느려질 뿐만 아니라 오랜 시간이 지난 측정치 데이터를 기준으로 조정하게 됩니다.

Amazon EC2 지표에 대해 이 수준의 데이터를 가져오려면 세부 모니터링을 활성화해야 합니다. Amazon EC2 인스턴스는 기본 모니터링, 즉 5분 주기로 인스턴스의 지표 데이터를 사용하도록 기본적으로 활성화되어 있습니다. 자세한 내용은 Auto Scaling 인스턴스에 대한 모니터링 구성 섹션을 참조하세요.

인스턴스 워밍업

대상 추적 조정 정책을 생성하면 새로 시작된 인스턴스가 워밍업되는 데 걸리는 시간(초)을 지정할 수 있습니다. 웜 엄이 만료될 때까지 인스턴스는 Auto Scaling 그룹의 집계된 측정치에 포함되지 않습니다.

확장 중에는 웜 업 중인 인스턴스를 그룹의 현재 용량의 부분으로 간주하지 않으므로 시작 시 더 높은 리소스 사용량의 영향을 받지 않습니다. 이를 통해 필요 이상으로 인스턴스를 추가하지 않게 됩니다.

축소 중에는 종료 중인 인스턴스를 그룹의 현재 용량의 부분으로 간주하지 않습니다. 따라서 Auto Scaling 그룹에서 인스턴스를 필요 이상으로 빼지 않습니다.

확장 활동이 진행 중인 동안에는 축소 활동을 시작할 수 없습니다.

대상 추적 조정 정책 생성 (콘솔)

Auto Scaling 그룹을 만들 때 또는 Auto Scaling 그룹을 만든 후에 Auto Scaling 그룹에 대상 추적 조정 정책을 구성하도록 선택할 수 있습니다.

대상 추적 조정 정책을 사용하여 Auto Scaling 그룹을 생성하려면

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

  2. Auto Scaling 그룹 생성을 선택합니다.

  3. 1단계, 2단계, 3단계에서 원하는 옵션을 선택하고단계 4: 그룹 크기 및 조정 정책 구성.

  4. 언더그룹 크기에서 최소 용량과 최대 용량을 업데이트하여 확장할 범위를 지정합니다. 이 두 설정을 사용하면 Auto Scaling 그룹의 크기를 동적으로 조정할 수 있습니다. Amazon EC2 Auto Scaling 은 최소 용량과 최대 용량으로 지정된 값 범위에서 그룹을 확장합니다.

  5. 언더조정 정책를 선택하고대상 추적 조정 정책.

  6. 정책을 정의하려면 다음을 수행합니다.

    1. 정책의 이름을 지정합니다.

    2. 지표 유형에서 지표를 선택합니다.

      당신이 선택한 경우대상당 Application Load Balancer 요청 수에서 대상 그룹을 선택합니다.대상 그룹.

    3. 측정치의 [Target value]를 지정합니다.

    4. (선택 사항) Instances need(인스턴스 필요)에 인스턴스 웜 업 값을 지정합니다. 이렇게 하면 새로 시작된 인스턴스가 CloudWatch 측정치에 기여할 수 있을 때까지의 시간을 제어할 수 있습니다.

    5. (선택 사항) Disable scale in to create only a scale-out policy(축소 정책을 비활성화하여 확장 정책만 생성)을 선택합니다. 이렇게 하면 원할 경우 유형이 다를 때마다 축소 정책을 별도로 생성할 수 있습니다.

  7. Auto Scaling 그룹 생성을 계속합니다. Auto Scaling 그룹이 생성된 후에 조정 정책이 생성됩니다.

기존 Auto Scaling 그룹에 대한 대상 추적 조정 정책을 생성하려면

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

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

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

  3. 최소 용량 및 최대 용량이 적절하게 설정되어 있는지 확인합니다. 예를 들어 그룹이 이미 최대 크기인 경우 확장하려면 새로운 최대값을 지정해야 합니다. Amazon EC2 Auto Scaling 을 통해 최소 용량 미만이거나 최대 용량을 초과하는 그룹을 조정하지 않습니다. 그룹을 업데이트하려면 세부 정보 탭에서 최소 및 최대 용량에 대한 현재 설정을 변경합니다.

  4. 의 자동 조정탭에서조정 정책를 선택하고동적 조정 정책 생성.

  5. 정책을 정의하려면 다음을 수행합니다.

    1. 정책 유형의 경우 기본적으로 Target tracking scaling(대상 추적 조정)을 그대로 둡니다.

    2. 정책의 이름을 지정합니다.

    3. 지표 유형에서 지표를 선택합니다. 지표 유형은 하나만 선택할 수 있습니다. 둘 이상의 지표를 사용하려면 여러 정책을 생성합니다.

      당신이 선택한 경우대상당 Application Load Balancer 요청 수에서 대상 그룹을 선택합니다.대상 그룹.

    4. 측정치의 [Target value]를 지정합니다.

    5. (선택 사항) Instances need(인스턴스 필요)에 인스턴스 웜 업 값을 지정합니다. 이렇게 하면 새로 시작된 인스턴스가 CloudWatch 측정치에 기여할 수 있을 때까지의 시간을 제어할 수 있습니다.

    6. (선택 사항) Disable scale in to create only a scale-out policy(축소 정책을 비활성화하여 확장 정책만 생성)을 선택합니다. 이렇게 하면 원할 경우 유형이 다를 때마다 축소 정책을 별도로 생성할 수 있습니다.

  6. Create를 선택합니다.

대상 추적 조정 정책을 생성하려면 (AWS CLI)

사용AWS CLIAuto Scaling 그룹의 대상 추적 조정 정책을 구성합니다.

1단계: Auto Scaling 그룹 생성

사용Auto Scaling 그룹 생성명령을 사용하여 Auto Scaling 그룹을 생성하려면my-asg시작 구성을 사용하려면my-launch-config. 사용하려는 시작 구성이 없으면 을 호출하여 구성을 생성할 수 있습니다.시작 구성 만들기.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg \ --launch-configuration-name my-launch-config \ --vpc-zone-identifier "subnet-5ea0c127,subnet-6194ea3b,subnet-c934b782" \ --max-size 5 --min-size 1

2단계: 대상 추적 조정 정책을 생성하려면

Auto Scaling 그룹을 생성한 후에는 애플리케이션 로드에 변경이 있는 경우 그룹에서 실행 중인 EC2 인스턴스 수를 늘리거나 줄이라고 Amazon EC2 Auto Scaling에 동적으로 지시하는 대상 추적 조정 정책을 생성할 수 있습니다.

예제: 대상 추적 구성 파일

다음은 평균 CPU 사용률을 40%로 유지하는 대상 추적 구성의 예입니다. 이 구성을 config.json 파일에 저장합니다.

{ "TargetValue": 40.0, "PredefinedMetricSpecification": { "PredefinedMetricType": "ASGAverageCPUUtilization" } }

자세한 내용은 단원을 참조하십시오.PredefinedMetricSpecificationAmazon EC2 Auto Scaling API 참조.

또는 사용자 지정 지표를 생성하고 CloudWatch 에서 각 파라미터에 대한 값을 추가하여 조정에 사용되는 지표를 사용자 지정할 수 있습니다. 다음은 지정된 지표의 평균 사용률을 40%로 유지하는 대상 추적 구성의 예입니다.

{ "TargetValue":40.0, "CustomizedMetricSpecification":{ "MetricName":"MyUtilizationMetric", "Namespace":"MyNamespace", "Dimensions":[ { "Name":"MyOptionalMetricDimensionName", "Value":"MyOptionalMetricDimensionValue" } ], "Statistic":"Average", "Unit":"Percent" } }

자세한 내용은 단원을 참조하십시오.CustomizedMetricSpecificationAmazon EC2 Auto Scaling API 참조.

예: cpu40-target-tracking-scaling-policy

사용put-scaling-policy명령과 함께config.json파일을 사용하여 라는 조정 정책을 생성합니다.cpu40-target-tracking-scaling-policyAuto Scaling 그룹의 평균 CPU 사용률을 40% 로 유지합니다.

aws autoscaling put-scaling-policy --policy-name cpu40-target-tracking-scaling-policy \ --auto-scaling-group-name my-asg --policy-type TargetTrackingScaling \ --target-tracking-configuration file://config.json

이 명령이 성공하면 사용자를 대신하여 생성된 2개의 CloudWatch 경보의 ARN과 이름을 반환합니다.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:228f02c2-c665-4bfd-aaac-8b04080bea3c:autoScalingGroupName/my-asg:policyName/cpu40-target-tracking-scaling-policy", "Alarms": [ { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e", "AlarmName": "TargetTracking-my-asg-AlarmHigh-fc0e4183-23ac-497e-9992-691c9980c38e" }, { "AlarmARN": "arn:aws:cloudwatch:region:account-id:alarm:TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2", "AlarmName": "TargetTracking-my-asg-AlarmLow-61a39305-ed0c-47af-bd9e-471a352ee1a2" } ] }