Está en la página 1de 45

Andago 2006

1
1
Alta Disponibilidad
y
Balanceo de Carga
en Linux
---------
Andago Ingeniera S.L.
Javier Turgano Molina
Andago 2006
2
2
Indice
INDICE
Introduccin
Heartbeat
IPVS
Keealived
!"#!
Pregunta$
Andago 2006
%
%
Introduccin
Un cluster de alta disponibilidad es un conjunto de dos o
ms mquinas, que se caracterizan porque el fallo en una de
las mquinas no hace detenerse el servicio que ofrecen en
conjunto.
Si se produce un fallo del hardware o de las aplicaciones de
alguna de las mquinas del cluster, el software de alta
disponibilidad es capaz de rearrancar automticamente los
servicios que han fallado en cualquiera de las otras mquinas
del cluster.
Esta capacidad de recuperacin automtica de servicios nos
garantiza la integridad de la informacin, a que no ha
p!rdida de datos, adems evita molestias a los usuarios,
que no tienen por qu! notar que se ha producido un
problema.
Andago 2006
&
&
Introduccin
"tra capacidad deseable en un cluster de servicio es la de
balanceo de carga.
Esto nos permite compartir las tareas de servicio entre varios
nodos de forma transparente para el usuario, redirigiendo las
peticiones entre ellos atendiendolas en paralelo.
Esto nos permite un crecimiento de tipo horizontal,
a#adiendo nuevos nodos al servicio en caso de que sean
necesarios.
$l igual que en el caso de la alta disponibilidad habremos de
vigilar el caso de que alg%n nodo quede fuera de servicio
mantenerlo fuera del balanceo hasta que vuelva a estar
operativo.
Andago 2006
'
'
Introduccin
"tro de los elementos importantes a la hora de dise#ar un
cluster es la posibilidad de comparticin de datos entre los
nodos.
&ependiendo del tipo de aplicaciones que vaamos a utilizar
podremos utilizar las caraceristicas de un sistema de base de
datos o un almacenamiento compartido.
Una de las alternativas ms usuales para el almacenamiento
compartido es el uso de dispositivos conectables a varios
nodos 'como cabinas S(S) o S$*s de fibra ptica+. "tra ms
econmica es utilizar el propio almacenamiento de los nodos
de forma compartida entre ellos.
Andago 2006
6
6
Introduccin
En ,inu- disponemos de todas las herramientas para poder
crear nuestro propio cluster de servicio con !-ito.
.amos a ver algunas de ellas/
0$lta disponibilidad/ Heartbeat
0 1alanceo de carga/ IPVS 2 Keepalived
0 $lmacenamiento compartido/ DRBD
3or %ltimo se presentarn algunos casos de ito llevados a
cabo por $ndago donde se han utilizado estas t!cnologias.
Andago 2006
(
(
EA!"BEA"
// 4E$561E$6 //
http/77www.linu-0ha.org74eartbeat3rogram
Andago 2006
)
)
EA!"BEA"
4eartbeat es uno de los componentes principales del proecto
,inu-04$ ',inu- 4ight $vailabilit+.
Es altamente portable, funciona sobre cualquier plataforma
,inu- tambi!n sobre 8ree1S& Solaris.
*os ofrece deteccin de nodos caidos, comunicacin gestin
de cluster en un solo proceso.
Andago 2006
*
*
#C$o %unciona eartbeat&
(omo su propio nombre indica 4eartbeat utiliza un sistema de
latidos para que los nodos chequeen si el resto de nodos
estn en funcionamiento.
Es mu recomendable utilizar uno o varios recursos dedicados
para la comprobacin del estado de los otros nodos.
3odemos utilizar una tarjeta de red dedicada un cable serie0
serie para asegurar la redundancia que el fallo en el medio
de transmisin del latido no nos haga equivocarnos.
Andago 2006
10
10
#C$o %unciona eartbeat&
,a primera tarea es asignar una serie de recursos a cada nodo
del cluster. Estos pueden incluir/
9 &ireccin )3 de servicio
9 Servidores activos
9:aestro de almacenamiento
Estas tareas o paquetes de tareas se ejecutarn en el nodo
predefinido inicialmente. En caso de fallo otro elemento del
cluster ser el encargado de ejecutar sus tareas. $s; el
servicio continua ininterrumpido.
Andago 2006
11
11
eartbeat 'Acti(o - )asi(o*
$,6$ &)S3"*)1),)&$& $(6)."03$S)."
Una configuracin de alta disponibilidad es de modo $ctivo0
3asivo, cuando un servidor realiza las tareas de servicio
mientras disponemos otro servidor de respaldo en caso de
fallo.
Andago 2006
12
12
eartbeat 'Acti(o - )asi(o*
<eb
<eb
<eb
<eb
= = =
= = =
)3
)3
)3
)3
Andago 2006
1%
1%
eartbeat 'Acti(o + )asi(o ,ultiser(icio*
$,6$ &)S3"*)1),)&$& $(6)."03$S)." :U,6)SE5.)()"
6ambi!n podemos tener una configuracin en que todos los
nodos estn activos con una determinada tarea, pero en caso
de que uno de los nodos falle, el resto pueden asumir sus
tareas.
Andago 2006
1&
1&
eartbeat 'Acti(o + )asi(o ,ultiser(icio*
<eb
<eb
Smtp
Smtp
1&&
1&&
<eb
<eb
Smtp
Smtp
Andago 2006
1'
1'
eartbeat '-ailo(er*
(uando el nodo que fall vuelve a estar activo podemos
definir dos modos de actuacin/
9 !uto"ailbac# on/ El nodo original recuperar sus servicios.
9 !uto"ailbac# o""/ El poseedor actual de los servicios los
mantendr hasta que se produzca un reinicio o caida del
mismo.
Andago 2006
16
16
earbeat 'Auto%ailbac. on*
<eb
<eb
Smtp
Smtp
1&&
1&&
<eb
<eb
Smtp
Smtp
Andago 2006
1(
1(
Con%iguracin de eartbeat
4earbeat se configura a trav!s de dos ficheros de
configuracin principales/
7etc7ha.d7ha.cf > En el que se encuentra la configuracin
general de heartbeat.
7etc7ha.d7haresources > &onde se definen que servicios
corresponden a qu! nodos dentro del cluster. Este fichero ha
de ser igual en todos los nodos del cluster.
Andago 2006
1)
1)
Con%iguracin de eartbeat
7etc7ha.d7ha.cf
logfile 7var7log7ha0log
logfacilit local?
@eepalive A
warntime B
deadtime CA
initdead B?
autoDfailbac@ off
udpport EFG
bcast ethC
ping CFA.CEH.CI.A CFA.CEH.CI.C
node constantinopla
node alejandria
respawn hacluster 7usr7lib7heartbeat7ipfail
Andago 2006
1*
1*
Con%iguracin de eartbeat
Ejemplo $ctivo > 3asivo
7etc7ha.d7haresources
constantinopla CFA.CEH.C.C apache postfi-
alejandria
Ejemplo $ctivo > 3asivo :ultiservicio
7etc7ha.d7haresources
constantinopla CFA.CEH.C.C apache postfi-
alejandria CFA.CEH.C.A msql
Andago 2006
20
20
I)/S
$$ IPVS %IP Virtual Server& $$
http/77www.linu-virtualserver.org7software7ipvs.html
)3.S implementa balanceo de carga a nivel de la capa
de transporte dentro del @ernel de ,inu- 'laerG0switching+.
)3.S corriendo en un servidor al frente de un cluster
de servidores actua como un balanceador de carga.
3uede redirigir cone-iones a servicios 6(37U&3 a los
servidores reales, as; hacer parecer que estos servicios de
varios servidores como un %nico servicio virtual para una )3.
Andago 2006
21
21
I)/S
)3.S
)3.S
Andago 2006
22
22
I)/S - Caracteristicas
+aracteri$tica$,

