Auto Scaling 그룹에 대한 예측 조정 정책 생성 - Amazon EC2 Auto Scaling

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

Auto Scaling 그룹에 대한 예측 조정 정책 생성

다음 절차는 AWS Management Console 또는 AWS CLI를 사용하여 예측 조정 정책을 생성하는 데 도움이 됩니다.

Auto Scaling 그룹이 새 그룹인 경우, Amazon EC2 Auto Scaling에서 예측을 생성하기 전에 최소 24시간의 데이터를 제공해야 합니다.

예측 조정 정책 생성(콘솔)

예측 조정 정책을 처음 생성하는 경우 콘솔을 사용하여 예측 전용 모드에서 여러 예측 조정 정책을 생성하는 것이 좋습니다. 이를 통해 다양한 지표와 대상 값의 잠재적 효과를 테스트할 수 있습니다. 각 Auto Scaling 그룹에 대해 여러 예측 조정 정책을 생성할 수 있지만 활성 조정에는 하나의 정책만 사용할 수 있습니다.

다음 절차를 사용하여 사전 정의된 지표(CPU, 네트워크 I/O 또는 대상별 Application Load Balancer 요청 수)를 사용하여 예측 조정 정책을 생성합니다. 예측 조정 정책을 만드는 가장 쉬운 방법은 미리 정의된 지표를 사용하는 것입니다. 사용자 지정 지표를 사용하려는 경우, 콘솔에서 예측 조정 정책 생성(사용자 지정 지표)을 참조하세요.

예측 조정 정책을 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 열고 탐색 창에서 Auto Scaling 그룹(Auto Scaling Groups)을 선택합니다.

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

    페이지 하단에 분할 창이 열립니다.

  3. Automatic scaling(자동 조정) 탭의 Scaling policies(조정 정책)에서 Create predictive scaling policy(예측 조정 정책 생성)를 선택합니다.

  4. 정책의 이름을 입력합니다.

  5. Scale based on forecast(예상 기반 조정)를 켜 Amazon EC2 Auto Scaling에 바로 조정을 시작할 수 있는 권한을 부여합니다.

    정책을 예상 전용 모드에서 유지하려면 Scale based on forecast(예상 기반 조정)를 끕니다.

  6. Metrics(지표)의 경우, 옵션 목록에서 지표를 선택합니다. 옵션에는 CPU,Network In(네트워크 입력),Network Out(네트워크 출력),Application Load Balancer request count(Application Load Balancer 요청 횟수)Custom metric pair(사용자 지정 지표 페어)가 포함됩니다.

    Application Load Balancer request count per target(대상당 Application Load Balancer 요청 수)을 선택한 경우, Target group(대상 그룹)에서 대상 그룹을 선택합니다. Application Load Balancer request count per target(대상별 Application Load Balancer 요청 수)는 Auto Scaling 그룹에 Application Load Balancer 대상 그룹을 연결한 경우에만 지원됩니다.

    Custom metric pair(사용자 지정 지표 쌍)를 선택하면 Load metric(로드 지표)Scaling metric(조정 지표)의 드롭다운 목록에서 개별 지표를 선택합니다.

  7. Target utilization(목표 사용률)에는 Amazon EC2 Auto Scaling이 유지해야 하는 목푯값을 입력합니다. Amazon EC2 Auto Scaling은 평균 사용률이 목표 사용률이 될 때까지 또는 사용자가 지정한 최대 인스턴스 수에 도달할 때까지 용량을 스케일 아웃합니다.

    조정 지표 목표 사용률의 의미
    CPU

    각 인스턴스가 이상적으로 사용해야 하는 CPU의 백분율

    네트워크 입력

    각 인스턴스가 이상적으로 수신해야 하는 분당 평균 바이트 수

    네트워크 출력

    각 인스턴스가 이상적으로 전송해야 하는 분당 평균 바이트 수

    대상당 Application Load Balancer 요청 수

    각 인스턴스가 이상적으로 수신해야 하는 분당 평균 요청 수

  8. (옵션) Pre-launch instances(사전 인스턴스 시작)에서는 로드 증가에 대한 예상을 호출하기 전 인스턴스를 미리 시작하려는 시간을 선택합니다.

  9. (옵션) Max capacity behavior(최대 용량 동작)에서는 예상 용량이 정의된 최대 용량을 초과할 때 Amazon EC2 Auto Scaling이 그룹의 최대 용량보다 더 많이 스케일 아웃되도록 허용할지를 선택합니다. 이 설정을 켜면 트래픽이 가장 높을 것으로 예측되는 기간에 스케일 아웃이 발생할 수 있습니다.

  10. (옵션) Buffer maximum capacity above the forecasted capacity(예상 용량을 초과하는 버퍼 최대 용량)에서 예상 용량이 최대 용량에 근접하거나 최대 용량을 초과하는 경우, 사용할 추가 용량을 선택합니다. 값은 예측 용량에 상대적인 백분율로 지정됩니다. 예컨대, 버퍼가 10이면 이는 10% 버퍼를 의미합니다. 따라서 예상 용량이 50이고 최대 용량이 40이라면 최대 유효 용량은 55입니다.

    0으로 설정하면 Amazon EC2 Auto Scaling이 최대 용량보다 크게 용량을 조정할 수 있지만 예상 용량을 초과할 수 없습니다.

  11. 예측 조정 정책 생성을 선택합니다.

