Instalando a última versão do HAProxy no CentOS/RHEL 7
Fala Devs, tudo sussa?
Neste post vou explicar como instalar a última versão do HAProxy no CentOS 7, se você tentou instalar pelo YUM provavelmente se deparou com alguma versão desatualizada, conforme essa imagem aqui.
por isso vamos instalar e configurar o HaProxy direto do fonte, vou partir da premissa que se você chegou até aqui eu não preciso explicar o que é o HAProxy.
No momento da escrita deste post, a última versão estável é a 2.5.5 e é ela que vamos instalar.
Então, abra sua shellzinha aí e vamo lá.
A primeira coisa que precisamos fazer é instalar alguns pré-requisitos para conseguir compilar do fonte, execute o comando abaixo:
sudo yum install gcc pcre-devel openssl-devel tar make -y
Depois disso vamos baixar o HaProxy com o comando abaixo.
wget http://www.haproxy.org/download/2.5/src/haproxy-2.5.5.tar.gz
Depois de baixar, vamos extrair pra uma pasta
tar xzvf ~/haproxy-2.5.5.tar.gz -C ~/
Agora vamos entrar na pasta
cd ~/haproxy-2.5.5
Compilar
make TARGET=linux-glibc USE_PCRE=1 USE_OPENSSL=1 USE_ZLIB=1 USE_CRYPT_H=1 USE_LIBCRYPT=1
E instalar
sudo make install
Depois disso nós temos o HaProxy instalado, mas ainda precisamos fazer algumas configurações.
Vamos criar alguns diretórios e um arquivo de estatísticas do HaProxy
sudo mkdir -p /etc/haproxy sudo mkdir -p /var/lib/haproxy sudo touch /var/lib/haproxy/stats
Criar um link simbólico para o binário do HaProxy pra poder rodar os comandos como usuário normal.
sudo ln -s /usr/local/sbin/haproxy /usr/sbin/haproxy
Agora precisamos adicionar o HaProxy como um serviço do sistema, o HaProxy já tem um arquivo de exemplo chamado haproxy.init na pasta examples, então vamos copiar este arquivo para dentro do diretório /etc/init.d/ e renomear ele pra haproxy, depois disso vamos alterar a permissão do arquivo e reiniciar o daemon do sistema.
sudo cp ~/haproxy-2.5.5/examples/haproxy.init /etc/init.d/haproxy sudo chmod 755 /etc/init.d/haproxy sudo systemctl daemon-reload
Depois disso precisamos habilitar o serviço para inicializar do boot do sistema.
sudo chkconfig haproxy on
A documentação do HaProxy também recomenda criar um usuário para rodar o HaProxy
sudo useradd -r haproxy
Agora vamos verificar a versão do sistema
haproxy -v
E deve aparecer algo tipo essa imagem aqui
Por fim vamos fazer uma liberação no firewall
sudo firewall-cmd --permanent --zone=public --add-service=http sudo firewall-cmd --permanent --zone=public --add-service=https sudo firewall-cmd --reload
Para instalar o mod_ssl execute o comando abaixo
sudo yum install mod_ssl -y
Depois disso seu HaProxy vai estar totalmente funcional, bastando ajustar o balanceamento no arquivo /etc/haproxy/haproxy.cfg
Abaixo segue um exemplo do arquivo de configuração, altere os ips em servers para os ips dos seus servidores.
global log /dev/log local0 log /dev/log local1 notice chroot /var/lib/haproxy stats timeout 30s user haproxy group haproxy daemon defaults log global mode http option httplog option dontlognull timeout connect 5000 timeout client 50000 timeout server 50000 frontend http_front bind *:80 stats uri /haproxy?stats default_backend http_back backend http_back balance roundrobin server server1 192.168.100.172:80 check server server2 192.168.100.173:80 check
Depois de alterar o arquivo de configuração não esqueça de reiniciar o serviço
systemctl restart haproxy
Para verificar como ficou o seu balanceamento basta acessar http://ipdoseuservidorcomhaproxy/haproxy?stats
E você deve ver uma telinha parecida com essa aqui.
Se os servidores estiverem em verde significa que o HaProxy está conseguindo redirecionar o tráfego e fazer o health check deles com sucesso, caso contrário pode ser necessário verificar o firewall nos seus servidores de destino.
Troubleshooting
Se estiver tendo algum problema no arquivo de configuração e quiser fazer um troubleshotting, execute o comando abaixo, ele vai exibir em detalhes o problema encontrado no arquivo de configuração.
sudo haproxy -c -f /etc/haproxy/haproxy.cfg
Então é isso, espero que este post tenha ajudado vocês, bjundas.



