Amazon Elastic Load Balancer (ELB)

A função do Elastic Load Balancer (ELB) é rotear e balancear as requisições de acesso/uso a um determinado serviço entre todos os recursos disponíveis para atender aquele serviço. O caso mais clássico é o roteamento e balanceamento de acessos HTTP ao seu website. Você pode distribuir os acessos em diferentes servidores a fim de evitar lentidões ou restrições de acesso à sua aplicação web. Vamos aos detalhes!

Componentes do ELB

Naturalmente, se você está utilizando um load balancer na sua arquitetura é porque você tem uma série de recursos disponíveis para balancear suas requisições (por exemplo, várias instâncias Amazon EC2 para distribuir os acessos à sua aplicação). Neste cenário, se uma das instâncias EC2 que atendem sua aplicação cair, sua aplicação continuará em operação, dado que o ELB será capaz de rotear as requisições para as instancias que continuam funcionando.

Note também que o ELB é um serviço do tipo “elastic”, isso significa que você pode configurá-lo para, automaticamente, aumentar o número de recursos necessários para atender as requisições de entrada. Existem diferentes tipos de ELB:

  • Application Load Balancer (ALB)
    Utilizado para rotear as solicitações HTTP/HTTPS ao seu website. Opera no nível de requisição, em cima da camada de aplicação (7) do protocolo OSI.
  • Network Load Balancer (NLB)
    Utilizado para rotear tráfego de rede. Opera no nível de conexão, em cima da camada de transporte (4) do protocolo OSI. NLB é capaz de rotear milhões de requisições por segundo e oferece suporte à endereço IP estático.
  • Classic Load Balancer
    Utilizado para aplicações que rodam no ambiente clássico do EC2 (legado). Opera tanto ao nível de requisição quanto ao nível de conexão. Você não deveria utilizar este load balancer fora do ambiente clássico do EC2.

Principais componentes do ELB:

  • Listeners
    Para cada load balancer, deve-se definir pelo menos um listener. Listener define como as requisições/conexões de entrada serão distribuídas nos Target Groups. Esta definição é baseada em portas e protocolos previamente configurados por meio de Conditions.
  • Target Groups
    É um grupo de recursos disponível para atender as requisições de entrada. Você pode criar vários Target Groups, cada um associado com diferentes configurações de Listeners e Rules
  • Rules
    Rules estão associadas com cada Listener existente. Rules definem como as requisições serão roteadas nos Target Groups.

componentes
Relação entre os principais componentes do AWS Elastic Load Balancer

Adicionalmente, ELB possui os seguintes componentes:

  • Health Checks
    Se comunica com os recursos associados a cada Target Group para verificar seu funcionamento
  • Internet-Facing ELB
    Permite acesso aos recursos por meio de um DNS (possibilitando conexões de fora da empresa)
  • Internal ELB
    Permite acesso aos recursos apenas por meio de requisições provenientes de um endereço IP interno (ou seja, originados da VPC da empresa)
  • ELB Nodes
    Nodes são usados para distribuir o tráfego nos Target Groups. Durante o processo de configuração do ELB, você terá que especificar em qual Availability Zone (AZ) você quer que o ELB opere. Para cada AZ selecionada, um node será associado àquela AZ. Sem a definição de AZ, ELB não será capaz de rotear o tráfego para os Target Groups.
  • Cross-Zone Load Balancing
    Habilitando este recurso, o tráfego será igualmente distribuído em todas as Availability Zone (AZ) definidas previamente. Se estiver desabilitado, o tráfego será distribuído apenas dentro da AZ onde a requisição chegou.

Server Certificates (SSL/TLS)

Para receber requisições encriptadas por meio do protocolo HTTPS é necessário configurar um server certificate e sua security police.

SSL (Secure Sockets Layer) é um protocolo de criptografia, similar ao TLS (Transport Layer Security). Ambos são suportados no ELB.