사용자 지정 지표를 사용하여 예측 조정 정책을 생성하려면 다음 절차를 따르세요. 사용자 지정 지표에는 CloudWatch에서 제공하는 다른 지표 또는 CloudWatch에 게시하는 지표가 포함될 수 있습니다. 대상별 CPU, 네트워크 I/O 또는 Application Load Balancer 요청 수를 사용하려면 콘솔에서 예측 조정 정책 생성(사전 정의된 지표)을 참조하세요.

사용자 지정 지표를 사용하여 예측 조정 정책을 생성하려면 다음을 수행해야 합니다.

  • Amazon EC2 Auto Scaling이 CloudWatch의 지표와 상호 작용할 수 있도록 원시 쿼리를 제공해야 합니다. 자세한 내용은 사용자 정의 지표를 사용하는 고급 예측 조정 정책 섹션을 참조하세요. Amazon EC2 Auto Scaling이 CloudWatch에서 지표 데이터를 추출할 수 있도록 하려면 각 쿼리가 데이터 포인트를 반환하는지 확인하세요. CloudWatch 콘솔 또는 CloudWatch GetMetricData API 작업을 사용하여 이를 확인합니다.

    참고

    Amazon EC2 Auto Scaling 콘솔의 JSON 편집기에서 샘플 JSON 페이로드를 제공합니다. 이 예에서는 AWS에서 제공하는 다른 CloudWatch 지표 또는 이전에 CloudWatch에 게시한 지표를 추가하는 데 필요한 키-값 쌍에 대한 참조를 제공합니다. 이를 시작점으로 사용한 다음 필요에 맞게 사용자 지정할 수 있습니다.

  • 지표 수학을 사용하는 경우, 고유한 시나리오에 맞게 JSON을 수동으로 구성해야 합니다. 자세한 내용은 지표 수학 표현식 사용 섹션을 참조하세요. 정책에서 지표 수학을 사용하기 전에 지표 수학 표현식에 근거하여 하는 지표 쿼리가 유효한지 확인하고 단일 시계열을 반환해야 합니다. CloudWatch 콘솔 또는 CloudWatch GetMetricData API 작업을 사용하여 이를 확인합니다.

잘못된 Auto Scaling 그룹 명칭과 같이 잘못된 데이터를 제공하여 쿼리에 오류가 발생하면 예측에 데이터가 없습니다. 사용자 지정 지표 문제 해결 방법은 예측 조정 정책에서 사용자 정의 지표 사용 시 고려 사항을 참조하세요.

