메뉴
Amazon EC2 Auto Scaling
사용 설명서

Amazon EC2 Auto Scaling의 단순 및 단계 조정 정책

Amazon EC2 Auto Scaling은 초기에 단순 조정 정책만 지원했습니다. 그래서 대상 추적 및 단계 정책을 도입하기 전에는 조정 정책을 생성하면 정책이 단순 조정 정책으로 처리되었습니다.

조정 활동 또는 상태 확인 대체 중에는 지속적으로 경보를 평가하고 그룹을 잠그지 않기 때문에 단일 단계 조절을 하는 경우에는 단순 조정 정책 대신 단계 조정 정책을 사용하는 것이 좋습니다. Auto Scaling 그룹의 인스턴스 수에 비례하여 증가하거나 감소하는 사용률 수치를 기준으로 조정하는 경우 대상 추적 조정 정책을 사용하는 것이 좋습니다. 자세한 내용은 Amazon EC2 Auto Scaling의 대상 추적 조정 정책 단원을 참조하십시오.

단순 조정 정책

조정 활동이 시작된 후 정책은 조정 활동 또는 상태 확인 대체가 완료되고 휴지 기간이 만료될 때까지 기다린 후 추가 경보에 응답해야 합니다. 휴지 기간을 지정하여 이전 활동의 효과가 표시되기 전에 에서 추가 조정 활동을 시작하지 않도록 할 수 있습니다. Auto Scaling 그룹에 연결된 기본 휴지 기간을 사용하거나 정책에 휴지 기간을 지정하여 기본값을 무시할 수 있습니다. 자세한 내용은 Amazon EC2 Auto Scaling의 조정 휴지 단원을 참조하십시오.

단계 조정 정책

조정 활동이 시작된 후 정책은 조정 활동 또는 상태 확인 대체 진행 중에도 추가 경보에 계속 응답합니다. 따라서 위반된 모든 경보는 경보 메시지 수신 시 Amazon EC2 Auto Scaling에 의해 평가됩니다. 확장할 정책을 생성하는 경우 새로 시작된 인스턴스가 집계된 측정치에 기여할 준비가 될 때까지의 예상 워밍업 시간을 지정할 수 있습니다. 자세한 내용은 인스턴스 웜 업 단원을 참조하십시오.

참고

Amazon EC2 Auto Scaling은 단계 조정 정책의 휴지 기간을 지원하지 않습니다. 따라서 이러한 정책에는 휴지 기간을 지정할 수 없고 그룹의 기본 휴지 기간이 적용되지 않습니다.

조정 조절 유형

단계 조정 또는 단순 조정 정책이 실행되면 정책에 지정된 조정 조절을 사용하여 Auto Scaling 그룹의 현재 용량을 변경합니다. 조정 조절은 최대 그룹 크기를 초과하거나 최소 그룹 크기 미만의 그룹 용량으로 변경할 수 없습니다.

Amazon EC2 Auto Scaling은 다음과 같이 단계 조정 및 단순 조정을 위한 조절 유형을 지원합니다.

  • ChangeInCapacity-그룹의 현재 용량을 지정된 수의 인스턴스만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 조절 값은 용량을 줄입니다.

    예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우 이 정책이 수행되면 그룹에 5개의 인스턴스를 추가하여 총 8개의 인스턴스를 만듭니다.

  • ExactCapacity-그룹의 현재 용량을 지정된 수의 인스턴스로 변경합니다. 이 조절 유형에는 양의 값을 지정합니다.

    예: 그룹의 현재 용량이 3개의 인스턴스이고 조절이 5개인 경우 이 정책이 수행되면 용량은 5개의 인스턴스로 변경됩니다.

  • PercentChangeInCapacity-그룹의 현재 용량을 지정된 퍼센트만큼 늘리거나 줄입니다. 양의 값은 용량을 늘리고, 음의 값은 용량을 줄입니다. 결과 값이 정수가 아닌 경우 다음과 같이 반올림(반내림)합니다.

    • 1보다 큰 값은 반내림합니다. 예를 들어, 12.712로 반내림합니다.

    • 0과 1 사이의 값은 1로 반올림합니다. 예를 들어, .671로 반올림합니다.

    • 0과 -1 사이의 값은 1로 반내림합니다. 예를 들어, -.58-1로 반내림합니다.

    • -1보다 작은 값은 반올림합니다. 예를 들어, -6.67-6으로 반올림합니다.

    예: 현재 용량이 10개의 인스턴스이고 조절이 10%인 경우 이 정책이 수행되면 그룹에 1개의 인스턴스가 추가되어 총 11개의 인스턴스가 됩니다.

