Blog do VG

Codificar é uma arte, mas nem todo mundo é um artista.

LinuxTutoriais

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.

vanderson

Analista/Desenvolvedor de Sistemas, Gamer, Blogger e um jogador de futebol praticamente profissional (no vídeogame).