예측 조정 정책을 생성하려면
  1. https://console.aws.amazon.com/ec2/에서 Amazon EC2 콘솔을 열고 탐색 창에서 Auto Scaling 그룹(Auto Scaling Groups)을 선택합니다.

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

    페이지 하단에 분할 창이 열립니다.

  3. Automatic scaling(자동 조정) 탭의 Scaling policies(조정 정책)에서 Create predictive scaling policy(예측 조정 정책 생성)를 선택합니다.

  4. 정책의 이름을 입력합니다.

  5. Scale based on forecast(예상 기반 조정)를 켜 Amazon EC2 Auto Scaling에 바로 조정을 시작할 수 있는 권한을 부여합니다.

    정책을 예상 전용 모드에서 유지하려면 Scale based on forecast(예상 기반 조정)를 끕니다.

  6. Metrics(지표)에서 Custom metric pair(사용자 지정 지표 쌍)을 선택합니다.

    1. Load metric(로드 지표)에서 Custom CloudWatch metric(사용자 지정 CloudWatch 지표)을 선택하여 사용자 지정 지표를 사용합니다. 정책에 대한 로드 지표 정의가 포함된 JSON 페이로드를 구성하고 이를 JSON 편집기 상자에 붙여넣고 상자에 이미 있는 것을 교체합니다.

    2. Scaling metric(스케일 아웃 지표)에서 Custom CloudWatch metric(사용자 지정 CloudWatch 지표)을 선택하여 사용자 지정 지표를 사용합니다. 정책에 대한 스케일 아웃 지표 정의가 포함된 JSON 페이로드를 구성하고 이를 JSON 편집기 상자에 붙여넣고 상자에 이미 있는 것을 교체합니다.

    3. (옵션) 사용자 지정 용량 지표를 추가하려면 Add custom capacity metric(사용자 지정 용량 지표 추가) 확인란을 선택합니다. 정책에 대한 용량 지표 정의가 포함된 JSON 페이로드를 구성하고 이를 JSON 편집기 상자에 붙여넣고 상자에 이미 있는 것을 교체합니다.

      용량 지표 데이터가 여러 Auto Scaling 그룹에 걸쳐 있는 경우, 용량에 대한 새 시계열을 생성하려면 이 옵션을 활성화하기만 하면 됩니다. 이 경우, 지표 수학을 사용하여 데이터를 단일 시계열로 집계해야 합니다.

  7. Target utilization(목표 사용률)에는 Amazon EC2 Auto Scaling이 유지해야 하는 목푯값을 입력합니다. Amazon EC2 Auto Scaling은 평균 사용률이 목표 사용률이 될 때까지 또는 사용자가 지정한 최대 인스턴스 수에 도달할 때까지 용량을 스케일 아웃합니다.

  8. (옵션) Pre-launch instances(사전 인스턴스 시작)에서는 로드 증가에 대한 예상을 호출하기 전 인스턴스를 미리 시작하려는 시간을 선택합니다.

  9. (옵션) Max capacity behavior(최대 용량 동작)에서는 예상 용량이 정의된 최대 용량을 초과할 때 Amazon EC2 Auto Scaling이 그룹의 최대 용량보다 더 많이 스케일 아웃되도록 허용할지를 선택합니다. 이 설정을 켜면 트래픽이 가장 높을 것으로 예측되는 기간에 스케일 아웃이 발생할 수 있습니다.

  10. (옵션) Buffer maximum capacity above the forecasted capacity(예상 용량을 초과하는 버퍼 최대 용량)에서 예상 용량이 최대 용량에 근접하거나 최대 용량을 초과하는 경우, 사용할 추가 용량을 선택합니다. 값은 예측 용량에 상대적인 백분율로 지정됩니다. 예컨대, 버퍼가 10이면 이는 10% 버퍼를 의미합니다. 따라서 예상 용량이 50이고 최대 용량이 40이라면 최대 유효 용량은 55입니다.

    0으로 설정하면 Amazon EC2 Auto Scaling이 최대 용량보다 크게 용량을 조정할 수 있지만 예상 용량을 초과할 수 없습니다.

  11. 예측 조정 정책 생성을 선택합니다.

예측 조정 정책 생성(AWS CLI)

다음과 같이 AWS CLI를 사용하여 Auto Scaling 그룹의 예측 조정 정책을 구성합니다. user input placeholder를 사용자의 정보로 바꿉니다.

지정 가능한 CloudWatch 지표에 대한 자세한 내용은 Amazon EC2 Auto Scaling API 참조PredictiveScalingMetricSpecification을 참조하세요.

예 1: 예측을 생성하지만 조정하지 않는 예측 조정 정책

다음 예 정책은 목표 사용률이 40인 예측 조정에 CPU 사용률 지표를 사용하는 전체 정책 구성을 보여 줍니다. ForecastOnly 모드는 사용할 모드를 명시적으로 지정하지 않는 한 기본적으로 사용됩니다. 이 구성을 config.json 파일에 저장합니다.

