Balanceamento de carga com AWS ELB

Olá a todos! Hoje já começa o curso «AWS para desenvolvedores», motivo pelo qual realizamos um webinar temático sobre a revisão do ELB. Analisamos os tipos de balanceadores e criamos várias instâncias EC2 com o balanceador. Também estudamos outros exemplos de uso.

Balanceamento de carga com AWS ELB

Após assistir ao webinar, você vai:

  • compreender o que é o AWS Load Balancing;
  • conhecer os tipos de Elastic Load Balancer e seus componentes;
  • usar o AWS ELB na sua prática.

Por que você deve saber disso:

  • é útil se você planeja fazer os exames de certificação da AWS;
  • é uma maneira simples de distribuir carga entre servidores;
  • é uma maneira simples de adicionar Lambda ao seu serviço (ALB).

A aula aberta foi conduzida por Rishat Teregulov, engenheiro de sistemas em uma empresa de marketing especializada em desenvolvimento e manutenção de sites.

Introdução

O que é Elastic Load Balancer pode ser visto no diagrama abaixo, que apresenta um exemplo mais simples:

Balanceamento de carga com AWS ELB

O Load Balancer aceita requisições e as distribui entre as instâncias. Temos uma instância separada, funções Lambda e um grupo AutoScaling (grupo de servidores).

Tipos de AWS ELB

1. Vamos considerar os principais tipos:

Classic Load Balancer. O primeiro balanceador da AWS, funciona tanto no nível 4 quanto no nível 7 do OSI, suportando HTTP, HTTPS, TCP e SSL. Ele fornece o balanceamento básico de carga entre várias instâncias Amazon EC2 e opera tanto no nível de requisições quanto no nível de conexão. Vamos abri-lo (destacado em cinza):

Balanceamento de carga com AWS ELB

Este balanceador é considerado obsoleto, portanto, é recomendado seu uso apenas em casos específicos. Por exemplo, para aplicativos que foram construídos na rede EC2‑Classic. De fato, nada nos impede de criá-lo:

Balanceamento de carga com AWS ELB

2. Network Load Balancer. Adequado para alta carga, opera no nível 4 do OSI (pode ser usado em EKS e ECS), suportando TCP, UDP e TLS.

O Network Load Balancer direciona o tráfego para os alvos na Amazon VPC e é capaz de processar milhões de requisições por segundo com latências extremamente baixas. Além disso, é otimizado para lidar com padrões de tráfego com cargas repentinas e variáveis.

3. Application Load Balancer. Opera no nível 7, possui suporte para Lambda, suporta regras no nível de cabeçalhos e caminhos, e suporta HTTP e HTTPS.
Fornece roteamento de solicitações avançado, focado na entrega de aplicações, construídas sobre arquiteturas modernas, incluindo microsserviços e contêineres. Direciona o tráfego para destinos no Amazon VPC, baseando-se no conteúdo da solicitação.

Para muitos usuários, o Application Load Balancer substituiu o Classic Load Balancer, pois o TCP não é tão comum quanto o HTTP.

Vamos criá-lo também, gerando assim dois balanceadores de carga:

Balanceamento de carga com AWS ELB

Componentes do Load Balance

Componentes Gerais do Load Balance (presentes em todos os balanceadores):

  • Política de Registro de Acesso

— seus logs de acesso ao ELB. Para ajustar as configurações, você pode acessar a Descrição e selecionar o botão "Editar atributos":

Balanceamento de carga com AWS ELB

Em seguida, devemos especificar o S3Bucket — armazenamento de objetos da Amazon:

Balanceamento de carga com AWS ELB

  • Esquema

— balanceador interno ou externo. A questão é se o seu LoadBalancer deve receber endereços externos, para ser acessível externamente, ou se pode ser o seu balanceador interno;

  • Grupos de Segurança

— controle de acesso ao balanceador. Essencialmente, isso é um firewall de alto nível.

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

  • Sub-redes

— sub-redes dentro do seu VPC (e, por consequência, zonas de disponibilidade). As sub-redes são especificadas durante a criação. Se o VPC é restrito a uma região, as sub-redes ficam limitadas às zonas de disponibilidade. Ao criar um Load Balancer, é melhor criá-lo em pelo menos duas sub-redes (ajuda se haver problemas com uma zona de disponibilidade);

  • Listeners

— seus protocolos de balanceamento. Como mencionado anteriormente, para o Classic Load Balancer pode ser HTTP, HTTPS, TCP e SSL; para o Network Load Balancer — TCP, UDP e TLS; para o Application Load Balancer — HTTP e HTTPS.

Exemplo para Classic Load Balancer:

Balanceamento de carga com AWS ELB

Já no Application Load Balancer, vemos uma interface um pouco diferente e, em geral, uma lógica diferente:

Balanceamento de carga com AWS ELB

Componentes do Load Balancer v2 (ALB e NLB)

