Amazon EC2 Auto Scaling에 예약된 조정 - Amazon EC2 Auto Scaling

Amazon EC2 Auto Scaling에 예약된 조정

예약된 조정을 사용하면 예측 가능한 부하 변화에 따라 조정 일정을 설정할 수 있습니다. 예를 들어, 매주 수요일에 웹 애플리케이션에 대한 트래픽이 증가하고 목요일까지 높은 상태로 유지되다가 금요일에 줄어들기 시작한다고 가정해 보겠습니다. Amazon EC2 Auto Scaling이 수요일에 용량을 늘리고 금요일에 용량을 줄이도록 일정을 구성할 수 있습니다.

예약된 조정을 사용하려면 예약된 작업을 생성합니다. 예약된 작업이 시간 및 날짜 함수에 따라 자동으로 수행됩니다. 예약된 작업을 생성할 때 크기 조정 활동이 발생할 시간, 조정 작업에 대한 원하는 용량, 최소 및 최대 용량을 새로 지정합니다. 규모를 한 번만 조정하거나 반복되는 일정으로 조정하도록 예약된 작업을 생성할 수 있습니다.

고려 사항

예약된 작업을 만들 경우 다음 사항에 유의해야 합니다.

  • 예약된 작업은 최소, 최대 및 원하는 크기를 지정한 날짜 및 시간에 예약된 작업에 의해 지정된 값으로 설정합니다. 요청에는 이러한 크기 중 하나만 선택적으로 포함할 수 있습니다. 예를 들어 원하는 용량만 지정된 예약된 작업을 생성할 수 있습니다. 그러나 경우에 따라 해당 작업에 지정한 원하는 새 용량이 이러한 제한을 벗어나지 않도록 최소 및 최대 크기를 포함해야 합니다.

  • 기본적으로 사용자가 설정한 반복 일정의 시간대는 UTC(협정 세계시)입니다. 현지 표준 시간대 또는 네트워크의 다른 부분에 대한 표준 시간대와 일치하도록 시간을 변경할 수 있습니다. DST(일광 절약 시간)를 준수하는 시간대를 지정하면 작업이 DST에 맞게 자동으로 조정됩니다.

  • ScheduledActions 프로세스를 일시 중지하여 Auto Scaling 그룹에 대해 예약된 조정을 일시적으로 끌 수 있습니다. 이렇게 하면 예약된 작업을 삭제할 필요 없이 활성 상태가 되는 것을 방지할 수 있습니다. 그런 다음 다시 사용하려는 경우 예약된 조정을 재개할 수 있습니다. 자세한 정보는 Auto Scaling 그룹에 대한 프로세스 일시 중단 및 재개을 참조하십시오.

  • 그룹 전체가 아니라 동일한 그룹 내에서 예약된 작업의 실행 순서가 보장됩니다.

  • 예약된 작업은 대체로 수 초 내에 실행됩니다. 하지만 작업이 예약된 시작 시간에서 최대 2분까지 지연될 수 있습니다. 이것은 Auto Scaling 그룹 내의 예약된 작업은 지정된 순서대로 실행하기 때문이며 예약된 시작 시간이 서로 가까운 작업은 실행하는 데 더 많은 시간이 소요될 수 있습니다.

반복되는 일정

Auto Scaling 그룹의 크기를 반복되는 일정으로 조정하는, 예약된 작업을 생성할 수 있습니다.

AWS CLI 또는 SDK를 사용하여 반복되는 일정을 생성하려면 cron 표현식과 시간대를 지정하여 예정된 작업이 반복되는 시기를 지정합니다. 선택적으로 시작 시간, 종료 시간 또는 두 가지 모두에 대한 날짜 및 시간을 지정할 수 있습니다.

AWS Management Console을 사용하여 반복되는 일정을 생성하려면 예약된 작업의 반복 패턴, 시간대, 시작 시간 및 선택적 종료 시간을 지정합니다. 모든 반복 패턴 옵션은 cron 표현식을 기반으로 합니다. 또는 사용자 지정 cron 표현식을 작성할 수 있습니다.

지원되는 cron 표현식 형식은 다음과 같이 공백으로 구분된 다섯 개의 필드로 구성됩니다. [Minute] [Hour] [Day_of_Month] [Month_of_Year] [Day_of_Week]. 예를 들어, cron 표현식 30 6 * * 2는 매주 화요일 오전 6:30에 발생하는 예약된 작업을 구성합니다. 별표는 필드의 모든 값을 일치시키기 위한 와일드카드로 사용됩니다. cron 표현식의 다른 예는 https://crontab.guru/examples.html을 참조하세요. 이 형식으로 자체 cron 표현식을 작성하는 방법에 대한 자세한 내용은 Crontab을 참조하세요.

시작 시간과 종료 시간은 신중하게 선택합니다. 다음 사항에 유의하세요.

  • 시작 시간을 지정하면 Amazon EC2 Auto Scaling이 해당 시간에 작업을 수행한 다음 지정된 반복에 따라 작업을 수행합니다.

  • 종료 시간을 지정하면 이 시간 이후에는 작업이 반복되지 않습니다. 예약된 작업은 종료 시간이 되면 해당 계정에 존속하지 않습니다.

  • AWS CLI 또는 SDK를 사용하는 경우 시작 시간과 종료 시간은 UTC로 설정해야 합니다.

예약된 작업 생성 및 관리(콘솔)

이 섹션의 절차에 따라 AWS Management Console을 사용하여 예약된 작업을 생성하고 관리합니다.

콘솔을 사용하여 예약된 작업을 생성하고 DST(일광 절약 시간)를 준수하는 표준 시간대를 지정하면 반복되는 일정과 시작 및 종료 시간이 모두 DST에 맞게 자동으로 조정됩니다.

예약된 작업 생성

다음 절차를 완료하여 Auto Scaling 그룹을 조정하기 위한 예약된 작업을 만듭니다.

Auto Scaling 그룹을 위한 예약된 작업을 생성하려면

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

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

    Auto Scaling 그룹(Auto Scaling groups) 페이지 하단에 분할 창이 열립니다.

  3. 자동 조정 탭의 Scheduled actions(예약된 작업)에서 Create scheduled action(예약된 작업 생성)을 선택합니다.

  4. 예약된 작업의 이름을 입력합니다.

  5. Desired capacity(원하는 용량),Min(최소),Max(최대)에서 그룹에 새로 원하는 크기와 최소 및 최대 용량의 새 값을 선택합니다.

  6. Recurrence(반복)에서 사용 가능한 옵션 중 하나를 선택합니다.

    • 반복되는 일정에 따라 조정하려면 Amazon EC2 Auto Scaling에서 예약된 작업을 실행하는 빈도를 선택합니다.

      • Every(간격)로 시작하는 옵션을 선택하면 cron 식이 자동으로 생성됩니다.

      • Cron을 선택하는 경우, 작업을 수행하는 시기를 지정하는 Cron 식을 입력합니다.

    • 한 번만 조정하려면 Once(한 번)를 선택합니다.

  7. Time zone(표준 시간대)에서 시간대를 선택합니다. 기본값은 Etc/UTC입니다.

    참고

    나열된 모든 표준 시간대는 IANA 표준 시간대 데이터베이스에서 가져온 것입니다. 자세한 내용은 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones을 참조하세요.

  8. Specific start time(특정 시작 시간)의 날짜 및 시간을 정의합니다.

    • 반복되는 일정을 선택한 경우 시작 시간은 일련의 반복에서 첫 번째 예약된 작업이 실행되는 시점을 정의합니다.

    • 반복으로 Once(한 번)를 선택하면 시작 시간은 예약된 작업이 실행될 날짜와 시간을 정의합니다.

  9. (선택 사항) 반복되는 일정의 경우Set End Time(종료 시간 설정)을 선택하한 다음 End by(종료 기한)의 날짜 및 시간을 선택하여 종료 시간을 지정할 수 있습니다.

  10. 생성(Create)을 선택합니다. 콘솔에 Auto Scaling 그룹에 대해 예약된 작업이 표시됩니다.

시간, 날짜 및 표준 시간대를 확인합니다.

시간, 날짜 및 시간대가 올바르게 구성되었는지 확인하려면 Auto Scaling 그룹의 자동 크기 조정(Automatic scaling) 탭에 있는 예약된 작업(Scheduled actions) 표에서 시작 시간(Start time), 종료 시간(End time)시간대(Time zone) 값을 확인합니다.

Amazon EC2 Auto Scaling은 Start time(시작 시간)End time(종료 시간)을 지정된 날짜 및 시간에 UTC 오프셋이 적용된 현지 시간으로 표시합니다. UTC 오프셋은 현지 시간과 UTC 간의 시간 및 분 단위 차이입니다. Time zone(표준 시간대) 값은 요청한 시간대를 나타냅니다(예: America/New_York).

위치 기반 표준 시간대(예: America/New_York)는 DST(일광 절약 시간)에 맞게 자동으로 조정됩니다. 그러나 UTC 기반 표준 시간대(예: Etc/UTC)는 절대 시간이며 DST에 맞춰 조정되지 않습니다.

예를 들어, 해당 표준 시간대가 America/New_York인 반복되는 일정이 있습니다. 첫 번째 조정 작업은 DST 시작 전 America/New_York 표준 시간대에 발생합니다. 다음 조정 작업은 DST 시작 후 America/New_York 표준 시간대에 발생합니다. 첫 번째 작업은 현지 시간으로 오전 8시 UTC-5에 시작하며, 두 번째 작업은 현지 시간으로 오전 8시 UTC-4에 시작됩니다.

예약된 작업 업데이트

예약된 작업을 생성한 후 이름을 제외한 모든 설정을 업데이트할 수 있습니다.

예약된 작업을 업데이트하려면

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

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

    Auto Scaling 그룹(Auto Scaling groups) 페이지 하단에 분할 창이 열립니다.

  3. 자동 조정 탭의 Scheduled actions(예약된 작업)에서 예약된 작업을 선택합니다.

  4. 작업, 편집을 선택합니다.

  5. 변경이 필요하면 Save changes(변경 사항 저장)를 선택합니다.

예약된 작업 삭제

더 이상 필요 없는 예약된 작업은 삭제할 수 있습니다.

예약된 작업을 삭제하려면

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

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

  3. 자동 조정 탭의 Scheduled actions(예약된 작업)에서 예약된 작업을 선택합니다.

  4. 작업(Actions), 삭제(Delete)를 선택합니다.

  5. 확인 메시지가 나타나면 예, 삭제합니다를 선택합니다.

예약된 작업 생성 및 관리(AWS CLI)

한 번만 조정하거나 put-scheduled-update-group-action 명령을 사용하여 반복 일정으로 조정하도록 예약된 작업을 생성 및 업데이트할 수 있습니다.

한 번만 발생하는 예약된 작업 생성

지정된 날짜 및 시간에 Auto Scaling 그룹을 한 번만 자동으로 조정하려면 --start-time "YYYY-MM-DDThh:mm:ssZ" 옵션을 사용합니다.

예제: 일회성 확장.

지정된 시간에 Auto Scaling 그룹에서 실행 중인 인스턴스의 수를 늘리려면 다음 명령을 사용합니다.

--start-time에 대해 지정된 날짜와 시간에(2021년 3월 31일 오전 8시 UTC) 현재 해당 그룹의 인스턴스 수가 3개 미만인 경우 인스턴스 3개로 확장됩니다.

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T08:00:00Z" --desired-capacity 3

예제: 일회성 축소.

