DESCRITIVO DO AMBIENTE
NOTA: é importante que todos os servidores tenham acesso direto à Internet. Em muitas corporações, principalmente no Governo, que é o meu caso, é necessário um IP válido, liberações de firewall etc. Neste artigo estou visando somente o funcionamento da solução.
Também vou considerar que os servidores Squid já estejam configurados e em funcionamento.
Para todos os servidores foi usado o Centos 6.4.
O LVS (Linux Virtual Server) é muito usado em soluções de servidores Web, por quê não utilizá-lo em outras situações? Este recurso permite que as requisições que cheguem nele sejam direcionadas à outros servidores (2, 3, 4, N servidores).
- o cliente faz a requisição
- o LVS encaminha ao PROXY
- o proxy responde direto ao cliente
(o caminho de volta não passa pelo LVS)
Servidor LVS:
ETH0=192.168.0.1/24
ETH0:0= 192.168.0.4/24
Servidor Proxy1:
ETH0=192.168.0.2/24
lo:0=192.168.0.4/32
Servidor Proxy1:
ETH0=192.168.0.3/24
lo:0=192.168.0.4/32
INSTALAÇÃO E CONFIGURAÇÃO LVS
# vim /etc/sysconfig/network-scripts/ifcfg-eth0
(neste arquivo altere os valores de IP, máscara, gateway etc)
Configure o IP Virtual:
# ifconfig eth0:0 192.168.0.4 netmask 255.255.255.0 broadcast 192.168.0.255
Instale o pacote do LVS – ipvsadm:
# yum install ipvsadm
Coloque o serviço para ser iniciado junto com o sistema
# ntsysv
Marque o serviço ipvsadm.
Adicione as regras:
ipvsadm -a -t 192.168.0.4:8080 -r 192.168.0.2:8080 -g
ipvsadm -a -t 192.168.0.4:8080 -r 192.168.0.3:8080 -g
Para facilitar, crie um arquivo com estas entradas e o adicione ao rc.local do servidor. Assim, sempre que os servidor reiniciar as regras serão iniciadas automaticamente.
Pronto, o LVS está configurado. Agora vamos configurar os servidores Proxy1 e Proxy2.
CONFIGURAÇÃO REDE PROXY1 E PROXY2
PROXY1
Considerando que o IP da placa ETH0 esteja configurado, vamos configurar a interface que irá comunicar e atender as requisições com o LVS.
# ifconfig lo:0 192.168.0.4 netmask 255.255.255.255
Desabilite o envio de ARP:
# ifconfig lo:0 -arp up
Obs.: crie um script com os comandos acima e deixe-o na inicialização do rc.local.
Faça a mesma coisa no servidor Proxy2.
PROXY 2
Execute:
# ifconfig lo:0 192.168.0.4 netmask 255.255.255.255
Desabilite o envio de ARP:
# ifconfig lo:0 -arp up
Bem, se tudo tiver sido feito conforme o tutorial, vamos aos testes.
Em uma estação de trabalho (192.168.0.10) configure o proxy:
Servidor: 192.168.0.4
Porta: 8080
Acesse o site de algum portal (globo.com, uol.com.br etc) e verá que as requisições serão direcionadas aos dois servidores.
No servidor LVS, para verificar se as regras estão aplicadas:
# ipvsadm -L -n –stats
IP Virtual Server version 1.2.1 (size=4096) Prot LocalAddress:Port Conns InPkts OutPkts InBytes OutBytes -> RemoteAddress:Port TCP 192.168.0.4:8080 5333 28186 0 1740404 0 -> 192.168.0.2:8080 2517 13291 0 820673 0 -> 192.168.0.3:8080 2816 14895 0 919731 0
Nos servidores proxy monitore o acesso:
# tail -f /var/log/squid/access.log | grep 192.169.0.10
Pronto. Agora é só fazer alguns ajustes se necessário, como iniciação de serviços, firewall etc.
Obs.: no meu ambiente precisei desabilitar o iptables, isso porque já possuo firewall de borda.
Boa sorte!