PercentChangeInCapacity에서 조정할 최소 인스턴스 수를 지정할 수도 있습니다(MinAdjustmentMagnitude 파라미터 또는 콘솔의 [Add instances in increments of at least] 사용). 예를 들어 25퍼센트를 추가하는 정책을 생성하고 최소 증분으로 2개의 인스턴스를 지정한다고 가정해 보십시오. Auto Scaling 그룹에 4개 인스턴스가 있고 조정 정책이 실행되는 경우 4개 인스턴스의 25퍼센트는 1개 인스턴스입니다. 그러나 최소 증분을 2로 지정했기 때문에 2개의 인스턴스가 추가됩니다.

단계 조절

단계 조정 정책을 만드는 경우 하나 이상의 단계 조절을 추가하며 이를 통해 경보 위반의 크기에 따라 조정할 수 있습니다. 각 단계 조절은 조정 조절 유형에 따라 측정치 값의 하한값, 측정치 값의 상한값 및 조정의 양을 지정합니다.

정책에 적용되는 몇 가지 단계 조절 규칙은 다음과 같습니다.

  • 단계 조절의 범위는 중복되거나 격차가 있어서는 안 됩니다.

  • 1단계 조절에만 null 하한값(negative infinity)이 포함될 수 있습니다. 1단계 조절에 음의 하한값이 포함될 경우 null 하한값으로 단계 조절을 해야 합니다.

  • 1단계 조절에만 null 상한값(positive infinity)이 포함될 수 있습니다. 1단계 조절에 양의 상한값이 포함될 경우 null 상한값으로 단계 조절을 해야 합니다.

  • 상한 및 하한값은 동일한 단계 조절에서 null이 될 수 없습니다.

  • 측정치 값이 위반 임계값을 초과할 경우 하한값은 포함되고 상한값은 제외됩니다. 측정치 값이 위반 임계값 미만일 경우 하한값은 제외되고 상한값은 포함됩니다.

Amazon EC2 Auto Scaling은 모든 인스턴스의 측정치 데이터 포인트에 집계 유형을 적용합니다. 집계된 측정치 값을 단계 조절로 정의된 상한값 및 하한값과 비교하여 어느 단계의 조절을 수행할 것인지 결정합니다.

AWS Management 콘솔을 사용하는 경우 상한값과 하한값을 절대값으로 지정합니다. API 또는 CLI를 사용하는 경우 위반 임계값에 상관 관계가 있는 상한값과 하한값을 지정합니다. 예를 들어 위반 임계값이 50이고 조정 조절 유형이 PercentChangeInCapacity인 경보가 있다고 가정해 보십시오. 또한 다음 단계 조절을 하는 확장 및 축소 정책이 있다고 가정해 보십시오.

확장 정책
하한값 상한값 조절 측정치 값

0

10

0

50 <= < 60

10

20

10

60 <= < 70

20

null

30

70 <= < +infinity

축소 정책

하한값 상한값 조절 측정치 값

-10

0

0

40 < <= 50

-20

-10

-10

30 < <= 40

null

-20

-30

-infinity < <= 30

