AWS Associate

Auto Scaling

Uma vantagem distinta da implantação de aplicativos na nuvem é a capacidade de iniciar e depois liberar servidores em resposta a cargas de trabalho variáveis.

Os servidores de provisionamento sob demanda são uma vantagem quando alocamos e, em seguida, liberamos quando eles não são mais necessários, podem fornecer economias significativas de custos para as cargas de trabalho que não são estáveis. Os exemplos incluem um site para um evento esportivo específico, um sistema de entrada de dados de fim de mês, um site de compras de varejo que suporta vendas instantâneas, um site de artistas de música durante o lançamento de novas músicas, um site da empresa anunciando ganhos bem-sucedidos ou um programa noturno de processamento executado para calcular a atividade diária.

O Auto Scaling é um serviço que permite dimensionar sua capacidade do Amazon EC2 automaticamente, reduzindo e dimensionando de acordo com os critérios que você define. Com o Auto Scaling, você pode garantir que o número de instâncias do Amazon EC2 em execução aumente durante os períodos de demanda ou em períodos de demanda de pico para manter o desempenho do aplicativo e diminui automaticamente durante as praticas ou as baixas da demanda para minimizar os custos.

Sem medo de picos de consumo

Muitos aplicativos da Web têm aumentos de carga não planejados com base em eventos fora do seu controle. Por exemplo, sua empresa pode ser mencionada em um blog ou programa de televisão popular que leva muitas pessoas para visitar seu site do que o esperado. Configurar a escala automática com antecedência permitirá que você previna-se e sobreviva a esse tipo de aumento rápido na quantidade de pedidos. O Auto Scaling aumentará o seu site para atender ao aumento da demanda e, em seguida, irá reduzir a escala quando o evento diminuir.

Planos de escala automáticos

A escala automática tem vários esquemas ou planos que você pode usar para controlar como você deseja que a escala automática seja executada.

Manter os Níveis de Instância Atuais

Você pode configurar seu grupo de escala automática para manter um número mínimo ou especificado de instâncias em execução o tempo todo. Para manter os níveis de instância atuais, o Auto Scaling executa uma verificação de integridade periódica nas instâncias em execução em um grupo de escala automática. Quando o Auto Scaling encontra uma instância unhealth, ele encerra essa instância e lança uma nova.

Cargas de trabalho estável que precisam de um número consistente de instâncias da Amazon EC2 podem usar o Auto Scaling para monitorar e manter esse número específico de instâncias da Amazon EC2 em execução.

Escala manual

O dimensionamento manual é a maneira mais básica de dimensionar seus recursos. Você só precisa especificar a alteração na capacidade máxima, mínima ou desejada do seu grupo de dimensionamento automático. A escala automática gerencia o processo de criação ou encerramento de instâncias para manter a capacidade atualizada.

O dimensionamento manual pode ser muito útil para aumentar os recursos para um evento pouco frequente, como o lançamento de uma nova versão do jogo que estará disponível para download e requer um registro de usuário. Para eventos de grande escala, mesmo os equilibradores de carga Elastic Load Balancing devem ser medidos e calibrados com a ajuda de ferramentas e planos de testes.

Escala programada

Às vezes, você sabe exatamente quando você precisará aumentar ou diminuir o número de instâncias em seu grupo, simplesmente porque essa necessidade surge em um cronograma previsível. Os exemplos incluem eventos periódicos, como o fim do mês, o fim do trimestre ou o processamento de fim de ano, além de outros eventos previsíveis e recorrentes. O escalonamento programado significa que as ações de escala são executadas automaticamente como uma função de hora e data.

Eventos recorrentes, como processamento de fim de mês, trimestre ou ano, ou agendamento programado e testes automáticos de carga e desempenho recorrentes, podem ser antecipados e a escala pode ser aumentada adequadamente no momento do evento agendado.

Escalação Dinâmica

O dimensionamento dinâmico permite definir parâmetros que controlam o processo de escala automática em uma política de dimensionamento. Por exemplo, você pode criar uma política que adicione mais instâncias da Amazon EC2 à camada da web quando a largura de banda da rede, medida pelo Amazon CloudWatch, atinge um determinado limite. Ex: CPU, memória, etc.

Componentes de escala automáticos

A escala automática tem vários componentes que precisam ser configurados para funcionar corretamente: uma configuração de inicialização, um grupo de escala automática e uma política de escala opcional.

