Escalabilidade programada para o Amazon EC2 Auto Scaling - Amazon EC2 Auto Scaling

Escalabilidade programada para o Amazon EC2 Auto Scaling

A escalabilidade programada permite que você defina sua própria programação de escalabilidade de acordo com alterações de carga previsíveis. Por exemplo, vamos supor que toda semana o tráfego para sua aplicação Web comece a aumentar na quarta-feira, permaneça alto na quinta-feira e comece a diminuir na sexta-feira. É possível configurar uma programação para o Amazon EC2 Auto Scaling para aumentar a capacidade na quarta-feira e diminuir a capacidade na sexta-feira.

Para usar a escalabilidade programada, crie ações programadas. As ações programadas são executadas automaticamente como uma função de data e hora. Ao criar uma ação programada, especifique quando a ação de escalabilidade deve ocorrer e os novos tamanhos mínimo e máximo para a ação de escalabilidade. É possível criar ações programadas para escalar uma única vez ou de forma programada.

Considerações

Ao criar uma ação programada, lembre-se do seguinte:

  • Uma ação programada define os tamanhos mínimo, máximo e desejado para o que é especificado pela ação programada no horário especificado. A solicitação pode, opcionalmente, incluir apenas um desses tamanhos. Por exemplo, você pode criar uma ação programada com apenas a capacidade desejada especificada. Em alguns casos, no entanto, você deve incluir os tamanhos mínimo e máximo para garantir que a nova capacidade desejada especificada na ação não esteja fora desses limites.

  • Por padrão, as programações recorrentes definidas por você estão no fuso horário UTC (Tempo Universal Coordenado). É possível alterar o fuso para corresponder a seu fuso horário local ou a um fuso horário de outra parte da rede. Se você especificar um o fuso horário que siga o horário de verão, ele se ajustará automaticamente ao horário de verão (DST).

  • Você pode desativar temporariamente a escalabilidade programada para um grupo do Auto Scaling, suspendendo o processo ScheduledActions. Isso ajuda você a impedir que ações programadas fiquem ativas sem precisar excluí-las. Em seguida, você pode retomar a escalabilidade programada quando quiser usá-la novamente. Para mais informações, consulte Suspender e retomar um processo para um grupo do Auto Scaling.

  • A ordem de execução das ações programadas é garantida no mesmo grupo, mas não das ações programadas entre grupos.

  • Uma ação programada geralmente é executada em segundos. No entanto, a ação pode ser atrasada em até dois minutos da hora de início programada. Como as ações programadas em um grupo do Auto Scaling são executadas na ordem em que são especificadas, as ações com horas de início programadas próximas umas das outras podem demorar mais para serem executadas.

Programações recorrentes

É possível criar ações programadas para escalar seu grupo do Auto Scaling com uma programação recorrente.

Para criar uma programação recorrente usando a AWS CLI ou um SDK, especifique uma expressão cron e um fuso horário para descrever quando essa ação agendada deve ocorrer. Opcionalmente, você pode especificar uma data e hora para a hora de início, a hora de término ou ambas.

Para criar uma programação recorrente usando o AWS Management Console, especifique o padrão de recorrência, o fuso horário, a hora de início e a hora de término opcional da ação programada. Todas as opções de padrão de recorrência são baseadas em expressões do cron. Alternativamente, você pode escrever sua própria expressão do cron personalizada.

A expressão do cron consiste em cinco campos separados por espaços: [Minuto] [Hora] [Dia_do_mês] [Mês_do_ano] [Dia_da_semana]. Por exemplo, a expressão do cron 30 6 * * 2 configura uma ação programada que se repete todas as terças-feiras às 6h30. O asterisco é usado como um curinga para corresponder a todos os valores de um campo. Para obter outros exemplos de expressões do cron, consultehttps://crontab.guru/examples.html. Para obter informações sobre como gravar suas próprias expressões do cron nesse formato, consulte Crontab.

Selecione os horários de início e término cuidadosamente. Lembre-se do seguinte:

  • Se você especificar uma hora de início, o Amazon EC2 Auto Scaling executará a ação nessa hora, e depois executará a ação de acordo com a recorrência especificada.

  • Se você especificar um horário de término, a ação não será mais repetida após esse horário. A ação programada não se manterá na sua conta depois que ela tiver chegado ao fim.

  • O horário de início e o horário de término devem ser definidos em UTC quando você usar a AWS CLI ou um SDK.

