Introdução ao escalonamento automático da AWS

O conceito de escalonamento automático é muito simples — quando seus servidores começam a ficar sobrecarregados com tráfego, os sistemas de escalonamento automático da AWS ativam novos servidores para ajudar a atender às demandas. Isso pode ajudá-lo a cortar custos e escalar rapidamente.
O escalonamento automático economiza dinheiro
O escalonamento automático permite aumentar a escala para atender às necessidades de tráfego, mas também corrige um problema com a hospedagem de servidor tradicional; você deve construir seus servidores em torno da carga de pico, mas esse servidor pode permanecer ocioso principalmente durante os horários de pico. Você ainda estará pagando o preço por hora desse servidor, no entanto, mesmo que não o esteja usando. Isso é ruim para sua carteira e também ruim para a AWS, pois eles podem estar vendendo essa capacidade extra para outra pessoa.
Digamos que seu aplicativo exija 16 vCPU de energia durante o pico de carga. Você poderia fazer isso com uma instância c5.4xlarge, que custa cerca de US $ 500 por mês. Você pode obtê-lo por cerca de US $ 200 efetivamente por mês se comprar instâncias reservadas antecipadamente com contratos de 3 anos, mas ainda estará pagando o preço total por uma instância projetada em torno de sua capacidade de pico. E se suas necessidades mudarem dentro do período do contrato, você ficará preso nessa instância até que o contrato termine.
Mas se a carga de seu aplicativo muda ao longo do dia, o dimensionamento automático pode ajudar a otimizar os custos. Em vez disso, você pode usar várias instâncias c5. xlarge com 4 vCPUs e ativar novas quando precisar atender às demandas. Com as Instâncias Spot EC2, você também pode fazer com que seu grupo de autocalibração compre capacidade de computação sobressalente com grandes descontos.
A AWS tem vários serviços de escalonamento automático para produtos diferentes; você pode escalonar automaticamente as réplicas de leitura do Aurora e do DynamoDB e escalonar automaticamente o Elastic Container Service (ECS) da Amazon. Para este artigo, discutiremos o EC2 Auto Scaling, pois é o que você provavelmente desejará dimensionar de qualquer maneira.
Construindo sua infraestrutura em torno da automação
Para fazer o escalonamento automático funcionar, você deve automatizar todo o ciclo de vida do seu servidor. O processo de criação de um servidor, instalação de todas as dependências de que seu aplicativo precisa para ser executado, instalação de código, execução de código na inicialização — tudo deve ser tratado adequadamente para que o escalonamento automático faça sentido.
Existem duas maneiras fáceis de fazer isso e ambas têm casos de uso diferentes.
O primeiro é Amazon Machine Images, ou AMIs. Seu servidor EC2 provavelmente já está sendo executado em um AMI, como Amazon Linux 2. Mas o AMI é mais do que um sistema operacional; AMIs são imagens que contêm o SO, programas, dados do usuário e configuração, tudo em uma imagem. Você pode criar seu próprio AMI personalizado que contém todos os seus programas (como Nginx, WordPress, PHP, etc.) e a configuração associada, e criar uma cópia carbono do seu servidor existente.
Este método é muito útil se você estiver simplesmente atingindo os limites de um único servidor e quiser aumentar a escala, ou se quiser simplesmente cortar custos aumentando a escala de seus servidores ao longo do dia. O principal problema é que o gerenciamento de versões é uma dor; você terá que criar uma nova AMI toda vez que quiser fazer alterações ou automatizar alguma forma de obter código atualizado e configuração de uma ferramenta como o git.
O segundo método é usar contêineres. Os contêineres são um conceito Unix que permite que os aplicativos sejam agrupados e executados em um ambiente virtualizado isolado, ao mesmo tempo que mantém os benefícios de velocidade ou são executados em bare metal. Você pode pensar nisso como se tivesse tudo que seu aplicativo precisa para rodar em um CD; você pode gravar várias cópias desse CD e executá-las em vários servidores.
Sempre que você precisar fazer uma atualização, basta atualizar o CD e redistribuir a versão atualizada. Com a forma como o Docker funciona, isso torna o gerenciamento de versões bastante simples. Mas, mover um aplicativo existente para o Docker pode exigir mais configuração inicial do que você se sente confortável em fazer, pois requer uma mudança significativa na forma como você desenvolve e opera seus sistemas.
Cobriremos o método AMI neste artigo, pois é muito mais simples; mas, se você seguir a rota do contêiner, será melhor usar os serviços de contêiner gerenciados da Amazon em vez do escalonamento automático EC2. Você pode ler nosso guia de introdução ao AWS ECS para saber mais.
Como começar
Você precisará de algumas coisas para começar. O primeiro é o AMI personalizado. Eles são relativamente simples de criar; no console de gerenciamento EC2, clique com o botão direito no servidor atual e selecione Imagem > Criar imagem. Isso abrirá uma caixa de diálogo que fará um instantâneo do seu servidor e criará um AMI a partir desse instantâneo; dê um nome e uma descrição e selecione “ Criar imagem. ”