{ "MetricSpecifications": [ { "TargetValue": 40, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ] }

명령행에서 정책을 생성하려면 다음 예에 나와 있는 것처럼 지정된 구성 파일을 사용하여 put-scaling-policy 명령을 실행합니다.

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

이 명령이 제대로 실행되면 정책의 Amazon 리소스 이름(ARN)을 반환합니다.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:2f4f5048-d8a8-4d14-b13a-d1905620f345:autoScalingGroupName/my-asg:policyName/cpu40-predictive-scaling-policy", "Alarms": [] }

예 2: 예측하여 조정하는 예측 조정 정책

Amazon EC2 Auto Scaling이 예상하여 조정할 수 있도록 허용하는 정책의 경우, 값이 ForecastAndScale인 속성 Mode를 추가합니다. 다음 예에서는 Application Load Balancer 요청 수 지표를 사용하는 정책 구성을 보여 줍니다. 목표 사용률은 1000이고 예측 조정은 ForecastAndScale 모드로 설정되어 있습니다.

{ "MetricSpecifications": [ { "TargetValue": 1000, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ALBRequestCount", "ResourceLabel": "app/my-alb/778d41231b141a0f/targetgroup/my-alb-target-group/943f017f100becff" } } ], "Mode": "ForecastAndScale" }

이 정책을 생성하려면 다음 예에 나와 있는 것처럼 지정된 구성 파일을 사용하여 put-scaling-policy 명령을 실행합니다.

aws autoscaling put-scaling-policy --policy-name alb1000-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

이 명령이 제대로 실행되면 정책의 Amazon 리소스 이름(ARN)을 반환합니다.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:19556d63-7914-4997-8c81-d27ca5241386:autoScalingGroupName/my-asg:policyName/alb1000-predictive-scaling-policy", "Alarms": [] }

예 3: 최대 용량보다 높게 조정할 수 있는 예측 조정 정책

다음 예에서는 일반보다 높은 부하를 처리해야 할 때 그룹의 최대 크기 제한보다 높게 조정할 수 있는 정책을 생성하는 방법을 보여 줍니다. 기본적으로 Amazon EC2 Auto Scaling은 사용자가 정의한 최대 용량보다 높게 EC2 용량을 조정하지 않습니다. 그러나 성능 또는 가용성 문제를 피하기 위해 용량을 약간 늘려서 스케일 아웃하는 것이 도움이 될 수 있습니다.

용량이 그룹의 최대 크기에 도달했거나 매우 근접한 것으로 예상될 때 Amazon EC2 Auto Scaling을 위한 추가 용량을 프로비저닝할 수 있는 여유를 제공하려면 다음 예에 표시된 것처럼 MaxCapacityBreachBehaviorMaxCapacityBuffer 속성을 지정합니다. MaxCapacityBreachBehavior를 값 IncreaseMaxCapacity로 지정해야 합니다. 그룹에서 보유할 수 있는 최대 인스턴스 수는 MaxCapacityBuffer의 값에 따라 달라집니다.

{ "MetricSpecifications": [ { "TargetValue": 70, "PredefinedMetricPairSpecification": { "PredefinedMetricType": "ASGCPUUtilization" } } ], "MaxCapacityBreachBehavior": "IncreaseMaxCapacity", "MaxCapacityBuffer": 10 }

이 예에서는 10% 버퍼("MaxCapacityBuffer": 10)를 사용하도록 구성되어 있습니다. 따라서 예상 용량이 50이고 최대 용량이 40이라면 최대 유효 용량은 55입니다. 최대 용량보다 높은 용량을 예측 용량을 초과하지 않고 예측 용량과 동일하게 조정할 수 있는 정책의 버퍼는 0입니다("MaxCapacityBuffer": 0).

이 정책을 생성하려면 다음 예에 나와 있는 것처럼 지정된 구성 파일을 사용하여 put-scaling-policy 명령을 실행합니다.

aws autoscaling put-scaling-policy --policy-name cpu70-predictive-scaling-policy \ --auto-scaling-group-name my-asg --policy-type PredictiveScaling \ --predictive-scaling-configuration file://config.json

이 명령이 제대로 실행되면 정책의 Amazon 리소스 이름(ARN)을 반환합니다.

{ "PolicyARN": "arn:aws:autoscaling:region:account-id:scalingPolicy:d02ef525-8651-4314-bf14-888331ebd04f:autoScalingGroupName/my-asg:policyName/cpu70-predictive-scaling-policy", "Alarms": [] }