그룹의 현재 용량과 원하는 용량은 둘 다 10개의 인스턴스입니다. 그룹은 현재 및 원하는 용량을 유지하고 집계된 측정치 값은 40을 초과하고 60 미만입니다.

측정치 값이 60이 되면 확장 정책의 2단계 조절(10개의 인스턴스에 10% 합산)에 따라 그룹의 원하는 용량을 1개의 인스턴스만큼 늘려 11개의 인스턴스로 만듭니다. 새 인스턴스가 실행되고 지정된 웜 업 시간이 만료된 후 그룹의 현재 용량을 11개의 인스턴스로 늘립니다. 이 용량 증가 후 측정치 값이 70으로 늘어날 경우 확장 정책의 3단계 조절에 따라(11개의 인스턴스에 30%인 3.3개의 인스턴스를 더하되 3개의 인스턴스로 반내림) 그룹의 원하는 용량을 3개의 인스턴스만큼 더 늘려 14개의 인스턴스로 만듭니다.

측정치 값이 40이 될 경우 축소 정책의 2단계 조절에 따라(14개의 인스턴스에 10%인 1.4개의 인스턴스를 빼되 1개의 인스턴스로 반내림) 그룹의 원하는 용량을 1개의 인스턴스만큼 더 줄여 13개의 인스턴스로 만듭니다. 이 용량 증가 후 측정치 값이 30으로 떨어질 경우 확장 정책의 3단계 조절에 따라(13개의 인스턴스에 30%인 3.9개의 인스턴스를 빼되 3개의 인스턴스로 반내림)그룹의 원하는 용량을 3개의 인스턴스만큼 더 줄여 10개의 인스턴스로 만듭니다.

인스턴스 웜 업

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

확장 중에는 웜 업 중인 인스턴스를 그룹의 현재 용량의 부분으로 간주하지 않습니다. 따라서 여러 개의 경보 위반이 동일한 단계 조절 범위에 해당하는 경우 단일 조정 활동이 이루어집니다. 이를 통해 필요 이상으로 인스턴스를 추가하지 않게 됩니다. 이전 섹션의 예에 따라 새 인스턴스가 아직 웜 업 중인 동안 측정치가 60이 되고 그 후에 62가 된다고 가정해 보십시오. 현재 용량은 여전히 10개의 인스턴스이기 때문에 1개의 인스턴스가 추가되지만(10개의 인스턴스의 10%) 그룹의 원하는 용량이 이미 11개의 인스턴스이기 때문에 원하는 용량을 더 이상 늘리지 않습니다. 하지만 새 인스턴스가 여전히 웜 업 중일 때 측정치가 70이 되면 3개의 인스턴스를 더해야 하지만(10개의 인스턴스의 30%) 그룹의 원하는 용량이 이미 11개이기 때문에 2개의 인스턴스만 더해 원하는 용량을 새로 13개로 만듭니다.

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

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

단계 조정 정책을 가진 Auto Scaling 그룹 만들기

CloudWatch 경보를 사용하여 Auto Scaling 그룹에서 확장 또는 축소를 해야 할 때를 결정하는 조정 정책을 만들 수 있습니다. 각 CloudWatch 경보는 한 가지 측정치를 주시하여 해당 측정치가 정책에 지정한 임계값을 벗어날 경우 Amazon EC2 Auto Scaling에 메시지를 보냅니다. 경보를 사용하여 AWS에서 사용하는 서비스에서 CloudWatch로 전송하는 지표를 모니터링하거나, 사용자 지정 지표를 직접 만들어 모니터링할 수 있습니다.

CloudWatch 경보를 생성할 때 경보 변경 시 이메일 알림을 보내기 위한 Amazon SNS 주제를 지정할 수 있습니다. 자세한 내용은 Amazon CloudWatch 경보 만들기 단원을 참조하십시오.

