Logo Passei Direto
Buscar
Material
páginas com resultados encontrados.
páginas com resultados encontrados.

Prévia do material em texto

LAB: Balanceamento de carga com HAProxy v1.3 
 
LAB: Balanceamento de carga com HAProxy 
 
Fonte: https://www.ricardomartins.com.br/2014/04/02/balanceamento-de-carga-com-haproxy/ 
https://pplware.sapo.pt/tutoriais/tutorial-balanceamento-de-carga-em-servidores-com-haproxy/ 
https://phcco.com/alta-disponibilidade-e-balanceamento-de-carga-http-com-haproxy 
 
 
O que é o HAProxy? 
 
O HAProxy é oferecido como um confiável balanceador de carga de alto desempenho para HTTP e TCP; na prática 
ele recebe as conexões dos usuários e atua como um proxy, criando um canal entre o usuário e um dos servidores de 
aplicação; esta aplicação possui alguns mecanismos interessantes para escolher o servidor web que deve encaminhar 
a solicitação do usuário. Dentre as estratégias de escalonamento suportadas as mais importantes, no meu ponto de 
vista, são: 
 
Round-robin 
Onde o servidor é escolhido de forma circular, independente da carga em cada um dos servidores de aplicação; 
 
Menos conexões: 
Onde o servidor com menos conexões é escolhido, o que garante que o servidor mais ocioso seja utilizado; 
 
Cookie: 
Onde o HAProxy tentará sempre indicar o mesmo servidor que o usuário conectou pela primeira vez; 
 
Hash de IP: 
Neste caso a aplicação irá escolher o servidor de acordo com o IP. 
 
Dentre os mecanismos acima, apenas o mecanismo de cookie não é um escalonador do HAProxy, ou seja, deve ser 
combinado com o escalonador round-robin ou de menos conexões; o mecanismo de cookie ou o escalonador por hash 
de IP são muito importantes para garantir que seu cliente não perca a sessão da aplicação HTTP; sem isso seu usuário 
pode ser "deslogado" da aplicação quando o escalonador trocar o servidor de aplicação; o uso do escalonador de 
menos conexões é muito útil em casos onde as conexões demoram a ser fechadas, nestes casos evita-se que por uma 
"sorte" um servidor seja sempre escolhido para as conexões mais demoradas. 
 
Premissas e informações importantes 
 
Lembre-se: vamos utilizar 3 máquinas virtuais conectadas via recurso Rede NAT do VirtualBox; logo, o próprio monitor 
de máquinas virtuais que deve disponibilizar o endereço IP para cada VM; verifique se a associação ao endereço foi 
realizada corretamente através do comando ipconfig: 
root@debian:~# ifconfig 
 
Não se esqueça de verificar se os “cabos de rede estão conectados” nas máquinas virtuais e se a conectividade de 
rede está disponível (efetue um tente “pingando” o Proxy UNIP): 
root@debian:~# ping 192.168.0.1 
 
 
 
 
LAB: Balanceamento de carga com HAProxy v1.3 
 
Atenção: os próximos passos devem deve ser executado nas três VMs pois existem módulos que precisam 
ser instalados em cada uma das máquinas. 
Vamos iniciar configurando o proxy do espelho de rede (APT); no diretório /etc/apt, crie um arquivo com nome apt.conf; 
abaixo alguns dos comandos mais utilizados no editor nano: 
root@debian:~# nano /etc/apt/apt.conf 
 
CTRL + X: Sai do editor. Se você estiver no meio da edição de um arquivo, o processo de saída irá perguntar se você 
quer salvar seu trabalho. 
CTRL + K: Recorta o texto da linha. 
CTRL + U: Colar o texto da linha recortada anteriormente. 
CTRL + O: Salva o arquivo aberto e continua trabalhando. 
CTRL + W: Faz uma busca no texto. 
CTRL + A: Leva o cursor para o início da linha. 
CTRL + E: Leva o cursor para o fim da linha. 
 