Agora vamos explorar mais detalhadamente os balanceadores da segunda versão, Application Load Balancer e Network Load Balancer. Esses balanceadores possuem características específicas. Por exemplo, surgiu o conceito de Target Groups — instâncias (e funções). Com esse componente, temos a possibilidade de especificar a qual das Target Groups queremos direcionar o tráfego.

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

Falando de forma simples, em Target Groups, especificamos as instâncias que receberão o tráfego. Se no Classic Load Balancer você conecta as instâncias diretamente ao balanceador, no Application Load Balancer você primeiro:

  • cria o Load Balancer;
  • cria um grupo de Target;
  • direciona pelas portas ou regras do Load Balancer para os grupos de destino apropriados;
  • nos grupos de destino, você designa as instâncias.

Esse tipo de lógica pode parecer mais complicada, mas na verdade é mais conveniente.

O próximo componente — Regras do listener (regras para roteamento). Isso se aplica apenas ao Application Load Balancer. Se no Network Load Balancer você simplesmente cria um listener, que envia tráfego para um grupo de destino específico, no Application Load Balancer a situação é mais divertida e conveniente.

Balanceamento de carga com AWS ELB

Agora, vamos dizer algumas palavras sobre o próximo componente — Elastic IP (endereços estáticos para NLB). Se as regras de roteamento do listener se aplicavam apenas ao Application Load Balancer, o Elastic IP se aplica somente ao Network Load Balancer.

Vamos criar um Network Load Balancer:

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

E precisamente durante o processo de criação, veremos que temos a opção de escolher um Elastic IP:

Balanceamento de carga com AWS ELB

O Elastic IP fornece um único endereço IP que pode ser associado a diferentes instâncias EC2 ao longo do tempo. Se uma instância EC2 tem um endereço Elastic IP e essa instância é encerrada ou parada, é possível imediatamente associar uma nova instância EC2 ao endereço Elastic IP. Assim, seu aplicativo atual não interrompe seu funcionamento, pois os aplicativos veem o mesmo endereço IP, mesmo que a EC2 real tenha mudado.

Aqui está mais um caso de uso sobre por que o Elastic IP é necessário. Veja, temos 3 endereços IP, mas eles não ficarão aqui para sempre:

Balanceamento de carga com AWS ELB

A Amazon muda esses endereços ao longo do tempo, pode fazê-lo a cada 60 segundos (mas, na prática, é claro, com menos frequência). Isso significa que os endereços IP podem mudar. E no caso do Network Load Balancer, você pode realmente vincular o endereço IP e especificá-lo em suas regras, políticas, etc.

Balanceamento de carga com AWS ELB

Tirando conclusões

O ELB fornece balanceamento automático do tráfego de entrada entre vários alvos (containers, instâncias Amazon EC2, endereços IP e funções Lambda). O ELB é capaz de distribuir tráfego com carga variável tanto dentro de uma zona de disponibilidade quanto entre várias zonas de disponibilidade. O usuário pode escolher entre três tipos de balanceadores, que garantem alta disponibilidade, escalabilidade automática e uma proteção razoável. Tudo isso é importante para garantir a resiliência de seus aplicativos.

Principais vantagens:

  • alta disponibilidade. O contrato de serviço implica 99,99% de disponibilidade para o balanceador de carga. Por exemplo, várias zonas de disponibilidade garantem que o tráfego será processado apenas por instâncias funcionais. Na verdade, é possível balancear a carga em toda a região, redirecionando o tráfego para instâncias funcionais em diferentes zonas de disponibilidade;
  • segurança. O ELB opera com o Amazon VPC, oferecendo diferentes recursos de segurança — incluindo gerenciamento integrado de certificados, autenticação de usuários e descriptografia SSL/TLS. Tudo isso proporciona um gerenciamento centralizado e flexível das configurações de TLS;
  • elasticidade. O ELB pode lidar com mudanças súbitas no tráfego de rede. A profunda integração com o Auto Scaling fornece recursos suficientes para o aplicativo, à medida que a carga muda, sem necessidade de intervenção manual;
  • flexibilidade. É possível usar endereços IP para rotear solicitações para os destinos dos seus aplicativos. Isso garante flexibilidade na virtualização de aplicativos de destino, permitindo assim a execução de vários aplicativos em uma única instância. Como os aplicativos podem usar uma única porta de rede e têm grupos de segurança separados, a interação entre os aplicativos é simplificada, especialmente em arquiteturas baseadas em microsserviços;
  • monitoramento e auditoria. É possível monitorar aplicativos em tempo real, utilizando os recursos do Amazon CloudWatch. Isso inclui métricas, logs e rastreamento de solicitações. Em termos simples, você poderá identificar problemas e determinar de forma bastante precisa os gargalos de desempenho;
  • balanceamento de carga híbrido. A capacidade de balancear a carga entre recursos locais e AWS usando o mesmo balanceador simplifica a migração ou expansão de aplicativos locais para a nuvem. O gerenciamento de falhas também se torna mais simples com a utilização da nuvem.

Se você quiser mais detalhes, aqui estão mais alguns links úteis do site oficial da Amazon:

  1. Elastic Load Balancing.
  2. Recursos do Elastic Load Balancing.

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster