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