Configuração de lançamento

Uma configuração de lançamento é o modelo que o Auto Scaling usa para criar novas instâncias, e é composto pelo nome da configuração, AMI, Amazon EC2, tipo de instância, grupo de segurança e par de chaves de instância. Cada grupo de escala automática pode ter apenas uma configuração de inicialização por vez.

O comando CLI que a abaixo, como exemplo, criará uma configuração de inicialização com os seguinte atributos:

Nome: myLC
AMI: ami-0535d66c
Tipo de instância: m3.medium
Grupos de segurança: sg-f57cde9d
Par de chaves da instância: myKeyPair

aws autoscaling create-launch-configuration -–launch-configuration-name myLC –image-id ami-0535d66c –instance-type m3.medium –security-groups sg-f57cde9d –key-name myKeyPair

O limite padrão para configurações de inicialização é 100 por região.  Você pode visualizar e atualizar este limite executando os limites de descrição-conta na linha de comando, como mostrado aqui.

aws autoscaling describe-account-limits

A escala automática pode fazer com que você alcance os limites de outros serviços, como o número padrão de instâncias Amazon EC2 que você pode iniciar atualmente dentro de uma região, que é 20. Ao construir arquiteturas mais complexas com a AWS, é importante ter em mente o serviço limites para todos os serviços AWS Cloud que você está usando.

Quando você executa um comando usando a CLI e ele falha, verifique sua sintaxe primeiro. E verifique os limites do comando que está tentando e verifique se você não excedeu um limite. Alguns limites podem ser aumentados e geralmente não aderentes a um valor razoável para limitar uma condição inicial, um script errado executado em um loop, ou outra automação similar que pode causar o alto uso não intencional e o faturamento de recursos AWS. Os limites do serviço AWS podem ser vistos no Guia de Referência Geral da AWS sob limites de serviço da AWS. Você pode aumentar seus limites criando um caso de suporte no Centro de Suporte AWS on-line e, em seguida, escolhendo Aumento de Limite de Serviço em relação a. Em seguida, preencha o serviço apropriado e limite para aumentar o valor no formulário on-line.

Grupo de escala automática

Um grupo de escala automática é uma coleção de instâncias do Amazon EC2 gerenciadas pelo serviço de dimensionamento automático. Cada grupo de escala automática contém opções de configuração que controlam quando a escala automática deve iniciar novas instâncias e encerrar as instâncias existentes. Um grupo de escala automática deve conter um nome e um número mínimo e máximo de instâncias que podem estar no grupo. Você pode opcionalmente especificar a capacidade desejada, que é o número de instâncias que o grupo deve ter em todos os momentos. Se você não especificar a capacidade desejada, a capacidade desejada padrão é o número mínimo de instâncias que você especifica.

O comando CLI abaixo criará um grupo de escala automática que faz referência à configuração de inicialização anterior e inclui as seguintes especificações:

Nome: myASG
Configuração de lançamento: myLC
Zonas de disponibilidade: us-east-1a e us-east-1c
Tamanho mínimo: 1
Capacidade desejada: 3
Capacidade máxima: 10
Load Balancers: myELB

aws autoscaling create-auto-scaling-group –auto–scaling-group-name myASG –launch-configuration-name myLC –availability-zones us-east-1a, us-east-1c –minsize 1 –max-size 10 –desired-capacity 3 –load-balancer-names myELB

Um grupo de escala automática pode usar On-Demand ou Spot Instances como as instâncias Amazon EC2 que administra. On-Demand é o padrão, mas as Instâncias Spot podem ser usadas fazendo referência a um preço máximo de lance na configuração de inicialização (-spot-price “0.15”) associado ao grupo Auto Scaling. Você pode alterar o preço da oferta criando uma nova configuração de lançamento com o novo preço de lance e depois associando-o ao seu grupo de escala automática. Se as instâncias estiverem disponíveis em ou abaixo do preço de lance, elas serão lançadas no seu grupo de escala automática.

As Instâncias Spot em um grupo Auto Scaling seguem as mesmas diretrizes que as instâncias Spot fora de um grupo Auto Scaling e exigem aplicativos flexíveis e tolerem as instâncias do Amazon EC2 que são encerradas com aviso prévio, por exemplo, quando o preço Spot sobe acima do preço da oferta você configurou a configuração de inicialização.

