Skip to content

Latest commit

 

History

History
145 lines (142 loc) · 11.5 KB

LoadBalancer.md

File metadata and controls

145 lines (142 loc) · 11.5 KB

Load Balancer para AWS Lambda

Um balanceador de carga é um servidor ou um componente crítico que desempenha um papel fundamental na distribuição do tráfego de internet recebido para vários servidores (como instâncias EC2) a jusante. Esse processo otimiza a utilização de recursos, melhora o desempenho do sistema e garante alta disponibilidade, evitando que qualquer servidor único seja sobrecarregado. Os balanceadores de carga atuam como intermediários, gerenciando eficientemente a distribuição de solicitações, melhorando assim a confiabilidade geral e a capacidade de resposta do sistema.

O balanceamento de carga é um conceito versátil e pode ser aplicado a vários tipos de recursos além das instâncias EC2. Os balanceadores de carga são comumente usados em diferentes cenários para distribuir o tráfego entre uma variedade de recursos, visando melhorar o desempenho, a confiabilidade e a disponibilidade. Aqui estão alguns exemplos de recursos que podem ser combinados com o balanceamento de carga:

  • Servidores Web: Os balanceadores de carga podem distribuir o tráfego web recebido entre vários servidores web para garantir uma utilização eficiente dos recursos e melhorar o tempo de resposta para os usuários.
  • Servidores de Aplicativos: Se a sua aplicação estiver distribuída em vários servidores, um balanceador de carga pode distribuir de forma equitativa as solicitações dos usuários entre eles, evitando que um único servidor se torne um gargalo.
  • Servidores de Banco de Dados: Em alguns casos, o balanceamento de carga pode ser aplicado a servidores de banco de dados para distribuir consultas e transações de banco de dados, ajudando a dimensionar as operações do banco de dados e evitar a sobrecarga em um único servidor de banco de dados.
  • Microservices: Em uma arquitetura de microsserviços, onde uma aplicação é composta por pequenos serviços independentes, o balanceamento de carga pode ser usado para distribuir o tráfego entre os vários microsserviços.
  • Serviços de Nuvem: Além das instâncias EC2, os balanceadores de carga podem ser usados para distribuir o tráfego entre diferentes tipos de serviços de nuvem, como contêineres (por exemplo, clusters Kubernetes), funções serverless ou outras máquinas virtuais.
  • Ambientes Híbridos: O balanceamento de carga pode ser implementado em ambientes híbridos que abrangem tanto data centers locais quanto infraestrutura na nuvem, garantindo uma distribuição equilibrada do tráfego entre recursos diversos.
  • Balanceamento de Carga de Servidores Globais (GSLB): O balanceamento de carga também pode ser empregado em uma escala global, distribuindo o tráfego entre servidores localizados em diferentes regiões geográficas para otimizar o desempenho e fornecer tolerância a falhas.

Recursos

  • Distribuição de Tráfego: O balanceamento de carga distribui uniformemente as solicitações recebidas entre várias instâncias, evitando a sobrecarga de qualquer função única.
  • Escala Aprimorada: O balanceamento de carga facilita a escalabilidade horizontal, permitindo que sua arquitetura serverless lide com cargas de trabalho aumentadas de maneira transparente.
  • Alta Disponibilidade: Ao distribuir funções em várias zonas de disponibilidade, o balanceamento de carga garante operação contínua mesmo diante de falhas.
  • Otimização de Custos: O balanceamento de carga eficiente pode ajudar a otimizar custos garantindo a utilização eficaz dos recursos.
  • Ponto Único: Exponha um único ponto de acesso (DNS) para sua aplicação
  • Manuseio de Falhas: Lide perfeitamente com falhas de instâncias a jusante
  • Verificações de Saúde: Realize verificações regulares de saúde em suas instâncias
  • Segurança: Forneça terminação SSL (HTTPS) para seus sites
  • Entre Zonas: Alta disponibilidade entre zonas

Componentes e Configuração

Por que usar um Elastic Load Balancer?

  • Um ELB (Elastic Load Balancer) é um balanceador de carga gerenciado:
    • A AWS garante que ele estará funcionando
    • A AWS cuida de atualizações, manutenção, alta disponibilidade
    • A AWS fornece apenas algumas opções de configuração
  • Configurar seu próprio balanceador de carga custa menos, mas exigirá muito mais esforço da sua parte (manutenção, integrações)
  • 4 tipos de balanceadores de carga oferecidos pela AWS:
    • Balanceador de Carga de Aplicativos (apenas HTTP / STTPS) - Camada 7
    • Balanceador de Carga de Rede (ultra-alto desempenho, permite TCP) - Camada 4
    • Balanceador de Carga de Gateway - Camada 3
    • Balanceador de Carga Clássico (aposentado em 2023) - Camada 4 & 7

Tipos de Balanceadores de Carga

  • Balanceador de Carga de Aplicativos:
    • Protocolos HTTP / HTTPS / gRPC (Camada 7)
    • Recursos de Roteamento HTTP
    • A AWS fornece apenas alguns recursos

    Escolha um Balanceador de Carga de Aplicativos quando você precisar de um conjunto flexível de recursos para suas aplicações com tráfego HTTP e HTTPS. Operando no nível da solicitação, os Balanceadores de Carga de Aplicativos fornecem recursos avançados de roteamento e visibilidade voltados para arquiteturas de aplicativos, incluindo microsserviços e contêineres.


  • Balanceador de Carga de Rede:
    • Protocolos TCP / UDP (Camada 4)
    • Alto desempenho, milhões de solicitações por segundo
    • IP estático por meio de IP elástico

    Escolha um Balanceador de Carga de Rede quando você precisar de ultra-alto desempenho, descarregamento TLS em escala, implantação centralizada de certificados, suporte para UDP e endereços IP estáticos para suas aplicações. Operando no nível da conexão, os Balanceadores de Carga de Rede são capazes de lidar com milhões de solicitações por segundo de forma segura, mantendo latências ultra baixas.


  • Balanceador de Carga de Gateway:
    • Protocolo GENEVE em Pacotes IP (Camada 3)
    • Roteamento de Tráfego para Firewalls que você gerencia em Instâncias EC2
    • Deteção de intrusões

    Escolha um Balanceador de Carga de Gateway quando precisar implantar e gerenciar uma frota de appliances virtuais de terceiros que suportam GENEVE. Esses appliances permitem melhorar a segurança, conformidade e controles de políticas.

Termos e Conceitos

  • Funções: Uma função AWS Lambda é uma unidade de código que é executada em resposta a eventos.
  • Eventos: Um evento é uma ação que ocorre em um serviço AWS, como upload de arquivo no S3 ou uma solicitação de API do Amazon API Gateway, que pode acionar a execução de uma função Lambda.
  • Tempo de Execução: O tempo de execução é o ambiente no qual o código da função Lambda é executado.
  • Camadas: As camadas permitem incluir bibliotecas, frameworks e outros arquivos de dependência em sua função Lambda, mantendo a separação do código de lógica de negócios.
  • Política de Execução: A política de execução controla as permissões que uma função Lambda tem para acessar outros recursos da AWS.
  • Alias: Um alias é um ponteiro para uma versão específica de uma função Lambda.

Melhores Práticas

  • Projete funções Lambda para serem pequenas e realizar tarefas específicas.
  • Limite o tempo de execução das funções para evitar execuções desnecessárias ou falhas devido a limites de tempo.
  • Use variáveis de ambiente para armazenar informações sensíveis, como chaves de API e senhas.
  • Gerencie e monitore o registro de funções para solução de problemas e depuração.
  • Utilize opções de versionamento e controle de acesso para rastrear e gerenciar alterações nas funções Lambda.
  • Configure políticas de controle de acesso para limitar o acesso às funções Lambda e aos recursos que elas utilizam.
  • Utilize recursos de monitoramento, como Métricas do CloudWatch e Logs do CloudWatch, para monitorar e analisar o desempenho e a eficiência das funções Lambda.
  • Teste e valide funções Lambda antes de implantá-las em produção.