Balanceamento de carga com AWS ELB

Olá a todos! O curso começa hoje "AWS para desenvolvedores", no âmbito do qual realizámos um webinar temático correspondente dedicado à revisão do ELB. Analisamos os tipos de balanceadores e criamos várias instâncias do EC2 com um balanceador. Também estudamos outros exemplos de uso.

Balanceamento de carga com AWS ELB

Depois de ouvir o webinar, Você irá:

  • entender o que é AWS Load Balancing;
  • conhecer os tipos de Elastic Load Balancer e seus componentes;
  • use AWS ELB em sua prática.

Por que você precisa saber disso?

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

Conduziu uma aula aberta Rishat Teregulov, engenheiro de sistemas em uma empresa de marketing para desenvolvimento e suporte de sites.

Introdução

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

Balanceamento de carga com AWS ELB

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

Tipos AWS ELB

1. Vejamos os principais tipos:

Balanceador de carga clássico. O primeiro balanceador de carga da AWS funciona em OSI Layer 4 e Layer 7, suportando HTTP, HTTPS, TCP e SSL. Ele fornece balanceamento de carga básico em várias instâncias do Amazon EC2 e funciona tanto nos níveis de solicitação quanto de conexão. Vamos abri-lo (destacado em cinza):

Balanceamento de carga com AWS ELB

Este balanceador é considerado desatualizado, por isso é recomendado para uso apenas em determinados casos. Por exemplo, para aplicativos criados na rede EC2‑Classic. Em princípio, ninguém nos impede de criá-lo:

Balanceamento de carga com AWS ELB

2. Balanceador de carga de rede. Adequado para cargas de trabalho pesadas, opera em OSI Layer 4 (pode ser usado em EKS e ECS), suporta TCP, UDP e TLS.

O Network Load Balancer roteia o tráfego para destinos em uma Amazon VPC e é capaz de processar milhões de solicitações por segundo com latência ultrabaixa. Além disso, ele é otimizado para lidar com padrões de tráfego com cargas repentinas e variáveis.

3. Balanceador de carga de aplicativos. Funciona na camada 7, tem suporte Lambda, suporta regras de nível de cabeçalho e caminho, suporta HTTP e HTTPS.
Fornece roteamento avançado de solicitações com foco no fornecimento de aplicativos criados em arquiteturas modernas, incluindo microsserviços e contêineres. Direciona o tráfego para destinos na Amazon VPC com base no conteúdo da solicitação.

Para muitos usuários, o Application Load Balancer foi a primeira escolha para substituir o Classic Load Balancer, porque o TCP não é tão comum quanto o HTTP.

Vamos criá-lo também, e como resultado já teremos dois balanceadores de carga:

Balanceamento de carga com AWS ELB

Componentes de balanceamento de carga

Componentes comuns de balanceamento de carga (comum a todos os balanceadores):

  • Política de registro de acesso

— seus logs de acesso ELB. Para fazer configurações, você pode ir em Descrição e selecionar o botão “Editar atributos”:

Balanceamento de carga com AWS ELB

Em seguida, especificamos S3Bucket - armazenamento de objetos 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 pode ser o seu balanceador de carga interno;

  • Grupos de Segurança

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

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

  • Sub-redes

— sub-redes dentro da sua VPC (e, consequentemente, zona de disponibilidade). As sub-redes são especificadas durante a criação. Se as VPCs forem limitadas por região, as sub-redes serão limitadas por zonas de disponibilidade. Ao criar um Load Balancer, é melhor criá-lo em pelo menos duas sub-redes (ajuda se surgirem problemas com uma zona de disponibilidade);

  • Ouvintes

- seus protocolos de balanceamento. Conforme mencionado anteriormente, para Classic Load Balancer pode ser HTTP, HTTPS, TCP e SSL, para Network Load Balancer - TCP, UDP e TLS, para Application Load Balancer - HTTP e HTTPS.

Exemplo para balanceador de carga clássico:

Balanceamento de carga com AWS ELB

Mas no Application Load Balancer vemos uma interface um pouco diferente e uma lógica geralmente diferente:

Balanceamento de carga com AWS ELB

Componentes do Load Balancer v2 (ALB e NLB)

Agora vamos dar uma olhada mais de perto nos balanceadores da versão 2 Application Load Balancer e Network Load Balancer. Esses balanceadores possuem recursos de componentes próprios. Por exemplo, surgiu um conceito como Grupos-alvo - instâncias (e funções). Graças a esta componente, temos a oportunidade de especificar para quais dos Grupos-Alvo queremos direcionar o tráfego.

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

