Sobes.tech
Middle

Que balanceadores de carga conhece? Qual a sua experiência com eles e que tecnologias utilizou?

sobes.tech IA

Resposta da IA

Conhecem-se os seguintes tipos de balanceadores de carga:

  • Balanceadores de carga de hardware (Hardware Load Balancers): Dispositivos especializados. Exemplo: F5 BIG-IP.
  • Balanceadores de carga de software (Software Load Balancers): Funcionam como software. Exemplos: HAProxy, Nginx, AWS Elastic Load Balancing (ELB), Google Cloud Load Balancing, Azure Load Balancer.

Tenho experiência com HAProxy e Nginx como balanceadores de carga de software, bem como com soluções em nuvem como AWS ELB (Application Load Balancer e Network Load Balancer).

HAProxy:

  • Utilizado para balancear tráfego TCP e HTTP.
  • A configuração era feita através de ficheiros de configuração.
  • Aplicado para:
    • Distribuir pedidos HTTP entre servidores web.
    • Garantir alta disponibilidade de bases de dados (tráfego TCP).
  • Foram implementados:
    • Algoritmos de balanceamento (round-robin, leastconn).
    • Verificações de saúde dos servidores.
    • Terminação SSL.
# Exemplo de configuração HAProxy
global
    log /dev/log    local0
    chroot /var/lib/haproxy
    stats socket /run/haproxy/admin.sock mode 660 level admin expose-fd listeners
    stats timeout 30s
    user haproxy
    group haproxy
    daemon

defaults
    log     global
    mode    http # ou tcp
    option  httplog
    option  dontlognull
    timeout connect 5000ms
    timeout client  50000ms
    timeout server  50000ms
    errorfile 400 /etc/haproxy/errors/400.http
    errorfile 403 /etc/haproxy/errors/403.http
    errorfile 408 /etc/haproxy/errors/408.http
    errorfile 500 /etc/haproxy/errors/500.http
    errorfile 502 /etc/haproxy/errors/502.http
    errorfile 503 /etc/haproxy/errors/503.http
    errorfile 504 /etc/haproxy/errors/504.http

frontend http_front
    bind *:80
    default_backend http_back

backend http_back
    balance roundrobin # Algoritmo de balanceamento
    server s1 192.168.1.10:80 check # Servidor 1 com verificação de saúde
    server s2 192.168.1.11:80 check # Servidor 2 com verificação de saúde

Nginx:

  • Utilizado como proxy reverso e balanceador de tráfego HTTP(S).
  • A configuração era feita em ficheiros nginx.conf ou ficheiros incluídos.
  • Aplicado para:
    • Distribuir carga em servidores web e microserviços.
    • Caching, compressão, terminção SSL.
  • Foram implementados:
    • Diversos métodos de balanceamento (round-robin, least_conn, ip_hash).
    • Verificações de saúde na versão comercial (Nginx Plus) ou com módulos.
    • Configuração de hosts virtuais.
# Exemplo de configuração Nginx
http {
    upstream backend_servers {
        server 192.168.1.20:8080 weight=1; # Servidor 1 com peso
        server 192.168.1.21:8080 weight=1; # Servidor 2 com peso
        # least_conn; # Outro método de balanceamento
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend_servers; # Proxy para grupo de servidores
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
            # Outras configurações de proxy
        }
    }
}

AWS ELB:

  • Application Load Balancer (ALB): Utilizado para balancear tráfego HTTP/HTTPS. No nível L7.
    • Roteamento baseado em URL, cabeçalhos e métodos HTTP.
    • Integração com Auto Scaling Groups.
    • Terminação SSL, Web Application Firewall (WAF).
  • Network Load Balancer (NLB): Utilizado para balancear tráfego TCP/UDP no nível L4.
    • Alta performance e baixa latência.
    • Usado para balancear tráfego para bases de dados, servidores de jogos e outras aplicações sensíveis à latência.

A experiência incluiu configuração de Listeners, Target Groups, verificações de saúde e integração com outros serviços AWS via AWS Management Console, AWS CLI e Terraform.

Tecnologias:

  • Configuração: Edição manual de ficheiros, Ansible, Chef, Puppet.
  • Infraestrutura como código: Terraform para implantação automática e gestão de balanceadores na nuvem.
  • Monitorização: Prometheus, Grafana com exporters para HAProxy/Nginx ou via CloudWatch para AWS ELB.
  • CIDI: Integração de configuração e reajuste de balanceadores em pipelines CI/CD.

De modo geral, a escolha do balanceador dependia dos requisitos da aplicação (tipo de tráfego, desempenho, funcionalidades), infraestrutura (nuvem ou on-premise) e orçamento.