Assim que o AMI for criado (pode levar alguns minutos), role para baixo até a parte inferior da barra lateral EC2 e selecione “ Iniciar configuração ” na seção “ Auto Scaling ” aba. Crie uma nova configuração de lançamento e selecione seu AMI personalizado como base.

Você deve escolher o tipo de instância que deseja usar como incremento. Por exemplo, se você deseja aumentar em incrementos de 2 vCPUs, escolha uma instância de 2 vCPUs. Você fará mais dimensionamento, mas seus custos podem ser melhor otimizados.
A seguir, você configurará os detalhes do lançamento. Certifique-se de solicitar instâncias spot, especialmente se estiver planejando aumentar durante o dia e diminuir à noite. As instâncias spot podem ser executadas por até 6 horas. Você terá que especificar um preço máximo; você pode definir isso como o custo por hora da versão On-Demand da instância e ela sempre será executada.

Você também pode especificar um script de configuração aqui, nas configurações avançadas. Você pode colar isso como texto ou arquivo para executar.

A seguir, você adicionará armazenamento, selecionará um grupo de segurança e selecionará um par de chaves, como faria normalmente ao criar uma instância EC2 (embora seja simplesmente um modelo).
No final, escolha criar um grupo de escalonamento automático com a configuração de inicialização recém-criada. Defina um nome para o grupo, tamanho inicial e selecione sua sub-rede.
A seguir, você configurará suas políticas de dimensionamento. Você desejará escolher um intervalo para dimensionar e uma métrica a ser usada para dimensionar as instâncias, como a utilização média da CPU ou o tráfego médio da rede. Você também pode configurar alarmes do CloudWatch para dimensionar instâncias com base em outras métricas.

Você também precisará especificar o tempo em segundos que as instâncias precisam para aquecer; se você estiver usando AMIs, este tempo será muito menor, mas você ainda precisará fazer testes para descobrir quanto tempo leva.
Em seguida, você pode configurar notificações e tags e revisar sua configuração antes do lançamento. Observe que a criação deste grupo de escalonamento automático irá provisionar servidores para você, portanto, esteja preparado para pagar por eles.
Dos “ Grupos de dimensionamento automático ” guia no console EC2, você pode ver a atividade do seu grupo, como as instâncias em execução atuais ou falhas de inicialização. Seu grupo deve agora aumentar e diminuir, dependendo da carga. Você vai querer ficar de olho em seu comportamento nos primeiros dias, para ter certeza de que tudo está em ordem.
Quando precisar atualizar seus servidores, você &’ terá que criar uma nova configuração de inicialização com um novo AMI e selecionar a nova configuração como a configuração para seu grupo de escalonamento automático.
Nenhum comentário