콘솔을 사용하여 두 개의 조정 정책이 있는 Auto Scaling 그룹을 만듭니다. 하나는 그룹의 용량을 30% 늘리는 확장 정책이고, 다른 하나는 그룹의 용량을 인스턴스 두 개로 줄이는 축소 정책입니다.

지표에 따라 조정되는 Auto Scaling 그룹을 만들려면

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

  2. 탐색 창의 [Auto Scaling] 아래에서 [Auto Scaling Groups]를 선택합니다.

  3. [Create Auto Scaling group]을 선택합니다.

  4. [Create Auto Scaling Group] 페이지에서 다음 중 하나를 수행합니다.

    • [Create an Auto Scaling group from an existing launch configuration]을 선택하고 기존 시작 구성을 선택한 다음 [Next Step]을 선택합니다.

    • 사용하려는 시작 구성이 없는 경우 [Create a new launch configuration]을 선택하고 지침을 따릅니다. 자세한 내용은 시작 구성 만들기 단원을 참조하십시오.

  5. [Configure Auto Scaling group details] 페이지에서 다음을 수행합니다.

    1. [Group name]에 Auto Scaling 그룹 이름을 입력합니다.

    2. [Group size]에 Auto Scaling 그룹의 원하는 용량을 입력합니다.

    3. 시작 구성이 T2 인스턴스 등 VPC가 필요한 인스턴스를 지정할 경우 [Network]에서 VPC를 선택해야 합니다. 그렇지 않고 AWS 계정에서 EC2-Classic을 지원하고 인스턴스에 VPC가 필요하지 않는 경우 Launch info EC2-Classic 또는 VPC를 선택할 수 있습니다.

    4. 이전 단계에서 [VPC]를 선택한 경우 [Subnet]에서 하나 이상의 서브넷을 선택합니다. 이전 단계에서 [EC2-Classic]을 선택한 경우 [Availability Zone(s)]에서 하나 이상의 가용 영역을 선택합니다.

    5. [Next: Configure scaling policies]를 선택합니다.

  6. [Configure scaling policies] 페이지에서 다음 작업을 수행하십시오.

    1. [Use scaling policies to adjust the capacity of this group]을 선택합니다.

    2. [Scale between]으로 시작하는 행을 사용하여 Auto Scaling 그룹의 최소 크기 및 최대 크기를 지정합니다. 예를 들어 그룹이 이미 최대 크기인 경우 확장하려면 새로운 최대값을 지정해야 합니다.

       그룹의 최대 크기 및 최소 크기를 지정합니다.
    3. [Increase Group Size] 아래 확장 정책을 지정합니다. 원할 경우 정책의 이름을 지정하고 [Add new alarm]을 선택합니다.

    4. [Create Alarm] 페이지에서 [create topic]을 선택합니다. [Send a notification to]에 SNS 주제의 이름을 입력합니다. [With these recipients]에 알림을 수신할 하나 이상의 이메일 주소를 입력합니다. 원할 경우 경보의 기본 이름을 사용자 지정 이름으로 변경할 수 있습니다. 그런 다음 정책에 대한 지표와 기준을 지정합니다. 예를 들어 [Whenever](CPU 평균 사용률)를 기본 설정으로 유지할 수 있습니다. [Is]에서 >=을 선택하고 80%를 입력합니다. [For at least]에 1 consecutive period of 5 Minutes를 입력합니다. [Create Alarm]을 선택합니다.

       경보 생성
    5. [Take the action]에서 Add를 선택하고 다음 필드에 30을 입력한 다음 percent of group을 선택합니다. 기본적으로 이 단계 조정의 하한값은 경보 임계값이고 상한값은 null(positive infinity)입니다.

      다른 단계 조정을 추가하려면 [Add step]을 선택합니다. 조정할 최소 인스턴스 수를 설정하려면 [Add instances in increments of at least 1 instance(s)]의 숫자 필드를 업데이트합니다.

      (선택 사항) 기본 설정에 따라 단계가 포함된 조정 정책을 생성하는 것이 좋습니다. 조정 정책을 생성하려면 [Create simple scaling policy]를 선택합니다. 자세한 내용은 조정 정책 유형 섹션을 참조하십시오.

       확장 정책 만들기
    6. [Decrease Group Size] 아래에 축소 정책을 지정합니다. 원할 경우 정책의 이름을 지정하고 [Add new alarm]을 선택합니다.

    7. [Create Alarm] 페이지에서 확장 정책에 대해 만든 것과 동일한 알림을 선택하거나, 축소 정책을 위한 알림을 새로 만들 수 있습니다. 원할 경우 경보의 기본 이름을 사용자 지정 이름으로 변경할 수 있습니다. [Whenever](CPU 평균 사용률)의 기본 설정을 유지합니다. [Is]에서 <=을 선택하고 40%를 입력합니다. [For at least]에 1 consecutive period of 5 Minutes를 입력합니다. [Create Alarm]을 선택합니다.

    8. [Take the action]에서 Remove를 선택하고 다음 필드에 2을 입력한 다음 instances을 선택합니다. 기본적으로 이 단계 조정의 상한값은 경보 임계값이고 하한값은 null(negative infinity)입니다. 다른 단계 조정을 추가하려면 [Add step]을 선택합니다.

      (선택 사항) 기본 설정에 따라 단계가 포함된 조정 정책을 생성하는 것이 좋습니다. 조정 정책을 생성하려면 [Create simple scaling policy]를 선택합니다. 자세한 내용은 조정 정책 유형 섹션을 참조하십시오.

       확장 정책 만들기
    9. [Review]를 선택합니다.

    10. [Review] 페이지에서 [Create Auto Scaling group]을 선택합니다.

  7. 다음 절차에 따라 Auto Scaling 그룹의 조정 정책을 확인합니다.

    1. [Auto Scaling Group creation status] 페이지에서 Auto Scaling 그룹이 성공적으로 생성되었는지 확인합니다. [View your Auto Scaling Groups]를 선택합니다.

    2. [Auto Scaling Groups] 페이지에서 방금 생성한 Auto Scaling 그룹을 선택합니다.

    3. [Activity History] 탭의 [Status] 열에 Auto Scaling 그룹에서 인스턴스를 시작했는지 여부가 표시됩니다.

    4. [Instances] 탭의 [Lifecycle] 열에 인스턴스의 상태가 표시됩니다. 인스턴스를 시작하는 데 약간 시간이 걸립니다. 인스턴스가 시작되면 해당 수명 주기 상태가 InService로 변경됩니다.

      [Health Status] 열에 해당 인스턴스에 대한 EC2 인스턴스 상태 확인 결과가 표시됩니다.

    5. [Scaling Policies] 탭에서 Auto Scaling 그룹에 대해 만든 정책을 확인할 수 있습니다.