Uma configuração de inicialização pode fazer referência às Instâncias On-Demand ou Instâncias Spot, mas não ambas.

Rodando com Spot

O Auto Scaling suporta o uso de instâncias Spot de custo efetivo. Isso pode ser muito útil quando você hospeda sites onde você deseja fornecer capacidade de computação adicional, mas tem restrições de preço. As Instâncias Spot podem ser usadas para fornecer a funcionalidade básica quando disponível, referenciando um preço de lance máximo na configuração de inicialização (-spot-price “0.15”) associado ao grupo Auto Scaling.

Política de escala

Você pode associar alarmes do Amazon CloudWatch e políticas de escala com um grupo de escala automática para ajustar a escala automática dinamicamente. Quando um limite é cruzado, o Amazon CloudWatch envia alarmes para ativar mudanças (escalar dentro ou fora) para o número de instâncias do Amazon EC2 atualmente recebendo tráfego por trás de um balanceador de carga. Depois que o alarme Amazon CloudWatch envia uma mensagem para o grupo Auto Scaling, o Auto Scaling executa a política associada para dimensionar seu grupo.

A política é um conjunto de instruções que indicam a escala automática, seja a escala, lançando novas instâncias do Amazon EC2 referenciadas na configuração de lançamento associada, ou para escalar e encerrar instâncias.

Existem várias maneiras de configurar uma política de escala: você pode aumentar ou diminuir por um número específico de instâncias, como a adição de duas instâncias; Você pode segmentar um número específico de instâncias, como um máximo de cinco instâncias totais do Amazon EC2; ou você pode ajustar com base em uma porcentagem.

Você também pode escalar por etapas e aumentar ou diminuir a capacidade atual do grupo com base em um conjunto de ajustes de escala que variam de acordo com o tamanho do gatilho do limite de alarme.

Você pode associar mais de uma política de escala a um grupo de escala automática. Por exemplo, você pode criar uma política usando o gatilho para a utilização da CPU, chamada CPULoad, ou outro atributo de inventário da CloudWatch para especificar a redução de escala se a utilização da CPU for superior a 75 por cento durante dois minutos.

Você pode anexar outra política ao mesmo grupo de escala automática para escalar se a utilização da CPU for inferior a 40% durante 20 minutos.

Os seguintes comandos CLI criarão a política de escala que acabamos de descrever.

aws autoscaling put-scaling-policy –auto-scaling-group-name myASG –policy-name CPULoadScaleOut –scaling-adjustment 1 –adjustment-type ChangeInCapacity –cooldown 30 > aws autoscaling put-scaling-policy –auto-scaling-group-name myASG –policy-name CPULoadScaleIn –scaling-adjustment -1 –adjustment-type
ChangeInCapacity –cooldown 600

Uma ação recomendada é escalar rapidamente e dimensionar lentamente para que você possa responder a rajadas, mas evite inadvertidamente encerrar as instâncias do Amazon EC2 com muita rapidez, apenas tendo que iniciar mais instâncias do Amazon EC2 se o pico for mantido.

O Auto Scaling também suporta um período de cooldown, que é uma ação configurável que determina quando suspender atividades de dimensionamento por um curto período de tempo para um grupo de escala automática. Se você iniciar uma instância do Amazon EC2, você será cobrado por uma hora completa de tempo de execução.

As horas parciais de instância consumidas são faturadas como horas completas. Isso significa que, se você tiver uma política de escala permissiva que lança, encerre e relança várias instâncias por hora, você está cobrando uma hora completa para cada instância que você lança, mesmo que você encerre algumas dessas instâncias em menos de uma hora.

Uma melhor prática recomendada para a relação custo-benefício é dimensionar rapidamente quando necessário, mas escalar mais devagar para evitar ter que relançar novas instâncias e separar as instâncias Amazon EC2 para um aumento na demanda de carga de trabalho que flutua para cima e para baixo em poucos minutos, mas geralmente continua a precisar de mais recursos dentro de uma hora.

Escalar rapidamente ou escalar devagar

É importante considerar o bootstrapping para as instâncias do Amazon EC2 lançadas usando Auto Scaling. É preciso tempo para configurar cada nova instância do Amazon EC2 antes da instância ser saudável e capaz de aceitar tráfego. As instâncias que iniciam e estão disponíveis para carregar mais rapidamente podem juntar-se ao pool de capacidades mais rapidamente.