Soorte ara rotocolo$ -!P . T+P

Tre$ /todo$ de reenvio de a0uete$,

1AT

Tunneling

!irect "outing

2c3o algorit/o$ de balanceo de carga,

"ound robin4 5eig3ted round robin4 lea$t6connec6tion4 5eig3ted


lea$t6connection4 localit.6ba$ed lea$t6connection4 localit.6ba$ed
lea$t6connection 5it3 relication4 de$tination63a$3ing4 and $ource6
3a$3ing
Andago 2006
2%
2%
I)/S
.ersiones/
,a versin estable actual es ipvs C.A.C est incluida de serie
en los @ernel de linu- a partir de la versin A.E.C?.
3ara los @ernels A.G tambi!n tenemos disponible la versin de
ipvs C.?.CA a partir del @ernel A.G.AH.
$parte del mdulo del @ernel disponemos de una aplicacin en
l;nea de comandos para administrarlo/
ipvsadm
Andago 2006
2&
2&
E0e$plo - I)/S
Ejemplo/
.amos a configurar un balanceador con )3.S para que
distribua el trfico que reciba por el puerto H? a J servidores
reales.
El m!todo de redireccin utilizado en este ejemplo ser
8orwarding, con el que enmascararemos cada uno de los J
servidores con la ip del balanceador con )3.S.
Andago 2006
2'
2'
E0e$plo - I)/S
$#adimos un servicio virtual para A?I.CIJ.GG.CC?/
K ipvsadm 0$ 0t A?I.CIJ.GG.CC?/H? 0s rr
$#adimos los servidores al servicio virtual/
K ipvsadm 0a 0t A?I.CIJ.GG.CC?/H? 0r CFA.CEH.C?.C/H? 0m
K ipvsadm 0a 0t A?I.CIJ.GG.CC?/H? 0r CFA.CEH.C?.A/H? 0m
K ipvsadm 0a 0t A?I.CIJ.GG.CC?/H? 0r CFA.CEH.C?.B/H? 0m
K ipvsadm 0a 0t A?I.CIJ.GG.CC?/H? 0r CFA.CEH.C?.G/H? 0m
K ipvsadm 0a 0t A?I.CIJ.GG.CC?/H? 0r CFA.CEH.C?.J/H? 0m
Andago 2006
26
26
E0e$plo - I)/S
(omo estamos utilizando masquerading habremos de activar
la opcin de masquerading del @ernel utilizando 7proc/
K echo LCL M 7proc7ss7net7ipvG7ipDforward
3odemos listar las rutas definidas activas para nuestro )3.S
utilizando/
K ipvsadm 0l
)pvsadm tambi!n nos va a permitir modificar en cualquier
momento los servicios servidores utilizados. 3or ejemplo
puede sernos %til para mantemiento de los equipos
servidores.
Andago 2006
2(
2(
-ailo(er en I)/S
$hora supongamos que uno de los servidores que tenemos
asignado a nuestro servicio web cae.
(ada vez que )3.S reenvie una de las peticiones hacia ese
servidor, esta no podr ser atendida, creando un fallo en el
servicio de forma intermitente.
3ara solucionarlo podemos utilizar/
Keepalived
Andago 2006
2)
2)
1eepali(ed
// NEE3$,).E& //
http/77www.@eepalived.org7
Andago 2006
2*
2*
1eepali(ed
El objetivo principal de Neepalived es a#adir una utilidad
fuerte robusta de recuperacin ante fallos en el proecto de
,inu- .irtual Server.
Est escrito en ( nos provee de un sistema de chequeos
multicapa sobre la pila 6(37)3.
*os permite trabajar en B capas/
B, G J7I.
Andago 2006
%0
%0
1eepali(ed
Neepalived actua como un demonio que nos permite chequear
el estado del pool de servidores
(uando uno de los servidores del grupo cae, Neepalived
informa al @ernel atrav!s de una llamada setsoc@opt para
eliminar de la topologia de ,.S la entrada correspondiente
para ese servidor.
)gualmente cuando el servicio en ese servidor vuelve a estar
disponible vuelve a a#adir la entrada este vuelve a estar
disponible para dar servicio al e-terior.
Andago 2006
%1
%1
Es2ue$a 1eepali(ed
Andago 2006
%2
%2
1eepali(ed
Andago 2006
%%
%%
Con%iguracin de 1eepali(ed
7etc7@eepalived7@eepalived
globalDdefs O
notificationDemail O
jtureganoPandago.com
Q
notificationDemailDfrom balanceadorPmiservidor.net
smtpDserver CFA.CEH.CH.A
smtpDconnectDtimeout B?
lvsDid 1$,$*(E$&"5CD,.S
Q
Andago 2006
%&
%&
Con%iguracin de 1eepali(ed
vrrpDinstance .)DER6E5*$ O
state :$S6E5
interface eth?
lvsDsncDdaemonDinteface eth?
virtualDrouterDid JC
priorit CJ?
advertDint C
smtpDalert
authentication O
authDtpe 3$SS
authDpass e-ample
Q
virtualDipaddress O
CFA.CEH.CI.CCJQ
Q
Andago 2006
%'
%'
Con%iguracin de 1eepali(ed
virtualDserver CFA.CEH.CI.CCJ CC? O
delaDloop E
lbDalgo wlc
lbD@ind *$6
natDmas@ AJJ.AJJ.AJJ.?
protocol 6(3
realDserver CFA.CEH.J.C CC? O
weight C
6(3D(4E(N O
connectDtimeout B
connectDport CC?
Q Q
realDserver CFA.CEH.J.A CC? O
weight C
6(3D(4E(N O
connectDtimeout B
connectDport CC?
Q Q Q
Andago 2006
%6
%6
D!BD
// &51& //
http/77www.drbd.org7
&rbd es un dispositivo de bloques que est dise#ado para
construir LclustersL de alta disponibilidad.
Se realiza por medio de una copia id!ntica de todo un
dispositivo de bloques atrav!s de una red 'dedicada+.
,o podemos ver como un 5$)&0C en red.
Andago 2006
%(
%(
D!BD
&rbd toma los datos, los escribe en el disco local los env;a al
otro LhostL. En el otro LhostL, !ste pone los datos en el disco.
$hora slo tenemos que combinar nuestro almacenamiento
conpartido con un servicio de pertenencia a un LclusterL, que
puede ser heartbeat, alg%n tipo de aplicacin que trabaje en
un nivel ms alto que un dispositivo de bloques.
3uede servirnos cmo una alternativa ms barata que un
hardware compartido como pueden ser buses S(S)
compatidos o (anales de 8ibra.
Andago 2006
%)
%)
#C$o %unciona D!BD&
(ada dispositivo 'drbd provee ms de uno de estos
dispositivos+ tiene un estado, que puede ser SprimarioS or
SsecundarioS. En el nodo en el que se encuentra el dispositivo
primario la aplicacin debe correr acceder al dispositivo
'7dev7nbR+.
(ada operacin de escritura es enviada al Sdispositivo de
bloques de ms bajo nivelS local al nodo con el dispositivo en
estado SsecundarioS.
El dispositivo secundario simplemente escribe los datos en su
dispositivo de bloques de ms bajo nivel. ,as operaciones de
lectura son llevadas a cabo siempre localmente.
Andago 2006
%*
%*
#C$o %unciona D!BD&
Si el nodo primario falla, heartbeat pasa el dispositivo
secundario al estado primario e inicia la aplicacin ah;. 'Si
estamos usando drbd con un sistema de archivos Lsin
journalingL esto implica lanzar fsc@+.
Si el nodo que ha fallado se restablece, entra a funcionar
como un nuevo nodo secundario tiene que sincronizar su
contenido con el nodo primario. Esto, por supuesto, deber;a
ocurrir sin provocar ninguna interrupcin del servicio.
Andago 2006
&0
&0
Iniciali3ando D!BD
(argamos el mdulo/
K modprobe drbd
)nicializamos/
K drbdadm up all
(omprobamos el estado inicial/
K cat 7proc7drbdS
.ersion/ ?.I.? svn K5ev/ CGGA K 'api/IG7proto/IG+
?/ cs/(onnected st/Secondar7Secondar ld/)nconsistent
ns/? nr/? dw/? dr/? al/? bm/C lo/? pe/? ua/? ap/?
Andago 2006
&1
&1
,aestro D!BD
$mbos nodos son secundarios estn en estado
inconsistente, es el momento de elegir un nodo maestro, as;
que en !l ejecutamos/
rootPmaestro/TK drbdadm 00 00do0what0)0sa primar all
Usamos 00do0what0)0sa para forzar la replicacin en el
e-clavo machacando posibles datos. (omienza la replicacin/
rootPmaestro/TK cat 7proc7drbd
?/ cs/SncSource st/3rimar7Secondar ld/(onsistent
ns/CAFG?HAG nr/? dw/HIGFA dr/CBEF?JFC al/C?F bm/CEEH
lo/C??? pe/CHIE ua/C??? ap/?
UVVVVVVVVM...........W sncSed/ GG.GX 'CJHJH7AHGHI+:
finish/ ?/?F/A? speed/ AH,FBB 'AJ,CE?+ N7sec
Andago 2006
&2
&2
,aestro D!BD
$hora podemos crear un sistema de ficheros sobre el
dispositivo est listo para ser usado, por ejemplo/
rootPmaestro/TK m@reiserfs 7dev7drbd?
rootPmaestro/TK mount 7dev7drbd? 7mnt7datos
rootPmaestro/TK touch 7mnt7datos7prueba
Andago 2006
&%
&%
3or %ltimo podriamos comprobar que en el nodo e-clavo
tenemos los mismos datos pasando este a maestro/
rootPmaestro/TK umount 7mnt7datos
rootPmaestro/TK drbdadm secondar all
rootPe-clavo/TK drbdadm primar all
rootPe-clavo/TK mount 7dev7drbd? 7mnt7datos
rootPe-clavo/TK ls 0la 7mnt7datos
total H
drw-r0-r0- A root root G?FE A??E0?G0CF AB/BJ .
drw-r0-r0- EJ root root G?FE A??E0?G0CF AB/BJ ..
0rw0r00r00 C root root ? A??E0?G0CF AB/BJ prueba
Andago 2006
&&
&&
eartbeat 4 D!BD
4E$561E$6 2 &51&
3odemos utilizar fcilmente drbd dentro de un cluster
utilizando heartbeat a que este viene completamente
preparado para ello.
4eartbeat se encargar del montaje del nodo maestro de drbd
de en caso de caida de este de que alguno de los nodos
e-clavos asuma el papel de maestro gracias a que a tiene
todos los datos replicados.
Andago 2006
&'
&'
)reguntas
YZ
YZ
jturegano 'at + andago.com
jturegano 'at + andago.com

También podría gustarte