AWS CLI를 사용하여 조정 정책 구성

AWS CLI를 사용하여 Auto Scaling 그룹의 단계 조정 정책을 구성합니다.

1단계: Auto Scaling 그룹 생성

다음 create-auto-scaling-group 명령으로 시작 구성 my-lc를 사용하여 my-asg라는 Auto Scaling 그룹을 생성합니다. 사용하려는 시작 구성이 없으면 구성을 생성할 수 있습니다. 자세한 내용은 create-launch-configuration 단원을 참조하십시오.

aws autoscaling create-auto-scaling-group --auto-scaling-group-name my-asg --launch-configuration-name my-lc --max-size 5 --min-size 1 --availability-zones "us-west-2c"

2단계: 조정 정책 생성

지정된 조건이 변경될 때 Auto Scaling 그룹이 무엇을 수행할지 정의하는 조정 정책을 생성할 수 있습니다.

예: my-scaleout-policy

다음 put-scaling-policy 명령으로 그룹 용량을 30% 늘리는 PercentChangeInCapacity 조정 유형을 사용하여 my-scaleout-policy라는 조정 정책을 생성합니다.

aws autoscaling put-scaling-policy --policy-name my-scaleout-policy --auto-scaling-group-name my-asg --scaling-adjustment 30 --adjustment-type PercentChangeInCapacity

