Como usar o HAProxy no Symfony?
O que é HAProxy e por que usá-lo em conjunto com o Symfony?
HAProxy é um balanceador de carga de software livre e de alto desempenho que pode ser usado para redirecionar o tráfego de entrada para servidores de destino. Ele fornece uma camada adicional de segurança e escalabilidade para aplicativos da Web. Usar o HAProxy em conjunto com Symfony pode ajudar a melhorar a disponibilidade e o desempenho do seu aplicativo, especialmente em casos de aumento repentino de tráfego e picos de uso.
Como instalar o HAProxy?
A instalação do HAProxy é bastante simples e pode ser facilmente feita em sistemas baseados em Linux, como Ubuntu e CentOS, por meio do gerenciador de pacotes. Para instalar o HAProxy no Ubuntu, por exemplo, abra um terminal e execute o seguinte comando:
sudo apt-get install haproxy
Depois que o HAProxy estiver instalado, você pode começar a configurá-lo para usar com o Symfony.
Como configurar o HAProxy para o Symfony?
Antes de começar a configurar o HAProxy para o Symfony, você precisa ter um ambiente de implantação do Symfony configurado e funcionando corretamente. Aqui, vamos supor que você tenha três servidores em execução, cada um com a mesma versão do seu aplicativo Symfony. Para configurar o HAProxy, você precisará criar um arquivo haproxy.cfg dentro do diretório /etc/haproxy. Em seguida, abra o arquivo e adicione o seguinte:
listen myapp 0.0.0.0:80
balance roundrobin
server server1 192.168.1.100:80 check
server server2 192.168.1.101:80 check
server server3 192.168.1.102:80 check
Esse trecho de código define um ouvinte para o aplicativo ‘myapp’ na porta 80, com balanceamento de carga circular para distribuir o tráfego de entrada entre os três servidores de destino. Cada servidor é identificado pelo seu endereço IP e porta associada, seguido pelo atributo “check” para garantir que o HAProxy monitore continuamente a disponibilidade do servidor.
Como reiniciar o HAProxy após a atualização de configuração?
Depois de atualizar o arquivo haproxy.cfg com as configurações desejadas, você precisará reiniciar o serviço HAProxy para que as alterações entrem em vigor. Para fazer isso, execute o seguinte comando:
sudo service haproxy restart
Com isso, o HAProxy será reiniciado e começará a usar as novas configurações.
Como verificar o status do HAProxy?
Para verificar se o HAProxy está em execução e se está equilibrando o tráfego corretamente, você pode usar o seguinte comando:
sudo haproxy -c -V -f /etc/haproxy/haproxy.cfg
Este comando verifica a sintaxe do arquivo de configuração (com a opção -c) e imprime informações detalhadas sobre a versão e a configuração do HAProxy (com a opção -V), usando o arquivo haproxy.cfg como entrada.
Como monitorar as estatísticas do HAProxy?
O HAProxy inclui um recurso de monitoramento de estatísticas integrado que pode ser usado para monitorar o tráfego de entrada, os servidores de destino e outros dados relevantes. Para ativar o recurso de estatísticas, adicione o seguinte ao arquivo haproxy.cfg:
listen stats :9000
mode http
stats enable
stats realm Haproxy Statistics
stats uri /haproxy_stats
stats auth username:password
Este trecho de código define um ouvinte para o monitor de estatísticas na porta 9000, com autenticação básica usando o nome de usuário e a senha fornecidos. Para acessar as estatísticas do HAProxy, navegue até http://
/haproxy_stats em um navegador da Web e faça login com as credenciais fornecidas. Como escalonar a instância HAProxy?
Se seu aplicativo Symfony precisar lidar com um volume de tráfego realmente alto, é possível escalar a instância do HAProxy criando várias instâncias e executando cada uma em um servidor diferente. Isso é conhecido como escalonamento horizontal. Para configurar vários balanceadores de carga, você precisará usar um serviço de descoberta de serviços, como Consul ou Etcd, para garantir que todos os balanceadores de carga conheçam o endereço IP e o nome do host de todos os servidores de destino.
Como monitorar o HAProxy com o Nagios?
Se você estiver usando o Nagios para monitorar seus servidores e aplicativos, pode ser útil monitorar também o HAProxy para garantir que ele esteja em execução e funcionando corretamente. O Nagios possui um plugin de monitoramento HAProxy que pode ser usado para verificar a latência, a perda de pacotes e outros parâmetros relacionados ao HAProxy. Você pode baixar o plugin em https://exchange.nagios.org/directory/Plugins/Proxy-Server/Haproxy/check_haproxy/details.
Como configurar o SSL no HAProxy?
Se você deseja fornecer um ambiente seguro para seus usuários, pode configurar o HAProxy para usar SSL/TLS para criptografar o tráfego. Para fazer isso, você precisará gerar um certificado SSL/TLS válido e configurar o HAProxy para usar esse certificado. Aqui está um exemplo de configuração que usa o Certbot para gerar um certificado:
frontend myapp
bind *:443
mode tcp
tcp-request inspect-delay 5s
tcp-request content accept if { req.ssl_hello_type 1 }
use_backend be_myapp if { req.ssl_hello_type 1 }
backend be_myapp
mode tcp
balance roundrobin
server server1 192.168.1.100:443 check
server server2 192.168.1.101:443 check
server server3 192.168.1.102:443 check
ssl crt /etc/haproxy/certs/myapp.pem
Você precisará salvar o certificado gerado em /etc/haproxy/certs/myapp.pem. Este trecho de código define um ouvinte para o aplicativo ‘myapp’ na porta 443 usando SSL/TLS, com balanceamento de carga circular para distribuir o tráfego de entrada entre os três servidores de destino.
Como aumentar os limites de conexão no HAProxy?
Se você está executando um aplicativo da Web de grande escala usando o HAProxy, pode precisar aumentar os limites padrão de conexão do HAProxy para acomodar um grande número de conexões simultâneas. Para fazer isso, você precisará ajustar as configurações padrão do kernel do Linux usando o seguinte comando:
sudo sysctl -w net.core.somaxconn=4096
Este comando aumentará o número máximo de conexões simultâneas de 128 para 4096. Você também pode aumentar os limites adicionando as seguintes linhas ao arquivo /etc/sysctl.conf:
net.core.somaxconn = 4096
net.ipv4.tcp_max_syn_backlog = 4096
Essas configurações aumentarão os limites de conexão e backlog do kernel para permitir mais conexões simultâneas.