Em termos simples, em Grupos-alvo especificamos as instâncias de onde o tráfego virá. Se no mesmo Classic Load Balancer você simplesmente conecta imediatamente a intensidade ao balanceador, então no Application Load Balancer você primeiro:

  • crie um balanceador de carga;
  • crie um grupo-alvo;
  • direcionar por meio das portas necessárias ou regras do balanceador de carga para os grupos-alvo necessários;
  • em Grupos-alvo você atribui instâncias.

Esta lógica de funcionamento pode parecer mais complicada, mas na verdade é mais conveniente.

O próximo componente é Regras do ouvinte (regras para roteamento). Isso se aplica apenas ao Application Load Balancer. Se no Network Load Balancer você simplesmente cria um Listener e ele envia tráfego para um grupo de destino específico, no Application Load Balancer tudo mais divertido e conveniente.

Balanceamento de carga com AWS ELB

Agora vamos dizer algumas palavras sobre o próximo componente - IP elástico (endereços estáticos para NLB). Se as regras de roteamento das regras do Listener afetassem apenas o Application Load Balancer, o Elastic IP afetaria apenas o Network Load Balancer.

Vamos criar um balanceador de carga de rede:

Balanceamento de carga com AWS ELB

Balanceamento de carga com AWS ELB

E logo durante o processo de criação veremos que teremos a oportunidade de selecionar 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 do EC2 ao longo do tempo. Se uma instância do EC2 tiver um endereço IP elástico e essa instância for encerrada ou interrompida, você poderá associar imediatamente uma nova instância do EC2 a um endereço IP elástico. No entanto, seu aplicativo atual não irá parar de funcionar, pois os aplicativos ainda verão o mesmo endereço IP, mesmo que o EC2 real tenha mudado.

aqui é outro caso de uso sobre por que o Elastic IP é necessário. Olha, vemos 3 endereços IP, mas eles não ficarão aqui para sempre:

Balanceamento de carga com AWS ELB

A Amazon os altera com o tempo, talvez 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 simplesmente vincular um endereço IP e indicá-lo em suas regras, políticas, etc.

Balanceamento de carga com AWS ELB

Tirar conclusões

O ELB fornece distribuição automática do tráfego de entrada entre vários destinos (contêineres, instâncias do Amazon EC2, endereços IP e funções Lambda). O ELB é capaz de distribuir tráfego com cargas variadas dentro de uma única zona de disponibilidade e em várias zonas de disponibilidade. O usuário pode escolher entre três tipos de balanceadores que fornecem alta disponibilidade, escalonamento automático e boa proteção. Tudo isso é importante para garantir a tolerância a falhas de suas aplicações.

As principais vantagens:

  • alta disponibilidade. O contrato de serviço pressupõe disponibilidade de 99,99% para o balanceador de carga. Por exemplo, múltiplas zonas de disponibilidade garantem que o tráfego seja processado apenas por objetos íntegros. Na verdade, você pode equilibrar a carga em toda a região, redirecionando o tráfego para destinos íntegros em diferentes zonas de disponibilidade;
  • Segurança. O ELB funciona com Amazon VPC, fornecendo vários recursos de segurança – gerenciamento integrado de certificados, autenticação de usuário e descriptografia SSL/TLS. Todos juntos fornecem gerenciamento centralizado e flexível de configurações de TLS;
  • elasticidade. O ELB pode lidar com mudanças repentinas no tráfego de rede. E a integração profunda com o Auto Scaling fornece ao aplicativo recursos suficientes caso a carga mude, sem exigir intervenção manual;
  • flexibilidade. Você pode usar endereços IP para rotear solicitações para os destinos dos seus aplicativos. Isso proporciona flexibilidade ao virtualizar aplicativos de destino, proporcionando assim a capacidade de hospedar vários aplicativos em uma única instância. Como os aplicativos podem usar uma única porta de rede e ter grupos de segurança separados, a comunicação entre aplicativos é simplificada quando temos, digamos, uma arquitetura baseada em microsserviços;
  • monitoramento e auditoria. Você pode monitorar aplicativos em tempo real usando recursos do Amazon CloudWatch. Estamos falando de métricas, logs, rastreamento de solicitações. Em termos simples, você será capaz de identificar problemas e identificar gargalos de desempenho com bastante precisão;
  • balanceamento de carga híbrido. A capacidade de balancear a carga entre recursos locais e a AWS usando o mesmo balanceador de carga facilita a migração ou expansão de aplicativos locais para a nuvem. O tratamento de falhas também é simplificado usando a nuvem.

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

  1. Balanceamento de carga elástico.
  2. Recursos do Elastic Load Balancing.

Fonte: habr.com

Adicionar um comentário