출력에는 해당 정책의 고유 이름 역할을 하는 ARN이 포함됩니다. 나중에 ARN 또는 해당 정책 이름과 그룹 이름의 조합을 사용하여 정책을 지정할 수 있습니다. 이 ARN을 안전한 위치에 저장합니다. 해당 정책은 나중에 CloudWatch 경보를 생성할 때 필요합니다.

{ "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:ac542982-cbeb-4294-891c-a5a941dfa787:autoScalingGroupName/my-asg:policyName/my-scaleout-policy }

예: my-scalein-policy

다음 put-scaling-policy 명령으로 그룹 용량을 인스턴스 2개로 줄이는 ChangeInCapacity 조정 유형으로 my-scalein-policy라는 조정 정책을 생성합니다.

aws autoscaling put-scaling-policy --policy-name my-scalein-policy --auto-scaling-group-name my-asg --scaling-adjustment -2 --adjustment-type ChangeInCapacity

출력에 정책에 대한 ARN이 포함됩니다. 이 ARN을 안전한 위치에 저장합니다. 해당 정책은 나중에 CloudWatch 경보를 생성할 때 필요합니다.

{ "PolicyARN": "arn:aws:autoscaling:us-west-2:123456789012:scalingPolicy:4ee9e543-86b5-4121-b53b-aa4c23b5bbcc:autoScalingGroupName/my-asg:policyName/my-scalein-policy }

3단계: CloudWatch 경보 생성

2단계에서는 지정하는 조건이 변경되는 경우 Auto Scaling 그룹에 확장 및 축소하는 방법에 대한 지침을 제공하는 조정 정책을 만들었습니다. 이 단계에서는 조사하려는 지표를 식별하여 경보를 생성하고 조정 조건을 정의한 다음 해당 경보를 조정 정책과 연결합니다.

예: AddCapacity

다음과 같이 CloudWatch put-metric-alarm 명령을 사용하여 지정한 지표의 값이 80을 벗어날 경우 Auto Scaling의 크기를 늘리는 경보를 만듭니다. 예를 들어 모든 인스턴스의 평균 CPU 사용률(CPUUtilization)이 80퍼센트로 증가할 경우 용량을 추가할 수 있습니다. 사용자 지정 지표를 사용하려면 --metric-name에 지표 이름을 지정하고, --namespace에 네임스페이스를 지정합니다.

aws cloudwatch put-metric-alarm --alarm-name AddCapacity --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 120 --threshold 80 --comparison-operator GreaterThanOrEqualToThreshold --dimensions "Name=AutoScalingGroupName,Value=my-asg" --evaluation-periods 2 --alarm-actions PolicyARN

예: RemoveCapacity

다음과 같이 CloudWatch put-metric-alarm 명령을 사용하여 지정한 지표의 값이 40을 벗어날 경우 Auto Scaling의 크기를 줄이는 경보를 만듭니다. 예를 들어 모든 인스턴스의 평균 CPU 사용률(CPUUtilization)이 40퍼센트로 감소할 경우 용량을 제거할 수 있습니다. 사용자 지정 지표를 사용하려면 --metric-name에 지표 이름을 지정하고, --namespace에 네임스페이스를 지정합니다.

aws cloudwatch put-metric-alarm --alarm-name RemoveCapacity --metric-name CPUUtilization --namespace AWS/EC2 --statistic Average --period 120 --threshold 40 --comparison-operator LessThanOrEqualToThreshold --dimensions "Name=AutoScalingGroupName,Value=my-asg" --evaluation-periods 2 --alarm-actions PolicyARN