Você está na página 1de 6

Aplicando balanceamento de carga e alta

disponibilidade em um proxy usando


DNS round robin, Linux, Squid, Heart
Beat e Mon.
By Esdras, on outubro 30th, 2008
Configurando um Proxy com Balanceamento de carga e Alta disponibilidade usando
DNS round robin, Linux, HeartBeat e Mon.
O propsito desse desse documento explicar como funciona,instalar e configurar um
ambiente de Proxy com Alta disponibilidade e balanceamento de carga.
Consideramos que o Proxy j est instalado e configurado, existem vrios tutoriais na
internet para isso.
Vou dar uma viso geral sobre como funciona o ambiente, segue abaixo uma imagem
que ira ajudar a entender o ambiente:

Vamos la, as mquinas srv001.domain.com e srv002.domain.com respondem para os ips


192.168.1.101 e 192.168.1.102, mas cada mquina tem um vip (virtual ip)
192.168.1.110 e 192.168.1.111. Quando o DNS consultado sobre o host
proxy.domain.com o DNS responde os dois vips de forma aleatria (isso chama-se
round robin) e assim garantimos o balanceamento de carga, como cada ip est em um
servidor os dois ips sero usados e logo os dois servidores sero usados.
A imagem abaixo nos ajuda a entender como funciona a alta disponibilidade:

No exemplo acima o servidor srv001.domain.com parou de responder e o


srv002.domain.com assumiu as duas vips, isso significa nenhum chamado aberto sobre
a queda do proxy de internet.
Obs. Mesmo sem usurio reclamando, ns temos que identificar o problema e corrigir e
nesse documento tem uma configurao que caso der problema no proxy o sistema Mon
nos envia um e-mail avisando o que est acontecendo.
Com essa configurao aumentamos em um 9 nossa disponibilidade, entenda isso no
quadro abaixo:
Disponibilidade (%)

Downtime/ano

Downtime/ms

95%

18 dias 6:00:00

1 dias 12:00:00

96%

14 dias 14:24:00

1 dias 4:48:00

97%

10 dias 22:48:00

0 dias 21:36:00

98%

7 dias 7:12:00

0 dias 14:24:00

99%

3 dias 15:36:00

0 dias 7:12:00

99,9%

0 dias 8:45:35.99

0 dias 0:43:11.99

99,99%

0 dias 0:52:33.60

0 dias 0:04:19.20

99,999%

0 dias 0:05:15.36

0 dias 0:00:25.92

Ufa! Vamos comear a instalao e configurao do ambiente.


Onde fazer download dos pacotes ? ( A documentao foi feita baseada no RHEL 5.2 )
http://download.opensuse.org/repositories/server:/ha-clustering/RHEL_5/x86_64/
http://dag.wieers.com/

Obs. Todos os passos precisam ser feitos nas duas mquinas.


Vamos comear a instalao dos pacotes:
rpm -ivh libheartbeat2-2.99.2-1.1.x86_64.rpm
rpm -ivh heartbeat-common-2.99.2-1.1.x86_64.rpm
rpm -ivh heartbeat-resources-2.99.2-1.1.x86_64.rpm
rpm -ivh perl-TimeDate-1.16-1.2.el5.rf.noarch.rpm
rpm -ivh heartbeat-2.99.2-1.1.x86_64.rpm
rpm -ivh perl-Convert-BER-1.3101-1.el5.rf.noarch.rpm
rpm -ivh perl-Mon-0.11-2.2.el5.rf.noarch.rpm
rpm -ivh perl-AOL-TOC-0.340-1.el5.rf.noarch.rpm
rpm -ivh perl-Math-TrulyRandom-1.0-1.2.el5.rf.x86_64.rpm
rpm -ivh perl-Net-SNPP-1.17-1.2.el5.rf.noarch.rpm
rpm -ivh perl-Time-Period-1.20-2.el5.rf.noarch.rpm
rpm -ivh mon-1.2.0-1.el5.rf.x86_64.rpm
Obs. Pode ser que na sua mquina tenha mais dependencias.
Agora temos o sistema bsico do HeartBeat e do Mon instalado.
O HeartBeat precisa de um canal para testar se o outro n est no ar, ele aceita cabo
serial ou cabo par tranado, a configurao ser feita usando um cabo serial.
Primeiro iremos configurar o HeartBeat.
Copiando os arquivos originais:
cp /usr/share/doc/packages/heartbeat/ha.cf /etc/ha.d/
cp /usr/share/doc/packages/heartbeat/authkeys /etc/ha.d/
cp /usr/share/doc/packages/heartbeat/haresources /etc/ha.d/
Obs. Sempre antes de modificar um arquivo original salve um .orig do arquivo, assim
sempre iremos saber as mudanas feitas.
cd /etc/ha.d/
cp authkeys authkeys.orig
cp ha.cf ha.cf.orig
cp haresources haresources.orig
Primeiro iremos editar o arquivo authkeys, que onde se faz autenticao entre os ns.
cat /etc/ha.d/authkeys
auth 2
2 sha1 XXXXXX <- Coloque sua senha aqui, essa senha para a autenticao entre os
dois hosts
Precisamos deixar esse arquivo com permisso 600
chmod 600 /etc/ha.d/authkeys