Adicione as informações abaixo no referido arquivo; esta configuração indica ao APT qual o proxy de internet para sua 
navegação e download; respeite maiúsculas e minúsculas, mantendo a formatação idêntica ao conteúdo 
descrito: 
 
Acquire { 
HTTP::proxy "http://192.168.0.1:8080"; 
FTP::proxy "http://192.168.0.1:8080"; 
} 
 
Além da configuração do proxy, o APT precisa ser informado sobre os repositórios onde deve buscar os pacotes de 
instalação; configure o arquivo /etc/apt/sources.list conforme exemplo. 
root@debian:~# nano /etc/apt/sources.list 
 
Adicione somente as linhas abaixo; referências a CD´s ou DVD´s devem ser comentadas (coloque um “#” na frente da 
linha a ser comentada): 
 
deb http://ftp.br.debian.org/debian jessie main 
deb-src http://ftp.br.debian.org/debian jessie main 
 
deb http://ftp.br.debian.org/debian jessie-updates main 
deb-src http://ftp.br.debian.org/debian jessie-updates main 
 
deb http://security.debian.org/ jessie/updates main 
deb-src http://security.debian.org/ jessie/updates main 
 
 
 
LAB: Balanceamento de carga com HAProxy v1.3 
 
Load Balance com HAProxy e Apache2 
 
Neste LAB, vamos montar um cenário simples usando três servidores virtuais com os seguintes hostnames: 
 
haproxy (10.0.2.XXX*): HAProxy configurado e funcionando como Load Balancer 
apache1 (10.0.2.XXX*): Servidor Web Apache2 
apache2 (10.0.2.XXX*): Servidor Web Apache2 
 
* XXX é o IP de cada uma das máquinas que foi delegado pelo VirtualBox; verifique (e anote!) os endereços de cada 
uma das máquinas através do comando abaixo (lembrando que a placa que conecta a VM a internet é a nomeada 
como ETH0): 
root@debian:~# ifconfig 
 
 
Configuração da VM haproxy - Instalação e Configuração do HAProxy 
 
Em primeiro lugar, verifique se hostname da VM denominada como “Debian_Cluster_HAProxy” está setado para 
“haproxy”; caso contrário altere o nome da máquina utilizando o comando abaixo: 
root@haproxy:~# nano /etc/hostname 
 
Para efetivar a alteração, reinicie a máquina utilizando o comando init: 
root@haproxy:~# init 6 
 
Feito isso, faça novo logon no shell e atualize o repositório do APT utilizando o comando abaixo: 
root@haproxy:~# apt-get update 
 
Instale o HAProxy utilizando o APT; segue comando: 
root@haproxy:~# apt-get install haproxy 
 
Renomeie o arquivo de configuração default utilizando o comando a seguir: 
root@haproxy:~# mv /etc/haproxy/haproxy.cfg /etc/haproxy/haproxy.cfg.ori 
 
Crie um novo arquivo de configuração utilizando o editor nano: 
root@haproxy:~# nano /etc/haproxy/haproxy.cfg 
 
 
 
LAB: Balanceamento de carga com HAProxy v1.3 
 
No caso vamos usar o algoritmo de balanceamento Round Robin; existem outras opções de configuração que você 
pode definir de acordo com sua necessidade; com o arquivo haproxy.cfg aberto no nano, digite as linhas a seguir; 
ATENÇÃO durante a digitação: 
 
global 
log 127.0.0.1 local0 
maxconn 4096 
user haproxy 
group haproxy 
daemon 
 
defaults 
log global 
mode http 
option httplog 
option dontlognull 
retries 3 
option redispatch 
maxconn 2000 
contimeout 5000 
clitimeout 50000 
srvtimeout 50000 
 
listen web-farm 0.0.0.0:80 
cookie SERVERID rewrite 
balance roundrobin 
server apache1 10.0.2.XXX:80 cookie app1inst1 check inter 2000 rise 2 fall 5 
server apache2 10.0.2.XXX:80 cookie app1inst2 check inter 2000 rise 2 fall 5 
 
Reinicie o serviço do HAProxy utilizando o comando abaixo: 
root@haproxy:~# /etc/init.d/haproxy restart 
 
 
Configuração da VM apache1 - Instalação e Configuração do Web Apache 1 
 
Em primeiro lugar, verifique se hostname da VM denominada como “Debian_Cluster_Apache_1” está setado para 
“apache1”; caso contrário altere o nome da máquina utilizando o comando abaixo: 
root@apache1:~# nano /etc/hostname 
 
Para efetivar a alteração, reinicie a máquina utilizando o comando init: 
root@apache1:~# init 6 
 
Feito isso, faça novo logon no shell e atualize o repositório do APT utilizando o comando abaixo: 
root@apache1:~# apt-get update 
 
 
 
 
LAB: Balanceamento de carga com HAProxy v1.3 
 
Agora instale o pacote do Web Server Apache2 utilizando o comando abaixo: 
root@apache1:~# apt-get install apache2 
 
Adicione a informação abaixo na página de apresentação do Apache; assim podemos identificar qual o servidor WEB 
que o client está conectado: 
root@apache1:~# echo Servidor Apache1 >> /var/www/html/index.html 
 
Reinicie o serviço do Apache2 utilizando o comando abaixo: 
root@apache1:~# /etc/init.d/apache2 restart 
 
 
Configuração da VM apache2 - Instalação e Configuração do Web Apache 2Em primeiro lugar, verifique se hostname da VM denominada como “Debian_Cluster_Apache_2” está setado para 
“apache2”; caso contrário altere o nome da máquina utilizando o comando abaixo: 
root@apache2:~# nano /etc/hostname 
 
Para efetivar a alteração, reinicie a máquina utilizando o comando init: 
root@apache2:~# init 6 
 
Feito isso, faça novo logon no shell e atualize o repositório do APT utilizando o comando abaixo: 
root@apache2:~# apt-get update 
 
Agora instale o pacote do Web Server Apache2 utilizando o comando abaixo: 
root@apache2:~# apt-get install apache2 
 
Adicione a informação abaixo na página de apresentação do Apache; assim podemos identificar qual o servidor WEB 
que o client está conectado: 
root@apache2:~# echo Servidor Apache2 >> /var/www/html/index.html 
 
Reinicie o serviço do Apache2 utilizando o comando abaixo: 
root@apache2:~# /etc/init.d/apache2 restart 
 
 
 
 
 
LAB: Balanceamento de carga com HAProxy v1.3 
 
Testando a configuração do Load Balancer HAProxy 
 
Para validar sua configuração, instale o módulo curl; esta ferramenta permite transferência de dados através de uma 
série de protocolos de Internet como HTTP, FTP, Telnet, LDAP, IMAP, POP3, SMTP, e muito mais; na VM denominada 
“Debian_Cluster_HAProxy” execute o donwload do módulo através do comando abaixo: 
root@haproxy:~# apt-get install curl 
 
Para validar seu ambiente de Alta Disponibilidade, utilize o comando curl da seguinte maneira: 
root@haproxy:~# curl 10.0.2.XXX  IP da VM HAProxy 
 
Repetindo este comando algumas vezes, você deve constatar que cada refresh força a distribuição de carga 
para um dos servidores Web Apache, somente repetindo o mesmo nó se um dos dois estiver fora de serviço. 
Instale o curl em ambos os nós Apache e repita o mesmo teste conforme comando abaixo; assim validamos que a alta 
disponibilidade atende a todos as maquinas que estão conectadas ao Sistema Distribuído. 
root@apache1:~# curl 10.0.2.XXX  IP da VM HAProxy 
ou 
root@apache2:~# curl 10.0.2.XXX  IP da VM HAProxy 
 
 
Desafio! 
 
Aproveitando a infraestrutura construída neste LAB, adicione mais um nó ao cluster e apresente o comportamento 
do HAProxy com 3 instâncias do Apache.

Mais conteúdos dessa disciplina