Olá a todos! Hoje já começa o curso , 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.

, 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 , 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:

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):

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:

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:

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":

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

- 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.


- 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:

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

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.


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 é .

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:


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

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 sobre por que o Elastic IP é necessário. Veja, temos 3 endereços IP, mas eles não ficarão aqui para sempre:

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.

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:
- .
Fonte: habr.com