Editaremos agora o ha.cf


egrep -v (^#|^$) /etc/ha.d/ha.cf
debugfile /var/log/ha-debug
logfile /var/log/ha-log
logfacility local0
keepalive 2
deadtime 10
serial /dev/ttyS0
auto_failback on
node srv001.domain.com
node srv002.domain.com
Obs. Declare os hosts que esto em nodes no /etc/hosts, e o hostname da mquina deve
ser idntico tambm.O comando uname -n pode te ajudar.
Editaremos o haresources, aqui ficam os comandos/servios que mudaram quando o
outro host cair
egrep -v (^$|^#) /etc/ha.d/haresources
srv001.domain.com 192.168.1.110/24/eth0
srv002.domain.com 192.168.1.111/24/eth0
As linhas acima querem dizer que cada um dos ns tem um ip diferente, mas quando um
deles cair o outro n assume os dois.
O Importante agora que voc faa inmeros testes, reboot a mquina, pare o heartbeat,
estude o comportamento do cluster.
Agora vamos instalar o Mon, ele quem vai monitorar o squid e caso o processo pare de
responder o Mon vai nos alertar e parar o heartbeat, assim o outro n responder pelos
dois IPS.
Abaixo iremos usar um script de monitoramento de sockets tcp, o script se chama
tcpch.monitor.
cd /tmp/
wget ftp://ftp.kernel.org/pub/software/admin/mon/contrib/all-monitors.tar.gz
tar -zxvf all-monitors.tar.gz
cp monitors/tcp/tcpch.monitor /usr/lib64/mon/mon.d/
Abaixo tem outro script bem simples, para parar o heartbeat quando for necessrio.
cd /usr/lib64/mon/alert.d
cat heartbeat.alert
#!/usr/bin/perl
system (/etc/init.d/heartbeat stop);
Por fim vamos configurar o mon, lembrando-se que iremos usar a porta padro do
squid.

cd /etc/mon/
cp mon.cf mon.orig
cat /etc/mon/mon.cf
### global options
cfbasedir = /etc/mon
pidfile = /var/run/mon.pid
statedir = /var/lib/mon/state.d
logdir
= /var/lib/mon/log.d
dtlogfile = /var/lib/mon/log.d/downtime.log
dtlogging = yes
alertdir = /usr/lib64/mon/alert.d
mondir
= /usr/lib64/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 60s
userfile = /etc/mon/userfile
### group definitions (hostnames or IP addresses)
hostgroup proxy localhost
watch proxy
service proxy
interval 30s
monitor tcpch.monitor -p 3128 -t 10 localhost
allow_empty_group
period wd {Sun-Sat}
alertafter 3
alert heartbeat.alert
alert mail.alert -S Proxy srv001.domain.com down adminunix@domain.com
upalert mail.alert -S Proxy srv001.domain.com adm up adminunix@domain.com
alertevery 30m
Pronto, aqui termina a configurao do mon e do nosso pequeno cluster.
Vamos colocar no ar agora, segue abaixo os ltimos passos, por favor tudo isso nas
duas mquinas:
chkconfig add heartbeat levels 3,5
chkconfig heartbeat on
chkconfig add mon levels 3,5
chkconfig mon on
Agora reinicie a mquina e veja como ficou bonito!
Referncias:
http://www.linux-ha.org/HomePage
http://www.ibm.com/developerworks/library/l-halinux/

http://www.linuxjournal.com/article/5862
http://www.vivaolinux.com.br/dica/Configurar-HeartBeat
http://www.ultramonkey.org/
http://www.howtoforge.com/high_availability_heartbeat_centos
http://idefix.net/~koos/irregular.php/irregular-20060123/monitoring-squid-using-mon
http://www.lugatgt.org/articles/mon/
http://www.ha-mc.org/node/15

Você também pode gostar