Criar e gerenciar ações programadas (console)

Use os procedimentos desta seção para criar e gerenciar ações programadas usando o AWS Management Console.

Se você criar uma ação programada usando o console e especificar um fuso horário que observe o horário de verão (DST), tanto a programação recorrente quanto as horas de início e término se ajustam automaticamente ao horário de verão.

Criar uma ação programada

Conclua o procedimento a seguir para criar uma ação programada para escalar o grupo do Auto Scaling.

Para criar uma ação de escalabilidade programada para um grupo do Auto Scaling

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling).

  3. Na guia Automatic scaling (Escalabilidade automática), em Scheduled actions (Ações programadas), escolha Create scheduled action (Criar ação programada).

  4. Insira um Name (Nome), para a ação programada.

  5. Em Desired capacity (Capacidade desejada), Min. (Mínimo) ,Max (Máximo), escolha o novo tamanho desejado do grupo e a nova capacidade mínima e máxima.

  6. Em Recurrence (Recorrência), selecione uma das opções disponíveis.

    • Se você quiser escalar em uma programação recorrente, escolha com que frequência o Amazon EC2 Auto Scaling deve executar a ação programada.

      • Se você escolher uma opção que começa com Every (A cada), a expressão Cron será criada para você.

      • Se você escolher Cron, insira uma expressão do cron que especifique quando executar a ação, em UTC.

    • Se você quiser escalar apenas uma vez, escolha Once (Uma vez).

  7. Em Time zone (Fuso horário), escolha um fuso horário. O padrão é Etc/UTC.

    nota

    Todos os fusos horários listados são do banco de dados de fuso horário da IANA. Para obter mais informações, consulte https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.

  8. Defina uma data e hora para Specific start time (Horário de início específico).

    • Se você escolher uma programação recorrente, o horário inicial definirá quando a primeira ação programada na série recorrente será executada.

    • Se você escolheu Once (Uma vez) como recorrência, o horário inicial define a data e a hora para a ação programada ser executada.

  9. (Opcional) Para programações recorrentes, você pode especificar uma hora final escolhendo Set End Time (Definir horário de término) e, em seguida, escolher uma data e hora para End by (Encerrar em).

  10. Escolha Create (Criar OpsItem). O console exibe as ações programadas para o grupo do Auto Scaling.

Verifique a hora, a data e o fuso horário

Para verificar se a hora, a data e o fuso horário estão configurados corretamente, verifique os valores Start time (Hora de início), End Time (Hora de término) e Time zone (Fuso horário) na tabela Scheduled actions (Ações programadas) na guia Automatic scaling (Escalabilidade automática) do seu grupo do Auto Scaling.

O Amazon EC2 Auto Scaling mostra os valores de Start time (Horário de início) e End time (Horário de término) no seu horário local com o deslocamento de UTC em vigor na data e hora especificadas. O deslocamento de UTC é a diferença, em horas e minutos, da hora local para a UTC. O valorde Time zone (Fuso horário) mostra seu fuso horário solicitado, por exemplo, America/New_York.

Fusos horários baseados em localização, como America/New_York, são ajustados automaticamente para o horário de verão (DST). No entanto, um fuso horário baseado em UTC, como Etc/UTC, é uma hora absoluta e não se ajustará para o horário de verão.

Por exemplo, você tem uma programação recorrente cujo fuso horário é America/New_York. A primeira ação de escalabilidade acontece no fuso horário America/New_York, antes do horário de verão ser iniciado. A próxima ação de escalabilidade acontece no fuso horário America/New_York, depois do horário de verão ser iniciado. A primeira ação começa às 8:00 UTC-5 na hora local, enquanto a segunda vez começa às 8:00 UTC-4 no horário local.

Atualizar uma ação programada

Depois de criar uma ação programada, você pode atualizar qualquer uma de suas configurações, exceto o nome.

Para atualizar uma ação programada

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Marque a caixa de seleção ao lado do seu grupo do Auto Scaling.

    Um painel dividido é aberto na parte inferior da página Auto Scaling groups (Grupos do Auto Scaling).

  3. Na guia Automatic scaling (Escalabilidade automática) em Scheduled actions (Ações programadas), selecione uma ação programada.

  4. Selecione Ações, Editar.

  5. Faça as alterações necessárias e, em seguida, escolha Save changes (Salvar alterações).

Excluir uma ação programada

Quando você não precisar mais de uma ação programada, poderá excluí-la.

Para excluir uma ação programada

  1. Abra o console do Amazon EC2 em https://console.aws.amazon.com/ec2/ e escolha grupos do Auto Scaling no painel de navegação.

  2. Selecione seu grupo do Auto Scaling.

  3. Na guia Automatic scaling (Escalabilidade automática) em Scheduled actions (Ações programadas), selecione uma ação programada.

  4. Escolha Actions, Delete.

  5. Quando a confirmação for solicitada, escolha Yes, Delete (Sim, excluir).

Criar e gerenciar ações programadas (AWS CLI)

É possível criar e atualizar ações programadas para escalar uma única vez ou em uma programação recorrente usando o comando put-scheduled-update-group-action.

Criar uma ação programada que ocorre apenas uma vez

Para escalar automaticamente seu grupo do Auto Scaling apenas uma vez, em uma data e hora especificada, use a opção --start-time "YYYY-MM-DDThh:mm:ssZ".

Exemplo: para escalar apenas uma vez

Para aumentar o número de instâncias em execução em seu grupo do Auto Scaling em um horário específico, use o comando a seguir.

Na data e hora especificadas por --start-time (8:00 AM UTC em 31 de março de 2021), se o grupo tiver na ocasião menos de 3 instâncias, sofrerá aumento de escala na horizontal para 3 instâncias.

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

Exemplo: para escalar apenas uma vez

Para diminuir o número de instâncias em execução em seu grupo do Auto Scaling em um horário específico, use o comando a seguir.

Na data e hora especificadas por --start-time (4:00 PM UTC em 31 de março de 2021), se o grupo tiver na ocasião mais de uma instância, sofrerá redução de escala na horizontal para uma instância.

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

Criar uma ação programada que é executada em uma programação recorrente

Para programar a escalabilidade em uma programação recorrente, use a opção --recurrence "cron expression".

Veja a seguir um exemplo de uma ação programada que especifica uma expressão do cron.

Na programação especificada (todos os dias às 9:00 AM UTC), se o grupo tiver na ocasião menos de 3 instâncias, sofrerá aumento de escala na horizontal para 3 instâncias. Se o grupo tiver na ocasião mais de 3 instâncias, ele sofrerá redução de escala na horizontal para 3 instâncias.

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

Criar uma ação programada recorrente que especifica um fuso horário

As ações programadas são definidas para o fuso horário UTC por padrão. Para especificar um fuso horário diferente, inclua a opção --time-zone e especifique o nome canônico do fuso horário IANA (America/New_York, por exemplo). Para obter mais informações, consulte https://en.wikipedia.org/wiki/List_of_tz_database_time_zones.

Veja a seguir um exemplo que usa uma opção --time-zone ao criar uma ação programada recorrente para escalar capacidade.

Na programação especificada (de segunda-feira a sexta-feira, às 6:00 PM, horário local), se o grupo tiver na ocasião menos de 2 instâncias, sofrerá aumento de escala na horizontal para 2 instâncias. Se o grupo tiver na ocasião mais de 2 instâncias, ele sofrerá redução de escala na horizontal para 2 instâncias.

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

Descrever ações programadas

Para descrever as ações programadas para um grupo do Auto Scaling, use o seguinte comando describe-scheduled-actions.

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

Se houver êxito, o comando gerará uma saída semelhante à seguinte.

{ "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 } ] }

Excluir uma ação programada

Para excluir uma ação programada, use o seguinte comando delete-scheduled-action.

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

Limitações

  • Os nomes das ações programadas devem ser exclusivos por grupo do Auto Scaling.

  • A ação programada deve ter um valor de tempo exclusivo. Se você tentar programar uma atividade em um momento em que outra atividade de escalabilidade já esteja programada, a chamada será rejeitada e retornará um erro, indicando que já existe uma ação programada com essa hora de início programada.

  • Você pode criar um máximo de 125 ações programadas por grupo do Auto Scaling.