Pplware

Tutorial – Balanceamento de carga em servidores com HAProxy

Hoje em dia é importante garantir alta disponibilidade dos serviços online. Para esse cenário, é fundamental ter mais do que uma máquina e no caso de existirem muitos pedidos esse serem distribuídos pela várias máquina.

Este balanceamento de cargas pode ser feito usado o software HAProxy. Hoje mostramos como tudo funciona.

O HAProxy é um serviço Linux que garante um balanceamento e alta disponibilidade numa farm de servidores, como também serviço de proxying, ao não expor directamente estes mesmos servidores da farm na Internet.

Neste tutorial pretende-se configurar o HAProxy, de modo a garantir as funções referidas acima, numa farm constituída por dois webservers.

Cenário de Demonstração

Serão configuradas três máquinas virtuais, numa VLAN isolada e com endereçamento:

O cliente para este caso específico terá de estar também no mesmo segmento de rede e VLAN dos três servidores acima.

O sistema operativo utilizado nas três máquinas virtuais é Ubuntu, e o hypervisor é VMware (neste caso foi utilizado VMware Workstation).

Para quem desconhece, a imagem abaixo mostra como configurar VLANs a nível do VMWare workstation:

Configuração do Node1 e 2 (webservers) e virtualhost test.dev

Instalar apache2 sudo apt-get install apache2

Criar directório test.dev

sudo mkdir /var/www/html/test.dev

Definir permissões

sudo chown -R $USER:$USER /var/www/html/test.dev sudo chmod -R 755 /var/www

Criar index.html (para testes)

sudo nano /var/www/html/test.dev/index.html

Criar um VirtualHost que aponte para test.dev bastr:

sudo cp /etc/apache2/sites-available/000-default.conf /etc/apache2/sites-available/test.dev.conf

sudo nano /etc/apache2/sites-available/test.dev.conf

ServerAdmin webmaster@localhost ServerName test.dev ServerAlias www.test.dev DocumentRoot /var/www/html/test.dev Options Indexes FollowSymLinks MultiViews AllowOverride all Order allow, deny allow from all ErrorLog ${APACHE_LOG_DIR}/error.log CustomLog ${APACHE_LOG_DIR}/access.log combined

Para activarem o VH usando o a2ensite, e reiniciar o apache basta que usem os seguintes comandos:

sudo a2ensite test.dev.conf sudo service apache2 restart

Para configurar no Node2, basta apenas fazer os mesmos passos, mas alterar as palavras a negrito para Node2. Esta configuração servirá para distinguir o acesso ao mesmo site, mas o seu carregamento dos diferentes nós da farm.

Configuração do balanceador (HAProxy)

Instalar HAProxy

sudo apt-get install haproxy

Adicionar ao ficheiro /etc/default/haproxy a linha:

ENABLED=1

Criar cópia de segurança do ficheiro de configuração:

cp /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg_bck

Remover todo o texto do ficheiro /etc/haproxy/haproxy.cfg e adicionar o seguinte:

global log /dev/log local0 log 127.0.0.1 local1 notice maxconn 4096 user haproxy group haproxy daemon

defaults log global option httplog option dontlognull retries 3 option redispatch maxconn 2000 contimeout 5000 clitimeout 50000 srvtimeout 50000 mode http #define o modo de funcionamento do balanceador(1)

listen webfarm bind 192.168.0.1:80 #apenas escuta neste IP do balanceador, e no porto 80 stats enable #activa as estatisticas do serviço (2) stats auth admin:admin #autenticação nas estatísticas acl url_test_dev path_beg /test.dev #definição da acl use_backend testdev if url_test_dev #associar a acl a um grupo de servers

backend testdev #define a farm de servers backend para o site test.dev balance roundrobin #define o algoritmo de balanceamento server node1 192.168.0.10:80 check # define o servidor e porto e o parâmetro de Health check server node2 192.168.0.11:80 check # define o servidor e porto e o parâmetro de Health check

Restart ao serviço HAProxy

sudo service haproxy restart

(1) In layer 7 mode, HAProxy analyzes the protocol, and can interact with it by allowing, blocking, switching, adding, modifying, or removing arbitrary contents in requests or responses, based on arbitrary criteria. Com isto podemos inspeccionar o pedido e fazer o forward do mesmo correctamente.
(2) Aceder às estatísticas através do url: 192.168.0.1/haproxy?stats e inserir as credenciais admin/admin

Aceder ao cliente, e no browser do mesmo colocar: 192.168.0.1/test.dev

Ir fazendo refresh várias vezes e validar o carregamento do site a partir do Node1 e 2 (tal como mostra a figura seguinte).

Se necessitam de um “balanceador de cargas” então o HAProxy pode ser uma solução interessante tento em conta que é opensource. O serviço tem ainda um sistema de reports que pode ser conhecido através deste demo aqui.

Exit mobile version