O server certificate usado pelo ELB é um certificado x.509, que é uma digital fornecida por uma Certificate Authority (como por exemplo o AWS Certificate Manager – ACM). Este certificado é usado para terminar a conexão encriptada que foi recebida, em seguida decriptar a requisição e efetuar sua transmissão para os recursos do ELB.

Principais passos para se criar um AWS ELB

Em geral, primeiro crie seus recursos, por exemplo, suas instâncias EC2. Em seguida, crie os seus Target Groups e associe os recursos pre-existentes. Por fim, você deve criar o seu Elastic Load Balancer. Durante a criação do ELB você terá que especificar todos os componentes que falamos neste artigo.

Amazon EC2 Auto Scaling

EC2 Auto Scaling permite o provisionamento de novas instâncias EC2 para atender uma demanda inesperada de requisições. Quando o tráfego retorna aos níveis esperados, as instâncias adicionais que foram provisionadas são desligadas para otimização de custo.

Por exemplo, você pode definir que se a utilização de memória da sua instância EC2 atingir um nível de 80%, uma nova instância será criada para atender o tráfego. E quando o nível de utilização de memória reduzir para 20%, a nova instância criada já pode ser desligada.

Os componentes do Amazon EC2 Auto Scaling são:

  • Launch Template e Launch Configuration
    Launch Template permite que você crie um template com as configurações da nova instância que será criada. Esta opção apresenta as opções de configuração de forma mais simples e permite configurações avançadas. Dê preferência à esta opção.
    Launch Configuration basicamente tem o mesmo intuito de um Launch Template, porém o processo de criação possui mais telas e nem todas as opções avançadas estão disponíveis ao usuário.
  • Auto Scaling Group
    Define a capacidade desejada e outras limitações do grupo por meio de scaling policies (opr exemplo, trigger para escalar – scale out – or desalocar recursos – scale in). Também define onde o grupo deve iniciar os recursos, como Availability Zone (AZ).

Durante a criação de um Auto Scaling Group você deve definir o Launch Template (ou Launch Configuration), assim como especificar a scaling policies (como explicado acima). Ainda durante este processo de criação, você pode (opcionalmente) especificar a qual instância EC2 este Auto Scaling Group será associado. Se não especificar nenhuma instância, o grupo apenas será criado e, futuramente, você deve associá-lo à algum serviço para que entre em operação (como por exemplo o Elastic Load Balancer).

Vale ressaltar que existe um outro serviço de auto scaling conhecido com AWS Auto Scaling. Este serviço para ser usado para auto provisionar os serviços Amazon ECS, DynamoDB e Amazon Aurora.

Configurando ELB + EC2 Auto Scaling

Se você estiver utilizando ELB sem o recurso de Auto Scaling, então você deve acrescentar ou remover manualmente novos recursos ao seu Target Group. Agora, se você estiver apenas usando o Auto Scaling (sem o ELB), eventualmente você será capaz de provisionar mais recursos, porém suas requisições não seriam distribuídas para estes novos recursos.

Para que este provisionamento de recursos ocorra de forma automática e eficiente, você precisa configurar o ELB + Auto Scaling.

Para realizar esta configuração você deve acessar o seu Auto Scaling Group, em seguida localizar a opção onde é possível associar um Load Balancer ao seu Auto Scaling Group. Estas opções chamam-se “Target Groups” e “Classic Load Balancers”.

Referência: Cloud Academy – Using Elastic Load Balancing & EC2 Auto Scaling to Support AWS Workloads

Deixe um comentário

Preencha os seus dados abaixo ou clique em um ícone para log in:

Logotipo do WordPress.com

Você está comentando utilizando sua conta WordPress.com. Sair /  Alterar )

Foto do Google

Você está comentando utilizando sua conta Google. Sair /  Alterar )

Imagem do Twitter

Você está comentando utilizando sua conta Twitter. Sair /  Alterar )

Foto do Facebook

Você está comentando utilizando sua conta Facebook. Sair /  Alterar )

Conectando a %s

%d blogueiros gostam disto: