No cenário digital acelerado de hoje, garantir a disponibilidade e o desempenho das aplicações é essencial. Infraestruturas modernas exigem soluções robustas para distribuir o tráfego de forma eficiente e manter a disponibilidade dos serviços, mesmo diante de falhas de servidores. É nesse contexto que o HAProxy se destaca como o padrão de mercado para balanceamento de carga e failover de alto desempenho.
Este artigo explora a sinergia entre o HAProxy e o Ubuntu, uma das distribuições Linux mais populares. Vamos abordar desde a instalação até configurações avançadas, demonstrando como o HAProxy pode transformar sua infraestrutura com capacidades de balanceamento de carga e alta disponibilidade.
Entendendo o Balanceamento de Carga
O balanceamento de carga é o processo de distribuir o tráfego de rede entre múltiplos servidores. Isso evita que um único servidor fique sobrecarregado, resultando em maior desempenho, confiabilidade e tolerância a falhas.
Benefícios principais
- Escalabilidade: Possibilidade de lidar com aumento de tráfego adicionando mais servidores.
- Confiabilidade: Redireciona o tráfego para servidores saudáveis em caso de falhas.
- Desempenho: Reduz a latência distribuindo a carga de maneira uniforme.
Tipos de balanceamento
- Camada 4 (Camada de Transporte): Distribui o tráfego com base nas informações de IP e porta.
- Camada 7 (Camada de Aplicação): Toma decisões de roteamento com base em dados da aplicação, como cabeçalhos HTTP.
Conceitos de Failover
O failover garante a continuidade do serviço ao redirecionar automaticamente o tráfego para recursos de backup quando os primários falham. É um pilar fundamental de configurações de alta disponibilidade (HA).
Com o HAProxy, o failover é transparente:
- Se um servidor backend se tornar indisponível, o HAProxy detecta via verificações de integridade.
- O tráfego é redirecionado para outros servidores disponíveis, mantendo o serviço sem interrupções.
Configurando o HAProxy no Ubuntu
A seguir, veremos como instalar e configurar o HAProxy no Ubuntu.
Pré-requisitos
- Um servidor Ubuntu (recomendado 20.04 ou superior).
- Múltiplos servidores backend para testar o balanceamento de carga.
Passo 1: Instalando o HAProxy
Atualize seu sistema:
sudo apt update && sudo apt upgrade -y
Instale o HAProxy:
sudo apt install haproxy -y
Verifique a instalação:
haproxy -v
Passo 2: Configurando o HAProxy
Edite o arquivo de configuração em /etc/haproxy/haproxy.cfg
:
global
log /dev/log local0
log /dev/log local1 notice
maxconn 2048
daemon
defaults
log global
option httplog
option dontlognull
timeout connect 5000ms
timeout client 50000ms
timeout server 50000ms
frontend http_front
bind *:80
default_backend http_back
backend http_back
balance roundrobin
server server1 192.168.1.101:80 check
server server2 192.168.1.102:80 check
Reinicie o HAProxy para aplicar as alterações:
sudo systemctl restart haproxy
Teste acessando o IP do seu servidor. O HAProxy distribuirá as solicitações entre os servidores backend.
Configurações Avançadas
Algoritmos de Balanceamento
- Round Robin: Distribui as solicitações sequencialmente.
- Menor Número de Conexões: Roteia para o servidor com menos conexões ativas.
- Origem: Garante que um cliente sempre seja roteado para o mesmo servidor.
Atualize a diretiva balance
no backend conforme necessário.
Verificações de Integridade
As verificações de integridade garantem que o tráfego seja enviado apenas para servidores saudáveis. A diretiva check
executa verificações periódicas.
Terminação SSL
Para proteger o tráfego, configure o HAProxy para gerenciar a terminação SSL.
- Obtenha um certificado SSL.
- Atualize a configuração para usar HTTPS:
frontend https_front
bind *:443 ssl crt /etc/haproxy/certs/example.pem
default_backend http_back
Listas de Controle de Acesso (ACLs)
Use ACLs para filtrar o tráfego:
frontend http_front
acl is_api path_beg /api
use_backend api_back if is_api
Habilitando Alta Disponibilidade
VRRP com Keepalived
Para habilitar failover, integre o Keepalived ao HAProxy.
Instale o Keepalived:
sudo apt install keepalived -y
Configure o Keepalived em /etc/keepalived/keepalived.conf
:
vrrp_instance VI_1 {
state MASTER
interface eth0
virtual_router_id 51
priority 100
advert_int 1
authentication {
auth_type PASS
auth_pass mypassword
}
virtual_ipaddress {
192.168.1.100
}
}
Reinicie o Keepalived:
sudo systemctl restart keepalived
Quando o servidor primário falhar, o Keepalived garantirá que o secundário assuma o controle de forma transparente.
Monitoramento e Otimização de Desempenho
Painel de Estatísticas do HAProxy
Habilite o painel para monitoramento em tempo real:
listen stats
bind *:8404
stats enable
stats uri /stats
stats auth admin:password
Acesse em http://<ip-do-servidor>:8404/stats
.
Dicas de Otimização
- Ajuste os valores de
maxconn
etimeout
. - Use compressão gzip para tráfego HTTP.
- Monitore os logs para identificar anomalias.
Casos de Uso e Cenários Reais
- Microsserviços: Distribua requisições de APIs entre múltiplos serviços.
- Aplicações Web: Gerencie picos de tráfego escalando servidores backend.
- Balanceamento de Banco de Dados: Otimize operações de leitura e escrita.
Solução de Problemas Comuns
Problemas de Conectividade
- Verifique as regras de firewall.
- Certifique-se de que os servidores backend estão saudáveis.
Gargalos de Desempenho
- Aumente o limite de descritores de arquivos (
ulimit
). - Otimize as configurações dos servidores backend.
Ao combinar o HAProxy com o Ubuntu, você obtém uma poderosa solução para gerenciar tráfego e garantir alta disponibilidade. Com as etapas detalhadas acima, você pode construir uma infraestrutura resiliente capaz de lidar com altas cargas e falhas de servidores.
Comece a experimentar o HAProxy hoje mesmo e desbloqueie todo o potencial de seus sistemas baseados em Ubuntu.
Sou um profissional na área de Tecnologia da informação, especializado em monitoramento de ambientes, Sysadmin e na cultura DevOps. Possuo certificações de Segurança, AWS e Zabbix.