지정된 시간에 Auto Scaling 그룹에서 실행 중인 인스턴스의 수를 줄이려면 다음 명령을 사용합니다.

--start-time에 대해 지정된 날짜와 시간에(2021년 3월 31일 오후 4시 UTC) 현재 해당 그룹의 인스턴스 수가 2개 이상인 경우 인스턴스 1개로 축소됩니다.

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-one-time-action \ --auto-scaling-group-name my-asg --start-time "2021-03-31T16:00:00Z" --desired-capacity 1

반복되는 일정으로 실행되는 예약된 작업 생성

반복되는 일정으로 조정을 예약하려면 --recurrence "cron expression" 옵션을 사용합니다.

다음은 cron 표현식을 지정하는 예약된 작업의 예입니다.

지정된 일정에(매일 오전 9시 UTC) 현재 해당 그룹의 인스턴스 수가 3개 미만인 경우 인스턴스 3개로 확장됩니다. 그룹의 인스턴스 수가 현재 4개 이상인 경우 인스턴스 3개로 축소됩니다.

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 9 * * *" --desired-capacity 3

시간대를 지정하는 반복 예약 작업 생성

예약 작업은 기본적으로 UTC 시간대로 설정됩니다. 다른 시간대를 지정하려면 --time-zone 옵션을 선택하고 IANA 시간대의 정식 이름(예: America/New_York)을 지정합니다. 자세한 내용은 https://en.wikipedia.org/wiki/List_of_tz_database_time_zones을 참조하세요.

다음은 용량을 조정하기 위해 반복 예약 작업을 생성할 때 --time-zone 옵션을 사용하는 예제입니다.

지정된 일정(매주 월요일~금요일 오후 6시)에 따라 현재 해당 그룹의 인스턴스 수가 2개 미만인 경우 인스턴스 2개로 확장됩니다. 그룹의 인스턴스 수가 현재 3개 이상인 경우 인스턴스 2개로 축소됩니다.

aws autoscaling put-scheduled-update-group-action --scheduled-action-name my-recurring-action \ --auto-scaling-group-name my-asg --recurrence "0 18 * * 1-5" --time-zone "America/New_York" \ --desired-capacity 2

예약된 작업 설명

Auto Scaling 그룹에 대한 예약된 작업을 설명하려면 다음을 describe-scheduled-actions 명령을 사용합니다.

aws autoscaling describe-scheduled-actions --auto-scaling-group-name my-asg

이 명령이 성공하면 다음과 비슷한 출력이 반환됩니다.

{ "ScheduledUpdateGroupActions": [ { "AutoScalingGroupName": "my-asg", "ScheduledActionName": "my-recurring-action", "Recurrence": "30 0 1 1,6,12 *", "ScheduledActionARN": "arn:aws:autoscaling:us-west-2:123456789012:scheduledUpdateGroupAction:8e86b655-b2e6-4410-8f29-b4f094d6871c:autoScalingGroupName/my-asg:scheduledActionName/my-recurring-action", "StartTime": "2020-12-01T00:30:00Z", "Time": "2020-12-01T00:30:00Z", "MinSize": 1, "MaxSize": 6, "DesiredCapacity": 4 } ] }

예약된 작업 삭제

예약된 작업을 삭제하려면 delete-scheduled-action 명령을 사용합니다.

aws autoscaling delete-scheduled-action --auto-scaling-group-name my-asg \ --scheduled-action-name my-recurring-action

제한 사항

  • 예약된 작업의 이름은 Auto Scaling 그룹별로 고유해야 합니다.

  • 예약된 작업은 고유한 시간 값을 가져야 합니다. 다른 크기 조정 활동이 이미 예약된 경우 한 번에 하나의 활동을 예약하려고 시도하면 호출이 거부되고 예약된 시작 시간에 예약된 작업이 이미 있음을 알리는 오류가 반환됩니다.

  • Auto Scaling 그룹당 최대 125개의 예약된 작업을 만들 수 있습니다.