Sie sind auf Seite 1von 183

Clustering de Alta Disponibilidad

bajo GNU/Linux


Vicente Jos Aguilar Rosell
<v.aguilar@terra.es>, <vjaguilar@renr.es>

Septiembre 2001

Tutor: D. anuel arco Suc!
Departamento de Lenguajes y Sistemas Inorm!ti"os
#esumen:
"ste traba#o e$plora las %istintas posibili%a%es &ue nos o'rece !o( en %)a el mun%o %el Software Libre
para implantar ser*i%ores %e alta disponibilidad en el terreno empresarial ( orienta%os principalmente
al ser*icio en Internet +ser*i%ores HTTP, SMTP, POP, etc,, basa%os en la replicacin de servidores
!clustering" con ar&uitecturas P# Intel $%& ( ba#o el Sistema -perati*o '()*Linu$.
"l presente %ocumento se publica ba#o los trminos %e la licencia .D/ +.ree Documentation /icense, %e 012 ( pue%e ser
re%istribui%o o mo%i'ica%o seg3n los mismos. 4o%os los programas, scripts o 'ic!eros %e con'iguracin a&u) e$puestos se
%istribu(en ba#o la licencia 05/ +0eneral 5ublic /icense, %e 012, ( se garanti6a el %erec!o %e re%istribucin (
mo%i'icacin ba#o los trminos %e %ic!a licencia. "l te$to %e ambas licencias se pue%e encontrar en la p7gina 8eb %e 012
en !ttp9::888.gnu.org ( en los enlaces %e la bibliogra')a al 'inal %e este %ocumento.

"ste traba#o !a si%o %esarrolla%o )ntegramente utili6an%o so't8are libre9 la plata'orma %e %esarrollo 'ue Debian 012:/inu$
+!ttp9::888.%ebian.org, con el entorno %e escritorio 01-" +!ttp9::888.gnome.org, !ttp9::888.$imian.com,; para la
e%icin %el te$to se utili6 Abi<or% +!ttp9::888.abisource.com, ( -pen -''ice +!ttp9::888.openo''ice.org,; para los
%iagramas, 'iguras ( es&uemas, D=A +!ttp9::888.l(sator.liu.se:>alla:%ia:,; para los gr7'icos %e barras, el gnuplot
+!ttp9::888.gnuplot.org,; ( para el reto&ue %e gr7'icos, el 0=5 +!ttp9::888.gimp.org,; ( para con*ertir el 'ic!ero
5ostScript genera%o por -pen-''ice a 5D. con el con*ersor ps2p%' %el pa&uete 0!ostScript +!ttp9::888.g!ostscript.com,.
2001 Vicente Jos Aguilar Rosell <v.aguilar@terra.es>, <vjaguilar@renr.es>.
ndice de contenidos
1. =ntro%uccin...........................................................................................................................................1
1.1. 012:/inu$ ( el So't8are /ibre.........................................................................................................
1.2. =ntro%uccin al clustering %e ser*i%ores.............................................................................................
1.?. @onsi%eraciones pre*ias......................................................................................................................
2. 0estin %el almacenamiento..................................................................................................................A
2.1. 0estin a*an6a%a %e los %iscos...........................................................................................................
2.1.1. RA=D................................................................................................................................................
2.1.2. /V...............................................................................................................................................
2.2. Sistemas %e .ic!eros.........................................................................................................................
2.2.1. e$t2.................................................................................................................................................
2.2.1.1. "structura ')sica...........................................................................................................................
2.2.1.2. /os iBno%os..................................................................................................................................
2.2.1.?. 2so..............................................................................................................................................
2.2.1.C. e$t?..............................................................................................................................................
2.2.2. Reiser.S.........................................................................................................................................
2.2.2.1. Sistemas transaccionales.............................................................................................................
2.2.2.2. @aracter)sticas %e Reiser.S.........................................................................................................
2.2.2.?. Drboles EF..................................................................................................................................
2.2.2.C. 2so..............................................................................................................................................
2.2.?. $'s ( #'s...........................................................................................................................................
?. Distribucin %e los %atos......................................................................................................................2G
?.1. Replicacin %e arc!i*os....................................................................................................................
?.1.1. rs(nc...............................................................................................................................................
?.1.1.2. "l algoritmo rs(nc.......................................................................................................................
?.1.1.?. Resulta%os...................................................................................................................................
?.1.1.C. =nstalacin ( uso..........................................................................................................................
?.2. Sistemas %e 'ic!eros %istribui%os......................................................................................................
?.2.1. 1.S................................................................................................................................................
?.2.1.1. /os protocolos %etr7s %e 1.S.....................................................................................................
?.2.1.2. "l ser*i%or...................................................................................................................................
?.2.1.?. "l cliente.....................................................................................................................................
?.2.1.C. 5recauciones................................................................................................................................
?.2.2. Samba.............................................................................................................................................
?.2.2.1. 5rogramas....................................................................................................................................
?.2.2.2. @on'iguracin..............................................................................................................................
?.2.2.?. Acce%ien%o a <in%o8s %es%e /inu$..........................................................................................
?.2.?. @-DA............................................................................................................................................
?.2.?.1. 4erminolog)a @-DA...................................................................................................................
?.2.?.2. /os ser*i%ores.............................................................................................................................
?.2.?.?. /os clientes.................................................................................................................................
?.2.?.C. @aracter)sticas a*an6a%as............................................................................................................
?.2.C. 0.S................................................................................................................................................
?.2.C.1. Sistemas %e %iscos comparti%os..................................................................................................
?.2.C.2. @aracter)sticas %e 0.S................................................................................................................
?.2.C.2. =nstalacin %e 0.S sobre @anal %e .ibra....................................................................................
?.2.C.?. /imitaciones %e 0.S...................................................................................................................
C. onitori6acin.....................................................................................................................................GG
C.1. %aemontools ( ucspiBtcp....................................................................................................................
C.1.1. @on'iguracin ( uso.......................................................................................................................
C.2. mon....................................................................................................................................................
C.?. !eartbeat ( 'aHe.................................................................................................................................
C.C. .ailo*er %e re% con iA1S %e =ntel....................................................................................................
C.C.1. @on'iguracin %e iA1S en mo%o A.4..........................................................................................
C.C.2. "#emplo %e con'iguracin manual.................................................................................................
G. @lustering %e Alta Disponibili%a%........................................................................................................I?
G.1. /inu$ Virtual Ser*er..........................................................................................................................
G.1.1. Visin general %e /VS....................................................................................................................
G.1.2. @mo %istribuir la carga.................................................................................................................
G.1.?. o%os %e balancea%o %e carga en /VS..........................................................................................
G.1.?.1. Ealancea%o por 1A4 +VSB1A4,.................................................................................................
G.1.?.2. Ealancea%o por encapsula%o =5 +VSB4un,..................................................................................
G.1.?.?. Ealancea%o por enrutamiento %irecto +VSBDR,..........................................................................
G.1.?.C. Resumen %e los mto%os %e balancea%o.....................................................................................
G.1.C. 5lani'icacin %el balanceo %e carga...............................................................................................
G.1.C.1. Roun% Robin...............................................................................................................................
G.1.C.2. Roun% Robin 5on%era%o.............................................................................................................
G.1.C.?. Ser*i%or con menos cone$iones acti*as......................................................................................
G.1.C.C. Ser*i%or con menos cone$iones acti*as +pon%era%o,.................................................................
G.1.C.G. enos conecta%o basa%o en ser*icio..........................................................................................
G.1.C.I. 4ablas !as! por origen ( %estino.................................................................................................
G.1.C.A. @one$iones persistentes..............................................................................................................
G.1.G. Alta %isponibili%a% en /VS............................................................................................................
G.1.G.1. monJ!eartbeatJ'aHeJco%a..........................................................................................................
G.1.G.2. l%irector%J!eartbeat....................................................................................................................
G.1.I. "l so't8are.....................................................................................................................................
G.1.I.1. l*sBgui..........................................................................................................................................
G.1.I.2. /VS..........................................................................................................................................
G.1.I.?. %ulo 8ebmin para /VS..........................................................................................................
G.1.I.C. 2ltra onHe(..............................................................................................................................
G.1.I.G. 5iran!a........................................................................................................................................
G.2. Super Sparro8...................................................................................................................................
G.2.1. E05................................................................................................................................................
G.2.2. .uncionamiento %e Super Sparro8................................................................................................
G.2.?. "l so't8are.....................................................................................................................................
G.2.C. Super Sparro8 ( Apac!e................................................................................................................
I. 5rogramas para la instalacin ( a%ministracin...................................................................................K?
I.1. /inu$ 2tilit( 'or cluster =nstallation +/2=,.......................................................................................
I.2. .A=.....................................................................................................................................................
I.2.1. .uncionamiento..............................................................................................................................
I.?. VA S(stem=nstaller............................................................................................................................
I.?.1. Re&uerimientos..............................................................................................................................
I.?.2. .uncionamiento..............................................................................................................................
I.C. 8ebmin............................................................................................................................................100
A. 5roban%o el so't8are..........................................................................................................................10?
A.1. =nstalacin %e 012:/inu$ en un e&uipo........................................................................................10?
A.2. RA=D, /V, e$t2 ( reiser's............................................................................................................10?
A.?. =nstalacin remota con VA S(stem =mager.....................................................................................112
A.?.1. =nstalacin %el so't8are en el ser*i%or.........................................................................................
A.?.2. =nstalacin linu$ en el gol%en client.............................................................................................
A.?.?. =nstalacin %el so't8are cliente en el gol%en client......................................................................
A.?.C. "#ecutar getimage en el ser*i%or..................................................................................................
A.?.G. @reacin %el %isco %e arran&ue para instalar los clientes.............................................................
A.C. @-DA.............................................................................................................................................12C
A.C.1. "l ser*i%or @-DA........................................................................................................................
A.C.2. "l cliente @-DA..........................................................................................................................
A.C.?. 5ruebas %e ren%imiento................................................................................................................
A.G. mon..................................................................................................................................................1C1
A.I. iA1S................................................................................................................................................1C?
L. @onclusiones......................................................................................................................................1CA
K. Eibliogra')a........................................................................................................................................1G1
K.1. Documentacin, M-<4-s ( .ANs................................................................................................1G1
K.2. R.@s................................................................................................................................................1G2
K.?. /icencias.........................................................................................................................................1G?
10. "nlaces.............................................................................................................................................1GG
@lustering %e Alta Disponibili%a% ba#o 012:/inu$
ndice de imgenes
=magen 1. RA=D9 Situacin........................................................................................................................K
=magen 2. /V9 Situacin.......................................................................................................................11
=magen ?. /V9 Asignacin %e espacio..................................................................................................12
=magen C. e$t29 "structura %el %isco........................................................................................................1G
=magen G. e$t29 "structura %e una particin.............................................................................................1G
=magen I. e$t29 iBno%os............................................................................................................................1I
=magen A. Reiser.S9 Drboles E................................................................................................................21
=magen L. @-DA9 Drbol %e %irectorios...................................................................................................C0
=magen K. @-DA9 -rgani6acin %e una cel%a.........................................................................................C?
=magen 10. 0.S9 "s&uema general..........................................................................................................CL
=magen 11. /VS9 "s&uema general..........................................................................................................I?
=magen 12. /VS9 VSB1A4.......................................................................................................................II
=magen 1?. /VS9 VSB1A4, es&uema ')sico..............................................................................................IA
=magen 1C. /VS9 "ncapsula%o =5............................................................................................................IK
=magen 1G. /VS9 VSB4un.........................................................................................................................IK
=magen 1I. /VS9 VSBDR.........................................................................................................................A1
=magen 1A. /VS9 Alta %isponibili%a%.......................................................................................................AA
=magen 1L. /VS9 l*sBgui..........................................................................................................................L1
=magen 1K. /VS9 2ltra onHe(, mto%o 1..............................................................................................L?
=magen 20. /VS9 2ltra onHe(, mto%o 2..............................................................................................L?
=magen 21. /VS9 2ltra onHe(, mto%o ?..............................................................................................LC
=magen 22. /VS9 2ltra onHe(, mto%o C..............................................................................................LC
=magen 2?. Super Sparro89 "#emplo E05..............................................................................................LA
=magen 2C. Super Sparro89 "#emplo %e 'uncionamiento........................................................................LL
=magen 2G. Super Sparro89 .uncionamiento %e mo%Osupersparro8......................................................K0
=magen 2I. Super Sparro89 =ntegracin con Apac!e...............................................................................K1
=magen 2A. /2=9 =nter'a6 gr7'ico.............................................................................................................KC
=magen 2L. VA S(stem=mager9 =nstalacin, paso 1..................................................................................KK
=magen 2K. VA S(stem=mager9 =nstalacin, paso 2..................................................................................KK
=magen ?0. VA S(stem=mager9 =nstalacin, paso ?..................................................................................KK
=magen ?1. 8ebmin9 en3 principal.....................................................................................................100
=magen ?2. 8ebmin9 A%ministracin @(rus =A5...............................................................................101
=magen ??. @omparati*a9 e$t2 *s. reiser's +1:2,....................................................................................10C
=magen ?C. @omparati*a9 e$t2 *s. reiser's +2:2,....................................................................................10G
=magen ?G. @omparati*a9 RA=D J /V J e$t2 +1:2,...........................................................................10I
=magen ?I. @omparati*a9 RA=D J /V J e$t2 +2:2,...........................................................................10A
=magen ?A. @omparati*a9 RA=D J /V J reiser's +1:2,.......................................................................10L
=magen ?L. @omparati*a9 RA=D J /V J reiser's +2:2,.......................................................................10K
=magen ?K. @omparati*a9 RA=D J e$t2 *s. RA=D J reiser's.................................................................110
=magen C0. @omparati*a9 RA=D1 J reiser's..........................................................................................111
*ii
@lustering %e Alta Disponibili%a% ba#o 012:/inu$
=magen C1. @omparati*a9 1.S *s. @-DA.............................................................................................1C0
=magen C2. @onclusin9 @luster sencillo...............................................................................................1CA
ndice de tablas
4abla 1. rs(nc9 Ren%imiento....................................................................................................................2A
4abla 2. 1.S9 Demonios..........................................................................................................................?1
4abla ?. 1.S9 Ser*icios, puertos ( protocolos.........................................................................................?G
4abla C. @-DA9 5rocesos ser*i%ores.......................................................................................................C2
4abla G. @-DA9 5articiones en el ser*i%or..............................................................................................CC
4abla I. /VS9 to%os %e %ireccionamiento...........................................................................................A?
4abla A. VA S(stem=mager9 Distribuciones soporta%as...........................................................................KA
4abla L. VA S(stem=mager9 -tras %istribuciones.....................................................................................KA
*iii
1. Introduccin
@on el actual ritmo %e crecimiento %el comercio ( el mo*imiento %e %atos %e to%o tipo en
Internet +m7s %e un 100P anual, ( la incuestionable importancia %e la in'orm7tica en las empresas
actuales %e cual&uier tamaQo, es ca%a %)a m7s importante &ue los siste+as infor+,ticos %e stas pue%an
'uncionar %e 'orma ininterrumpi%a ( sin errores las 2C! %el %)a, A %)as a la semana ( ?IG %)as al aQo, (a
sea para %ar soporte interno +contabili%a%, control %e personal, %esarrollo..., como para o'recer
ser*icios a tra*s %e =nternet +comercio electrnico, correo, portales, etc,. A esta necesi%a% %e un
ser*icio ininterrumpi%o ( 'iable se le conoce como alta disponibilidad.
Dos estu%ios in%epen%ientes reali6a%os en 1KKG por -racle @orp. ( Datamation re*elaron &ue
una empresa me%ia pier%e entre L0,000 ( ?G0,000 %lares +entre 1G ( A0 millones %e pesetas, por !ora
%e interrupcin no planea%a %e sus ser*icios in'orm7ticos. -tro e#emplo %e la necesi%a% %e la alta
%isponibili%a% es &ue tras el atenta%o en el <orl% 4ra%e @enter en 1KK?, 1CG %e las ?G0 empresas &ue
all) se !ospe%aban +algo m7s %el C0P, tu*ieron &ue cerrar sus puertas tras este inci%ente por no
%isponer %e una in'raestructura in'orm7tica re%un%ante.
/a principal tcnica para obtener estos sistemas tolerantes a 'allos es la re%un%ancia, estrategia
utili6a%a en la in%ustria aeron7utica pr7cticamente %es%e sus principios, &ue consiste en replicar las
6onas cr)ticas %el sistema, tenien%o una uni%a% acti*a ( *arias copias inacti*as &ue, tras el 'allo %e la
principal, sean capaces %e retomar su labor en el punto &ue a&uella 'all, en el menor tiempo posible (
%e 'orma transparente para el usuario.
"$isten gran canti%a% %e ser*i%ores altamente re%un%antes en el merca%o 'abrica%os por S21,
=E ( %em7s empresas %el ramo. Son gran%es m7&uinas multiprocesa%or , con *arias controla%oras %e
%isco, con'iguraciones RA=D, 'uentes %e alimentacin re%un%antes, ( un largo etctera %e circuitos (
controla%oras %uplica%as para &ue, en caso %e 'allo, !a(a alguna %e respal%o. "l precio %e este tipo %e
e&uipos rara *e6 ba#a %e *arias %ecenas %e millones %e pesetas. A%em7s, cuan%o una m7&uina %e este
tipo &ue%a obsoleta, no nos &ue%a otro reme%io &ue comprar otra ma(or ( %es!acernos %e la antigua.
"l presente estu%io se centrar7 en la tcnica %e obtener una alta %isponibili%a% por me%io %e la
re%un%ancia, instalan%o varios ser*i%ores co+pletos en lugar %e uno slo, &ue sean capaces %e traba#ar
en paralelo ( %e asumir las ca)%as %e algunos %e sus compaQeros, ( po%remos aQa%ir ( &uitar
ser*i%ores al grupo +cluster, seg3n las necesi%a%es. A esta tcnica se la %enomina clustering. 5or otra
parte, tambin se abor%ar7n to%as las tcnicas necesarias para asegurar la estabili%a% %e ca%a uno %e los
ser*i%ores %el cluster, tcnicas &ue en muc!os casos tambin se basar7n en la re%un%ancia %e
%ispositi*os. "n to%os caso los e&uipos ser7n 5@s normales %e los &ue po%emos encontrar en cual&uier
tien%a %e in'orm7tica personal, con procesa%ores =ntel 5entium o AD, &ue en ning3n caso *al%r7 ca%a
uno m7s %e %oscientas mil pesetas.
"ste traba#o est7 estructura%o seg3n el or%en &ue seguiremos a la !ora %e ir con'iguran%o ca%a
uno %e los e&uipos &ue 'ormar7n parte %e nuestro cluster9 tras una intro%uccin inicial a las %i*ersas
tcnicas %e clustering, su problem7tica ( sus soluciones, comen6aremos *ien%o los mto%os para
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
asegurar &ue la in'ormacin almacena%a en los %iscos %e nuestros ser*i%ores sea segura, cmo
conseguir &ue stos compartan in'ormacin, cmo conseguir &ue un e&uipo tome el control %e los
ser*icios %e otro, cmo organi6ar ( a%ministrar el cluster ( cmo %i*i%ir el cluster geogr7'icamente en
un Rcluster %e clustersS.
1.1. GNU/Linux y el Software Libre
012:/inu$ es un sistema operati*o compatible 21=T, multiusuario ( multitarea. Su n3cleo, el
Hernel /inu$, 'ue %iseQa%o a principios %e los K0 por Linus Torvalds para los 5@s L0$LI ( compatibles
%e la poca (, gracias a su c%igo abierto ( al %esarrollo %istribui%o en =nternet, !a si%o a%apta%o a gran
canti%a% %e ar&uitecturas, %es%e estaciones %e traba#o R=S@ !asta 5DAs como el =5ac %e @ompa& o
incluso a la consola %e *i%eo#uegos 5la(Station %e Son(. 012 +acrnimo recursivo %e 012 is 1ot
2ni$, por su parte, es un pro(ecto inicia%o por /ic0ard Stall+an +otro %e los Rgur3sS %el so't8are
libre, a me%ia%os %e los L0 cu(o ob#eti*o es el %e conseguir un sistema operati*o tipo 21=T
completamente gratuito ( con el c%igo %isponible ba#o una licencia abierta. "n principio, el Hernel
para 012 iba +( *a, a ser Mur%, to%a*)a en %esarrollo, pero cuan%o 4or*al%s liber las primeras
*ersiones %e /inu$ se *io claramente &ue se necesitaban el uno al otro, (a &ue el n3cleo era la pie6a
&ue 'altaba para po%er Rec!ar a an%arS el sistema operati*o %e 012, mientras &ue el Hernel /inu$ %e
por si, sin utili%a%es ni librer)as ni entorno operati*o, no po%)a *alerse por s) mismo. As) naci el
binomio 012 +!erramientas ( entorno, : /inu$ +n3cleo,.
Se po%r)a %ecir &ue el sistema 012:/inu$ es el Rbu&ue insigniaS %el mo*imiento conoci%o
como Software Libre. "ste mo*imiento +casi una 'iloso')a %e *i%a, promue*e el %esarrollo cooperati*o
%el so't8are, por me%io %e la liberacin ba#o licencias abiertas %el c%igo 'uente %e los programas, %e
'orma &ue cual&uier persona en cual&uier parte %el mun%o pue%a aportar su Rgranito %e arenaS. "$isten
gran canti%a% %e licencias %entro %el mun%o %el so't libre, sien%o las m7s importantes ( e$ten%i%as %e
ellas la 0eneral 5ublic /icense +05/, %e 012, &ue pr7cticamente %a permisos para !acer cual&uier
cosa con el programa +incluso cobrar por su %istribucin, siempre &ue se cumplan el resto %e cl7usulas,
e$cepto %eri*ar %e l traba#os ( &ue stos no se liberen tambin ba#o la 05/, ni &ue 'ormen parte %e
so't8are propietario +un programa propietario no pue%e enla6arse con una librer)a 05/,; la /esser
0eneral 5ublic /icense +/05/, tambin %e 012, similar a la 05/ pero &ue si permite &ue un
programa con licencia propietaria enlace con librer)as /05/; ( la licencia ESD, &ue elimina
pr7cticamente to%as las restricciones %e la 05/ ( /05/, permitien%o &ue el c%igo %e un programa
con licencia ESD sea inclui%o en un programa comercial sin problemas. Al 'inal %e este traba#o se
inclu(en enlaces a los te$tos %e *arias %e estas licencias.
@abe aclarar a&u) &ue to%as estas licencias ba#o ning3n concepto %an %erec!o a na%ie %e
AD2"UARS" %el c%igo9 el concepto %e cop1rig0t +%erec!os %e autor, sigue presente en to%as ellas (
se prote#e con especial cui%a%o. /o &ue persiguen las licencias abiertas es %ar al usuario 'inal una serie
%e derec0os ( libertades sobre el so't8are muc!o ma(ores %e las &ue %an las licencias propietarias,
pero mantenien%o siempre el autor %el programa los %erec!os sobre su obra. "sta es la principal
%i'erencia entre el so't8are libre ( el so't8are %e Dominio 53blico +el autor ce%e 4-D-S los %erec!os,
2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
inclui%o el cop(rig!t,, el .ree8are +se pue%e utili6ar gratuitamente pero generalmente no se %ispone
%el c%igo 'uente, ( cuan%o se %ispone su uso ( mo%i'icacin est7 restringi%o, ( el S!are8are +se pue%e
utili6ar libremente con ciertas restricciones o %urante un cierto perio%o %e tiempo tras el &ue !a( &ue
registrarse, ( el c%igo 'uente no est7 %isponible,.
A%em7s %el sistema operati*o 012:/inu$, otros notables $itos %el so't8are libre son el
ser*i%or %e M445 -pac0e +l)%er en el terreno %e los ser*i%ores <eb, por %elante %el ==S %e icroso't,,
el lengua#e %e script en el ser*i%or embebi%o en M445 PHP +claro competi%or 'rente al AS5 %e
icroso't ( el JS5 %e Sun,, el na*ega%or multiplata'orma o6illa +%eri*a%o %el c%igo 'uente %el
1etscape 1a*igator C.A$ &ue liber 1etscape,, la RsuiteS o'im7tica multiplata'orma ( compatible con
S -''ice Open Office, ( los entornos %e escritorio '(OM2 ( 3.2 +a pesar %e los problemas %e
licencias &ue tu*o en el pasa%o por una librer)a %e la &ue %epen%e,.
012:/inu$ ( el so't8are libre en general !an pasa%o en los 3ltimos aQos %e ser consi%era%os
como poco m7s &ue R#uguetesS para Rlocos %e la in'orm7ticaS, a 'ormar parte cla*e %e la estrategia
comercial ( la in'raestructura %e gran%es empresas. @omo e#emplo cabe %estacar la in*estigacin (
%esarrollo %e aplicaciones &ue est7n reali6an%o empresas como =E o S21 ( su a%opcin %el sistema
operati*o /inu$, ( el apo(o &ue est7 recibien%o tambin %es%e el entorno %e las instituciones
gubernamentales, %on%e cabe seQalar el pro(ecto 050 +012 5ri*ac( 0uar%, una alternati*a open
source al programa %e criptogra')a %e cla*e pri*a%a 505,, &ue !a si%o patrocina%o por el gobierno
alem7n. A&u) en "spaQa !abr)a &ue %estacar el pro(ecto %e mo%erni6acin %e los sistemas in'orm7ticos
%el inisterio %e A%ministraciones 53blicas, lle*a%o a cabo por la empresa ma%rileQa An%ago ( basa%o
)ntegramente en so't8are libre ba#o 012:/inu$.
4o%o el so't8are &ue se *a a anali6ar ( %iscutir en este traba#o se %istribu(e ba#o licencias
abiertas, principalmente la 0eneral 5ublic /icense +05/, %e 012, la licencia ESD ( la %e Apac!e.
Son, por tanto, programas gratuitos ( con el c%igo 'uente %isponible.
1.2. Introduccin al clustering de servidores
"n el *erano %e 1KKC 4!omas Sterling ( Don EecHer, traba#an%o para el @"SD=S +@enter o'
"$cellence in Space Data an% =n'ormarion Sciencies, ba#o el patrocinio %el 5ro(ecto %e las @iencias %e
la 4ierra ( el "spacio +"SS, %e la 1ASA, constru(eron un @luster %e @omputa%oras &ue consist)a en 1I
procesa%ores DTC conecta%os por una re% "t!ernet a 10bps. "llos llamaron a su m7&uina Eeo8ul'.
/a m7&uina 'ue un $ito inme%iato ( su i%ea %e proporcionar sistemas basa%os en @-4S +e&uipos %e
sobremesa, para satis'acer re&uisitos %e cmputo espec)'icos se propag r7pi%amente a tra*s %e la
1ASA ( en las comuni%a%es aca%micas ( %e in*estigacin. "l es'uer6o %el %esarrollo para esta
primera m7&uina creci r7pi%amente en lo &ue a!ora llamamos el 5ro(ecto Eeo8ul'.
"ste Eeo8ul' construi%o en la 1ASA en 1KKC 'u el primer cluster %e la !istoria, ( su 'inali%a%
era el c7lculo masi*o %e %atos. Des%e entonces, la tecnolog)a %e clusters se !a %esarrolla%o
enormemente, aparecien%o gran canti%a% %e estu%ios, teor)as, programas ( ar&uitecturas implantan%o
?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
clusters para %i*ersos 'ines.
"n general, po%r)amos %ecir &ue !a( %os tipos %e clusters, aten%ien%o a su 'inali%a%9
@lusters para el procesamiento masi*o %e %atos9
"l e#emplo m7s claro %e este tipo el el 5ro(ecto Eeo8ul', %el &ue (a !emos !abla%o.
"ste tipo %e clusters, por lo general, apro*ec!an la posibili%a% %e paraleli6acin %e cierto tipo
%e operaciones matem7ticas +en especial, el c7lculo matricial, para repartir los %atos entre to%os
los e&uipos %el cluster ( po%er as) operar *arios gra%os %e magnitu% m7s r7pi%o. 5ara este 'in se
utili6an librer)as como las 5V +5arallel Virtual ac!ine,, &ue 'acilitan la %istribucin %e %atos
entre las m7&uinas, incluso entre m7&uinas con %istintos sistemas operati*os, ar&uitecturas (
lengua#es %e programacin.
-tro e#emplo %e cluster %e este tipo ser)a el caso %e -S=T, unos parc!es para el
n3cleo %e /inu$ con los &ue se consigue po%er utili6ar %e 'orma transparente to%a una re% %e
e&uipos como si 'uera una 3nica supercomputa%ora, permitien%o el migra%o transparente %e
cara al usuario %e procesos %e una m7&uina a otra ( la comparticin %e recursos.
4o%a la teor)a sobre este tipo %e clusters se centra en cmo compartir los recursos %e
procesa%or, memoria (:o re% entre los e&uipos &ue 'orman el cluster para obtener un me#or
ren%imiento general.
@lusters %e alta %isponibili%a%9
"n este caso lo &ue se busca no es e$actamente conseguir una gran potencia %e c7lculo
si no conseguir un con#unto %e m7&uinas &ue to%as realicen la misma 'uncin ( &ue, ante el
'allo %e una %e ellas, las %em7s pue%an asumir sus tareas %e una 'orma transparente ( r7pi%a.
5or supuesto, la escalabili%a% tambin es importante, (a &ue siempre po%remos aQa%ir m7s
m7&uinas al cluster para as) conseguir m7s potencia, pero el ob#eti*o prioritario no es este si no
la resistencia a cual&uier 'allo impre*isto.
A&u) lo &ue se busca con la replicacin %e m7&uinas es e*itar los puntos 3nicos %e 'allo,
%el ingls S5. +Single 5oint o' .ailure,, &ue ser)an a&uellas m7&uinas imprescin%ibles para el
correcto 'uncionamiento %el ser*icio &ue &ueremos %ar9 si 3nicamente tenemos una instancia %e
ca%a m7&uina %e este tipo, se con*ierte en un S5. ( ante cual&uier 'allo en este e&uipo, to%o el
cluster &ue%a inutili6a%o. /a teor)a sobre este tipo %e clusters gira en torno a estos S5. ( cmo
e*itarlos, me%iante re%un%ancia !ar%8are ( el so't8are apropia%o para controlar el correcto
'uncionamiento %e to%os los e&uipos (, en caso negati*o, !acer &ue una m7&uina %e respal%o
suplante a la &ue acaba %e 'allar.
@omo (a !emos a%elanta%o, la tcnica &ue *amos a e$plorar a&u) para obtener alta
C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%isponibili%a% en nuestros ser*icios ser7 la replicacin %e ser*i%ores a tantos ni*eles como nos sea
posible. 5or lo tanto, el tipo %e clusters &ue nos interesa es el segun%o %e los e$puestos.
/os clusters %e alta %isponibili%a% necesitan %e un amplio abanico %e componentes &ue
consi%eren %i*ersos 'actores, entre otros9
@ontrol %e miembros %el cluster.
Ser*icios %e comunicaciones.
@ontrol ( gestin %el clustering, 'lu#o %e %atos.
0estin ( monitori6acin %e recursos.
@omparticin o replicacin %el almacenamiento9
@omparticin9
Discos S@S= e$ternos.
Sistemas 1AS.
Sistemas %e 'ic!eros comparti%os +1.S, SE, @o%a,.
Replicacin9
5ropio %e la aplicacin +D1S, 1=S, etc.,
'tp, rs(nc, etc.
4o%os estos %etalles !abr7 &ue tenerlos en cuenta a la !ora %e %iseQar el cluster ( elegir el
so't8are &ue lo gestionar7, (a &ue este so't8are %ebe ser capa6 por s) mismo %e aten%er to%os estos
puntos %e atencin ( reaccionar a tiempo ante un 'allo en cual&uiera %e ellos.
1.3. Consideraciones previas
A lo largo %e este traba#o *amos a estu%iar las caracter)sticas ( 'uncionamiento %e %i*ersos
pa&uetes %e so't8are. Se e$plicar7 cmo con'igurarlos ( utili6arlos una *e6 instala%os pero, sal*o
e$cepciones, no se e$plicar7 paso a paso como instalar ca%a programa (a &ue e$iste abun%ante
%ocumentacin en =nternet +.ANs, M-<B4-s, etc, sobre como compilar e instalar so't8are %es%e el
c%igo 'uente, cmo parc!ear ( recon'igurar el n3cleo %e linu$, o cmo obtener so't8are en el 'ormato
propio %e nuestra %istribucin +.%eb para Debian, .rpm para Re%Mat ( %eri*a%as, e instalarlo. "n la
bibliogra')a se pue%en encontrar enlaces a *arios %e estos %ocumentos, as) como en 8ebs %e%ica%as a
recopilar in'ormacin sobre /inu$ tales como el /inu$ Documentation 5ro#ect +en ingls, o el 5ro(ecto
/u@AS +en castellano,.
"n la 3ltima parte %e este traba#o, %on%e se e$ponen los resulta%os %e las pruebas reali6a%as con
algunos %e los programas &ue a&u) e$aminaremos, s) &ue se %etallar7 to%o el proceso %e instalacin,
con'iguracin ( pruebas tal ( como se lle*aron a cabo en su %)a.
G
2. Gestin del almacenamiento
2na %e las primeras cosas en las &ue ten%remos &ue pensar a la !ora %e implantar un sistema %e
alta %isponibili%a% ser7 en cmo asegurar la integri%a% ( 'iabili%a% %e los %atos almacena%os en los
%iscos %e nuestros ser*i%ores, &ue %eber7n estar %isponibles %e 'orma continua%a %urante largos
+in%e'ini%os, perio%os %e tiempo. 2n 'allo en un %ispositi*o %e almacenamiento po%r)a lle*arnos a %ar
%atos errneos si el 'allo se pro%uce en una 6ona %e %atos ,con e'ectos impre*isibles para nuestra
empresa; o a un mal 'uncionamiento %el programa si el 'allo se locali6a en una 6ona &ue almacene
e#ecutables, con e'ectos a3n m7s impre*isibles, %es%e la entrega %e %atos errneos, !asta el mal
'uncionamiento %el ser*i%or pasan%o %es%e el ser*icio %e %atos errneos !asta la corrupcin
irre*ersible %e los mismos.
"n este cap)tulo *amos a anali6ar las %istintas tcnicas %isponibles para asegurar la consistencia
%e los %atos alberga%os en los %ispositi*os %e almacenamiento %e nuestros ser*i%ores.
4o%o el so't8are &ue *eremos en esta seccin est7 'orma%o %e %os componentes9 un controla%or
en el Hernel, &ue ten%remos &ue compilar +( &ue, sal*o &ue se in%i&ue, *iene %e serie en el Hernel 2.C.$
( no ten%remos &ue parc!earlo,; ( una serie %e utili%a%es en el espacio %e usuario para mo%i'icar %e
alguna 'orma el 'uncionamiento %el sistema +'ormatear particiones, etc,.
2.1. Gestin avanzada de los discos
/a primera pregunta es cmo asignar el espacio %el &ue %isponemos. /a serie %el Hernel %e
/inu$ 2.C.$ nos o'rece %os opciones9 agrupar los %ispositi*os en con'iguraciones RA=D ( la gestin
a*an6a%a %e particiones *irtuales conoci%a como /V.
2.1.1. RAID
RA=D +Re%un%ant Arra( o' =ne$pensi*e DisHs,, como su propio nombre in%ica, consiste en
crear un arra1 +ca%ena, %e *arios %iscos simples +Rine$pensiveS, baratos,, ( tratarlos como un to%o a la
!ora %e acce%er a ellos. "l stan%ar% RA=D consta %e *arios ni*eles, ( en ca%a uno %e ellos el acceso a
los %iscos ( su conteni%o se organi6a %e una 'orma u otra para conseguir bien ma(or capaci%a% &ue la
%e un 3nico %isco ')sico, bien ma(or rapi%e6 en el acceso a los %atos, bien tolerancia a 'allos, o bien
alguna combinacin %e las anteriores.
/os %istintos ni*eles %e RA=D son9
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
o%o lineal9
Dos o m7s %iscos se utili6an en sucesin, uno %etr7s %el otro +cuan%o se llena el %isco VAW se
utili6a el VEW,, !asta completar el tamaQo %e los %os. 1o se consigue un aumento %e *eloci%a% ni
seguri%a% por re%un%ancia +si se %aQa un %isco, se pier%e la in'ormacin &ue tu*iera
almacena%a,, tan slo un %ispositi*o R*irtualS %e ma(or tamaQo. "s el mo%o RA=D m7s simple.
RA=DB0, tambin conoci%o como RstripeS +intercala%o,9
Similar al mo%o lineal, pero la in'ormacin se *a guar%an%o en paralelo en ambos %iscos por
blo&ues %e un tamaQo 'i#o. 4ampoco aQa%e seguri%a%, pero en este caso se consigue un aumento
%e *eloci%a% al acce%er a los %os %ispositi*os en paralelo. /os %iscos %eben ser %e
apro$ima%amente el mismo tamaQo ( misma *eloci%a% para obtener ren%imientos ptimos.
RA=DB1 +RmirroringS, espe#a%o,9
"s el primer mo%o &ue aQa%e re%un%ancia. Se pue%e utili6ar con %os o m7s %iscos, ( to%os
contienen los mismos %atos +%e a!) lo %e Respe#a%oS,. Se pue%en estropear o &uitar !asta 1B1
%iscos ( no se pier%e la in'ormacin. Aparece el concepto %e %iscos inacti*os, &ue son %iscos
&ue se aQa%en al RA=D pero est7n en espera %e &ue alg3n otro %ispositi*o 'alle, en cu(o caso el
sistema inutili6a el %isco %aQa%o ( utili6a uno %e los %iscos libres para sustituirlo. /os %iscos
%eben ser %el mismo tamaQo. /a escritura es lenta +como muc!o, tan r7pi%a como con un slo
%isco, por&ue !a( &ue replicar la in'ormacin en to%os los %iscos; la *eloci%a% %e lectura
%epen%e %e la implementacin %el RA=D, pero pue%e ser bastante r7pi%a (a &ue se pue%e
acce%er en paralelo a los %atos %e *arios %iscos.
RA=DB2 ( ? son propuestas ( prototipos &ue nunca llegaron a utili6arse.
RA=DBC9
Se necesitan tres o m7s %iscos, en uno se guar%a in'ormacin %e pari%a% ( en los otros se
almacenan los %atos en paralelo, al estilo %e RA=DB0. "l tamaQo %el con#unto es %e +1B1,F4,
sien%o 1 el n3mero total %e %iscos acti*os ( 4 el tamaQo %e los %iscos +o el %el %e menor
tamaQo, si no son iguales,. Si 'alla un %isco, la in'ormacin se pue%e reconstruir gracias a los
%atos %e pari%a%; si 'allan %os, se pier%e to%o.
"ste mo%o RA=D tiene un problema &ue !ace &ue no se utilice muc!o, ( es &ue, a pesar %e
escribir los %atos en paralelo, como la in'ormacin %e pari%a% *a siempre al mismo %isco, ste
se con*ierte en un cuello %e botella, ralenti6an%o to%o el sistema.
RA=DBG9
Se pue%e montar sobre tres o m7s %iscos, con o sin %iscos inacti*os a%icionales. Similar a
RA=DBC, pero la in'ormacin %e pari%a% se %istribu(e entre to%os los %iscos, eliminan%o as) el
problema %el cuello %e botella con el %isco %e pari%a%. Si 'alla un %isco, la in'ormacin no se
pier%e gracias a la pari%a%, ( el conteni%o %el %isco %aQa%o se reconstru(e en un %isco inacti*o.
Si 'allan %os %iscos %e 'orma simult7nea, o si nos &ue%amos sin %iscos inacti*os, la in'ormacin
se pier%e. 4anto la *eloci%a% %e lectura como la %e escritura aumentan, al reali6arse en paralelo.
L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"$isten en el merca%o %ispositi*os %e almacenamiento %e %i*ersos 'abricantes con
con'iguraciones RA=D, &ue e$ternamente para el sistema se comportan como un %ispositi*o normal
+generalmente son %iscos S@S=,, pero internamente lle*an *arios %iscos ( una controla%ora %e%ica%a
&ue acce%e a ellos seg3n alguno %e los ni*eles RA=D. A%em7s %e estas soluciones pre'abrica%as,
algunos sistemas operati*os son capaces %e tomar *arios %ispositi*os normales +%iscos =D" o S@S=, (
reali6ar un RA=D por so't8are &ue, si bien resulta algo m7s lento &ue uno por !ar%8are, (a &ue es el
procesa%or %el e&uipo ( no la controla%ora %e%ica%a &uien tiene &ue tratar con la organi6acin %e los
%atos en los %iscos, tambin resultan muc!o m7s baratos ( 'le$ibles &ue los %ispositi*os pre'abrica%os.
"l RA=D so't8are se sit3a como una capa so't8are m7s entre el sistema %e 'ic!eros ( los %ispositi*os
')sicos9
I+agen 4. /-I.5 Situacin

Vamos a estu%iar cmo se con'igura un sistema RA=D por so't8are en /inu$9
5ara po%er !acer RA=D por so't8are en /inu$, ten%remos &ue !abilitar esta opcin en el Hernel
+en RmaHe menucon'igS, ultiB%e*ice support +RA=D an% /V, BBB> RA=D support, ( los mo%os &ue
&ueramos, e instalar las Rrai%toolsS, &ue nos permitir7n con'igurar el RA=D. 5ara %e'inir el ni*el RA=D
&ue *amos a implantar ( los %iscos &ue lo 'orman, e%itamos el 'ic!ero :etc:rai%tab, &ue tiene esta
'orma9
raiddev /dev/md0 (el dispositivo a crear)
raid-level linear (nivel: linear,0,1,4,5)
nr-raid-disks 2 (n de discos activos)
chunk-size 32 (tamao del bloque l/e)
persistent-superblock 1 (almacena estructura)
K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
device /dev/sdb6 (dispositivo)
raid-disk 0 (n disco en el RAID)
device /dev/sdc5 (dispositivo)
raid-disk 1 (n disco en el raid)
@on*iene &ue los %ispositi*os in%ica%os en las l)neas R%e*iceS sean particiones, a3n &ue si
'uramos a utili6ar to%o el %isco po%r)amos acce%er %irectamente a :%e*:!%X. Si son particiones,
po%emos asignarles un tipo espec)'ico para RA=D +tipo V'%W en el '%isH,, ( %e esta 'orma el Hernel sabe
na%a m7s arrancar &ue se trata %e una particin en uso por un sistema RA=D.
/a opcin RpersistentBsuperblocHS almacena el conteni%o %el 'ic!ero :etc:rai%tab al inicio %e
to%os los %iscos &ue participan en el RA=D. De esta 'orma, se pue%e arrancar el sistema %es%e un
%ispositi*o en RA=D +antes %e aparecer esta opcin, !ab)a &ue montar el %ispositi*o ra)6 %es%e un %isco
sin RA=D para po%er leer el 'ic!ero :etc:rai%tab ( montar el RA=D,. 5or su parte, Rc!unHBsi6eS in%ica el
tamaQo en Yb %e los blo&ues para las lecturas ( escrituras en el RA=D, &ue seg3n el ni*el RA=D ser7n
los blo&ues &ue se escribir7n en paralelo en los %iscos.
Si tu*iramos %iscos libres ( el ni*el RA=D a con'igurar los soportara, se in%icar)an como9
nr-spare-disks 1
device /dev/sdf1
spare-disk 0
5ara acti*ar el RA=D, llamamos a9
mkraid /dev/md0
2na *e6 !ec!o esto, (a tenemos %isponible :%e*:m%0, &ue po%emos utili6ar como un %ispositi*o
%e blo&ues m7s9 lo po%remos 'ormatear ( posteriormente montar, copiar con %%, utili6ar en un /V
como *eremos en el siguiente aparta%o, etc.
"l Hernel nos pro*ee %e in'ormacin sobre el esta%o %el arra( a tra*s %el 'ic!ero :proc:m%stat.
A&u) *eremos si !a( alg3n %ispositi*o %aQa%o, o en caso %e &ue se est pro%ucien%o una
reconstruccin o un espe#a%o %e alg3n %isco, *eremos el progreso.
5or 3ltimo, seQalar la recomen%acin, no slo para /inu$ si no para cual&uier sistema &ue
soporte RA=D por so't8are, %e &ue si se *a a montar el RA=D sobre %ispositi*os =D", con*iene no
utili6ar m7s %e un %isco por canal +es %ecir, no utili6ar %iscos Rescla*osS,. "sto es por&ue la *eloci%a%
soporta%a por los canales =D" es limita%a, ( si aQa%imos %os %iscos por canal es mu( probable &ue se
sature, ba#an%o el ren%imiento %el sistema. @on %ispositi*os S@S=, por lo general, no ten%remos este
problema.
10
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
2.1.2. LVM
/V +/ogical Volume anager, es un subsistema para la gestin a*an6a%a %e uni%a%es %e
almacenamiento Ren calienteS, &ue se !a con*erti%o en un est7n%ar R%eB'actoS en *arias
implementaciones %e 21=T. =nicialmente %esarrolla%o por =E, posteriormente a%opta%o por la -S.
+-pen Stan%ar%s .oun%ation, a!ora -pen0roup, para su sistema operati*o -S.:1, &ue 'ue la base %e
las implementaciones %e M5B2T ( Digital 21=T. -tra implementacin %e /V es la %esarrolla%a por
Veritas, &ue est7 %isponible para gran canti%a% %e sistemas 21=T pero 'unciona %e 'orma %istinta al
resto. /a *ersin %e /inu$, %esarrolla%a por la empresa Sistina So't8are ( libera%a ba#o la licencia
05/, es mu( similar a la %e M5B2T. /ogical Volume anager aQa%e una capa so't8are a%icional entre
los %ispositi*os ')sicos ( el inter'a6 %e entra%a:sali%a %e blo&ues %el Hernel, %e 'orma similar a como lo
!ace el RA=D por so't8are, pero con un ob#eti*o %istinto.
I+agen 6. L7M5 Situacin

11
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/V nos o'rece una 'orma m7s potente ( 'le$ible %e asignar en particiones el espacio ')sico %e
los %iscos %uros. "n lugar %e %i*i%ir ca%a %isco %e 'orma in%i*i%ual en una o m7s particiones, como se
!ar)a con fdis8, con las !abituales %es*enta#as %e no po%er tener particiones &ue ocupen m7s %e un
%isco +sal*o con RA=D, ( no po%er *ariar el tamaQo %e las particiones una *e6 crea%as, con l*m
agrupamos vol9+enes f:sicos !5V, %e 5!(sical Volumes,, &ue pue%en ser cual&uier %ispositi*o %e
blo&ues +particiones, %iscos completos o %ispositi*os :%e*:m%X %el RA=D por so't8are, en grupos de
vol9+enes +V0, Volume 0roups,. 2n V0 consiste %e uno o m7s 5V, ( se %i*i%en en particiones
*irtuales al estilo %e las tra%icionales, %enomina%as vol9+enes lgicos +/V, /ogical Volumes,. /o
no*e%oso %e esta tecnolog)a es &ue, una *e6 con'igura%os to%os los *ol3menes ')sicos ( lgicos,
po%emos aQa%ir o &uitar en cual&uier momento ( en caliente +si el !ar%8are ( so't8are lo permite, m7s
*ol3menes ')sicos a un grupo *irtual, o m7s espacio a un *olumen lgico. De esta 'orma, se elimina %e
un pluma6o el t)pico problema %e tener &ue parar ( reinstalar un sistema por&ue una particin se !a
&ue%a%o pe&ueQa ( no se pue%e ampliar.
Dentro %e un V0, %e los &ue pue%e !aber *arios en nuestro sistema, tanto los 5V como los /V
se %i*i%en en e$tensiones, ')sicas +5", ( lgicas +/", respecti*amente. "stas e$tensiones son blo&ues
%e tamaQo 'i#o, &ue son la uni%a% %e la asignacin %e espacio %e un 5V a un /V, !abien%o una relacin
uno a uno entre ca%a 5" asigna%a ( las /" %e los /V9
I+agen ;. L7M5 -signacin de espacio

12
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5or supuesto, se pue%en %e#ar 5" sin asignar. "n el gr7'ico, la GZ 5" %e 5V1 no est7 asigna%a, ni
tampoco las 1Z ( IZ %e 5V2. "n cual&uier momento po%r)amos asignar alguna %e estas 5" libres a un
/V e$istente para aumentar su tamaQo, o crear uno nue*o. De 'orma similar, po%emos eliminar /"s %e
un /V re%ucien%o su tamaQo ( aumentan%o el n3mero %e /"s libres en el sistema.
A pesar %e &ue en el gr7'ico %el e#emplo las asignaciones %e 5" a /" se !an !ec!o %e 'orma
%esor%ena%a, el or%ena%or lle*ar7 en principio el or%en &ue nosotros le %igamos9
/inear9 *a asignan%o 5"s %e un 5V !asta &ue se agota, ( pasa al siguiente.
Stripe%9 asigna un 5" %e ca%a 5V %e 'orma sucesi*a.
=gual &ue ocurr)a con RA=D, el #ugan%o con estos mo%os %e asignacin po%emos ganar en
*eloci%a% %e lectura:escritura por el acceso a *arios %iscos en paralelo.
-tra caracter)stica mu( interesante %e /V es la posibili%a% %e crear Rsnaps!otsS +'otos, %el
sistema en un momento %a%o, algo mu( 3til a la !ora %e !acer una copia %e seguri%a%. /V necesita
un /V para almacenar los %atos %el snaps!ot, &ue se recomien%a &ue tenga sobre el 10P %el tamaQo %el
/V original &ue se &uiere replicar. @uan%o se le %ice a /V &ue RmonteS el snaps!ot, crea un nue*o
sistema %e 'ic!eros *irtual, &ue ser7 siempre una copia %e slo lectura %el sistema original en el
momento en &ue se cre el snaps!ot, ( *a utili6an%o el espacio &ue se le !a asigna%o para almacenar
los cambios &ue se realicen sobre el sistema real. De esta 'orma, po%emos seguir traba#an%o con el
sistema normalmente, ( %isponemos %e una imagen estable %el sistema en un momento %a%o, %e la &ue
po%emos !acer tran&uilamente la copia %e seguri%a%.
5ara po%er utili6ar /V en nuestro e&uipo, en primer lugar ten%remos &ue compilar el Hernel
para &ue lo soporte. /a opcin se encuentra en RmaHe menucon'igS B> ultiB%e*ice support +RA=D an%
/V, B> /ogical *olume manager +/V, support.
2na *e6 &ue !emos arranca%o un Hernel con soporte para /V, el primer paso ser7 preparar un
%ispositi*o +*olumen ')sico, para aQa%irlo a un grupo *irtual con la or%en pvcreate +p0isical volu+e
create,. 5or e#emplo, si &ueremos preparar una particin ')sica :%e*:!%a?, &ue %eber7 ser %el tipo Le
+/inu$ /V,, ten%r)amos &ue !acer +siempre como root,9
pvcreate /dev/hda3
4ras esto, la particin (a est7 prepara%a para aQa%irla a, o crear con ella, un grupo *irtual. @omo
a3n no tenemos ninguno, crearemos uno con *gcreate9
vgcreate /dev/lvm1 /dev/hda3
5o%r)amos !aber aQa%i%o m7s %ispositi*os en este paso, si los !ubiramos teni%o.
@on esto, (a tenemos un grupo *irtual llama%o :%e*:l*m1 con to%a la capaci%a% %e !%a?. A!ora
ten%remos &ue %i*i%ir este grupo en particiones *irtuales +*ol3menes lgicos, con l*create9
1?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
lvcreate -L 500M -n raiz /dev/lvm1
"sta or%en crear)a una particin *irtual :%e*:l*m1:rai6 %e G00b. @on la opcin B/ se in%ica el
tamaQo, ( acepta los in%ica%ores Y +para Yb,, +para b, ( 0 +para 0b,. 4ambin po%emos elegir el
tamaQo con la opcin Bl, in%ican%o en este caso en n3mero %e e$tensiones en lugar %e la capaci%a%.
@on esta or%en crearemos tantas particiones *irtuales como consi%eremos necesarias para organi6ar
nuestro sistema. "n caso %e !aber aQa%i%o m7s %e una particin ')sica al grupo *irtual :%e*:l*m1, las
particiones *irtuales se repartir7n entre to%os los %iscos, %e 'orma similar a lo &ue !ace RA=D, pero con
menos control por nuestra parte %el &ue po%emos llegar a tener con RA=D.
2na *e6 &ue tenemos crea%as las particiones *irtuales, ten%remos &ue %arles 'ormato tal ( como
lo !ar)amos con una particin ')sica +p.e#. mH's como *eremos en el siguiente aparta%o,. 4ras ello las
montaremos, ( se po%r7n utili6ar normalmente.
2.2. Sistemas de Ficheros
2na *e6 &ue tenemos asigna%o el espacio en particiones +(a sean ')sicas %e '%isH o lgicas %e
/V, con o sin RA=D, tenemos &ue %arle una estructura lgica para &ue aco#a los %irectorios (
'ic!eros. A esta estructura lgica se le conoce como sistema %e 'ic!eros.
/inu$ soporta %e serie gran canti%a% %e sistemas %e 'ic!eros, algunos consi%era%os Rnati*osS %e
este sistema +%iseQa%os para l espec)'icamente, o para otros 21=T ( a%apta%os ( a%opta%os
ampliamente ba#o /inu$,, ( otros propios %e otros sistemas operati*os +la *'at %e <in%o8s KT:", el
14.S %e <in%o8s 14:2000 o el M5.S %e A@,.
2.2.1. ext2
e$t2 es el sistema %e 'ic!eros por e$celencia %e /inu$, ( el &ue instalan por %e'ecto las
%istribuciones actuales +a3n &ue algunas (a est7n o'recien%o la opcin %e utili6ar Reiser.S,. -'rece
'uncionali%a%es est7n%ar, soporta los arc!i*os 2ni$ +arc!i*os regulares, %irectorios, arc!i*os
especiales, enlaces simblicos, ( o'rece 'uncionali%a%es a*an6a%as9
5ue%en asociarse atributos a los arc!i*os para mo%i'icar el comportamiento %el n3cleo; los
atributos reconoci%os son los siguientes9
Supresin segura9 cuan%o el arc!i*o se suprime, su conteni%o se %estru(e
pre*iamente con %atos aleatorios.
2n%elete9 cuan%o el arc!i*o se suprime, se guar%a autom7ticamente a 'in %e po%er
restaurarlo ulteriormente +a3n no se !a implementa%o,.
@ompresin autom7tica9 la lectura ( la escritura %e %atos en el arc!i*o %a lugar a una
compresin al *uelo +a3n no se !a implementa%o en el n3cleo est7n%ar,.
1C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"scrituras s)ncronas9 to%a mo%i'icacin sobre el arc!i*o se escribe %e manera
s)ncrona en %isco.
=nmutable9 el arc!i*o no pue%e mo%i'icarse ni suprimirse.
A%icin e$clusi*a9 el arc!i*o slo pue%e mo%i'icarse si se !a abierto en mo%o
a%icin, ( no pue%e suprimirse.
@ompatibili%a% con las sem7nticas %e 2ni$ S(stem V Release C o ESD9 una opcin %e
monta#e permite elegir el grupo asocia%o a los nue*os arc!i*os; la sem7ntica ESD especi'ica
&ue el grupo se !ere%a %es%e el %irectorio pa%re, mientras &ue SVRC utili6a el n3mero %e
grupo primario %el proceso &ue llama.
"nlaces simblicos Rr7pi%osS9 ciertos enlaces simblicos no utili6an blo&ue %e %atos; el
nombre %el arc!i*o %estino est7 conteni%o %irectamente en el iBno%o en %isco, lo &ue permite
economi6ar el espacio en %isco ( acelerar la resolucin %e estos enlaces e*itan%o una lectura
%e blo&ue.
"l esta%o %e ca%a sistema %e arc!i*os se memori6a9 cuan%o el sistema %e arc!i*os se monta,
se marca como in*7li%o !asta &ue se %esmonte. "l *eri'ica%or %e la estructura, e2'scH, utili6a
este esta%o para acelerar las *eri'icaciones cuan%o no son necesarias.
2n conta%or %e monta#e ( una %emora m7$ima entre %os *eri'icaciones pue%en utili6arse
para 'or#ar la e#ecucin %e e2'scH.
"l comportamiento %el c%igo %e gestin pue%e a%aptarse en caso %e error9 pue%e mostrar un
mensa#e %e error, RremontarS el sistema %e arc!i*os en lectura e$clusi*a a 'in %e e*itar una
corrupcin %e los %atos, o pro*ocar un error %el sistema.
A%em7s, e$t2 inclu(e numerosas optimi6aciones. "n las lecturas %e %atos, se e'ect3an lecturas
anticipa%as. "llo signi'ica &ue el c%igo %e gestin pi%e la lectura no slo %el blo&ue &ue necesita, sino
tambin %e otros blo&ues consecuti*os. "sto permite cargar en memoria blo&ues &ue se usar)an en las
entra%as:sali%as siguientes. "ste mecanismo se utili6a tambin en las lecturas %e entra%as %e %irectorio,
(a sean e$pl)citas +por la primiti*a rea%%ir, o impl)citas +en la resolucin %e nombres %e arc!i*os en la
operacin sobre el iBno%o looHup,.
/as asignaciones %e blo&ues e iBno%os tambin se !an optimi6a%o. Se usan grupos %e blo&ues
para agrupar los iBno%os emparenta%os as) como sus blo&ues %e %atos. 2n mecanismo %e preasignacin
permite tambin asignar blo&ues consecuti*os a los arc!i*os9 cuan%o %ebe asignarse un blo&ue, se
reser*an !asta L blo&ues consecuti*os. De este mo%o, las asignaciones %e blo&ues siguientes (a se !an
satis'ec!o ( el conteni%o %e arc!i*os tien%e a escribirse en blo&ues contiguos, lo &ue acelera su lectura,
especialmente gracias a las tcnicas %e lectura anticipa%a.
2.2.1.1. Estructura fsica
2n sistema %e arc!i*os %e tipo e$t2 %ebe estar presente sobre un %ispositi*o ')sico +%is&uete,
%isco %uro, ...,, ( el conteni%o %e este %ispositi*o se %escompone lgicamente en *arias partes, como
muestra la siguiente 'igura9
1G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen <. e$t65 2structura del disco

"l sector %e arran&ue contiene el c%igo m7&uina necesario para cargar el n3cleo en el arran&ue
%el sistema +p.e#., el lilo,, ( ca%a uno %e los grupos %e blo&ues se %escompone a su *e6 en *arios
elementos9
I+agen =. e$t65 2structura de una particin

2na copia %el superblo&ue9 esta estructura contiene las in'ormaciones %e control %el sistema
%e arc!i*os ( se %uplica en ca%a grupo %e blo&ues para permitir paliar '7cilmente una
corrupcin %el sistema %e arc!i*os.
2na tabla %e %escriptores9 estos 3ltimos contienen las %irecciones %e blo&ues &ue contienen
las in'ormaciones cruciales, como los blo&ues %e bitmap ( la tabla %e iBno%os; tambin se
%uplican en ca%a grupo %e blo&ues.
2n blo&ue %e bitmap para los blo&ues9 este blo&ue contiene una tabla %e bits9 a ca%a blo&ue
%el grupo se le asocia un bit in%ican%o si el blo&ue est7 asigna%o +el bit est7 entonces a 1, o
%isponible +el bit est7 a 0,.
2na tabla %e iBno%os 9 estos blo&ues contienen una parte %e la tabla %e iBno%os %el sistema %e
arc!i*os.
Elo&ues %e %atos9 el resto %e los blo&ues %el grupo se utili6a para almacenar los %atos
conteni%os en los arc!i*os ( los %irectorios.
2n sistema %e arc!i*os se organi6a en arc!i*os ( %irectorios. 2n %irectorio es un arc!i*o %e
tipo particular, &ue contiene entra%as. @a%a una %e las entra%as %e %irectorio contiene *arios campos9
"l n3mero %el iBno%o correspon%iente al arc!i*o.
"l tamaQo %e la entra%a en b(tes .
1I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l n3mero %e caracteres &ue componen el nombre %el arc!i*o.
"l nombre %el arc!i*o.
2.2.1.2. Los i-nodos
"n el sistema %e 'ic!eros e$t2, el iBno%o es el blo&ue %e construccin b7sico; ca%a 'ic!ero (
%irectorio %el sistema %e 'ic!eros es %escrito por un ( slo un iBno%o. /os iBno%os e$t2 para ca%a 0rupo
%e Elo&ue se almacenan #untos en la tabla %e iBno%os con un mapa %e bits +bitmap, &ue permite al
sistema seguir la pista %e iBno%os reser*a%os ( libres.
/a tabla %e iBno%os se %escompone en *arias partes9 ca%a parte est7 conteni%a en un grupo %e
blo&ues. "sto permite utili6ar estrategias %e asignacin particulares9 cuan%o un blo&ue %ebe asignarse,
el n3cleo intenta asignarlo en el mismo grupo &ue su iBno%o, a 'in %e minimi6ar el %espla6amiento %e
las cabe6as %e lectura:escritura en la lectura %el arc!i*o.
De to%os los campos &ue componen un iBno%o +su estructura se encuentra en el c%igo %el
Hernel %e /inu$, en el 'ic!ero linu$:"$t2O's.!,, el campo iOblocH contiene las %irecciones %e blo&ues %e
%atos asocia%os al iBno%o. "sta tabla se estructura seg3n el mto%o cl7sico %e 2ni$9
/os primeros %oce elementos +*alor %e la constante "T42O1D=ROE/-@YS, %e la tabla
contienen las %irecciones %e blo&ues %e %atos;
/a posicin "T42O=1DOE/-@Y contiene la %ireccin %e un blo&ue &ue contiene a su *e6 la
%ireccin %e los blo&ues %e %atos siguientes;
/a posicin "T42OD=1DOE/-@Y contiene la %ireccin %e un blo&ue &ue contiene la
%ireccin %e blo&ues &ue contienen la %ireccin %e los blo&ues %e %atos siguientes;
/a posicin "T42O4=1DOE/-@Y contiene la %ireccin %e un blo&ue &ue contiene la
%ireccin %e blo&ues &ue apuntan a su *e6 a blo&ues in%irectos.
"ste mecanismo %e %ireccionamiento se ilustra a continuacin +limit7n%ose a %os ni*eles %e
in%ireccin por ra6ones %e clari%a%,9
1A
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen &. e$t65 i>nodos

2.2.1.3. Uso
5ara po%er utili6ar e$t2 no ten%remos &ue recompilar el Hernel, (a &ue to%as las %istribuciones
lo soportan por %e'ecto +( si tu*iramos &ue compilarlo por aQa%ir otras %e las opciones &ue (a !emos
*isto, e$t2 tambin *iene marca%o por %e'ecto,. 5ara 'ormatear una particin e$t2 %ebe tener tipo L?
+/inu$,, ( se 'ormatea con9
mke2fs /dev/hda3
4ras 'ormatear la particin, la montamos con mount9
mount /dev/hda3 /mnt/prueba -t ext2
%on%e :mnt:prueba es el punto %e monta#e, ( con la opcin Bt se !a in%ica%o el tipo +a pesar %e
&ue los Hernels mo%ernos son capaces %e reconocer el tipo,.
5or 3ltimo, comentar &ue se est7 %esarrollan%o (a la siguiente encarnacin %el sistema %e
'ic!eros e$t2, &ue ser7 conoci%o con el original nombre %e e$t?. [ste ser7 un sistema %e 'ic!eros
transaccional +*er el siguiente punto, pero &ue ser7 Rcompatible !acia atr7sS con el e$t2 tra%icional, es
1L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%ecir, un Hernel sin soporte e$t? ser7 capa6 %e montarlo pero trat7n%olo como un e$t2 normal,
per%ien%o las capaci%a%es nue*as, mientras &ue un Hernel mo%erno si &ue las apro*ec!ar7. 1o !emos
llega%o a probar este sistema (a &ue est7 to%a*)a en una 'ase bastante e$perimental ( las cr)ticas &ue
!emos le)%o sobre l no son %emasia%o buenas, m7s a3n cuan%o (a e$isten sistemas transaccionales
para /inu$ bastante estables.
2.2.1.4. ext3
e$t?, como su nombre !ace suponer, es la e*olucin %e e$t2. Sus principales caracter)sticas son
&ue es un sistema %e 'ic!eros transaccional +*er siguiente punto,, &ue se pue%e con*ertir Ral *ueloS una
particin e$t2 en e$t? sin %etener el sistema, ( la compatibili%a% R!acia atr7sS con e$t2. "s %ecir, si
nuestro sistema operati*o soporta e$t?, la particin se montar7 con to%as las nue*as caracter)sticas %e
e$t?; si no, se po%r7 montar como e$t2 ( utili6arse sin problemas, per%ien%o eso s) to%as las nue*as
prestaciones.
"n principio, e$t? iba a ser el sistema %e 'ic!eros Rest7n%arS para las nue*as *ersiones %e
/inu$, pero Reiser.S !a llega%o antes al gra%o %e ma%ure6 necesario para utili6arlo en ser*i%ores
importantes, mientras &ue e$t? to%a*)a es un pro(ecto en %esarrollo ( plaga%o %e errores ( 'allos. 5or
otro la%o, las pruebas %e ren%imiento sobre las *ersiones %e %esarrollo %e e$t? no %an resulta%os
alenta%ores, resultan%o un sistema %e 'ic!eros lento ( no mu( e'iciente +incluso algo peor &ue e$t2 en
algunos casos,, &ue %e !ec!o no es m7s &ue Run parc!e sobre un parc!e ... sobre e$t2S, con los 3nicos
!ec!os positi*os %e ser compatible con sistemas antiguos ( ser transaccional. "s por esto &ue pue%e
&ue e$t? tenga $ito a la !ora %e actuali6ar alg3n sistema &ue (a est en e#ecucin, pero para sistemas
nue*os es muc!o me#or ol*i%arse %e e$t2 ( e$t? ( %irectamente implantarlos sobre Reiser.S, J.S o
T.S, &ue segui%amente pasamos a comentar.
2.2.2. ReiserFS
Reiser.S, al igual &ue J.S ( T.S &ue estu%iaremos a continuacin, es un sistema %e 'ic!eros
transaccional &ue nos asegura &ue mantiene su conteni%o en un esta%o consistente ante una ca)%a %el
sistema +cuelgue, 'allo %el suministro elctrico, etc, en cuestin %e segun%os ( sin necesi%a% %e reali6ar
un fsc8. Reiser.S tambin tiene otras caracter)sticas &ue lo !acen mu( aconse#able en el terreno %e los
ser*i%ores. Antes %e pasar a comentar Reiser.S en m7s pro'un%i%a%, *amos a estu%iar en &u consiste
el R#ournallingS+mecanismo %e seguri%a% %e los sistemas transaccionales,.
2.2.2.1. Sistemas transaccionales
@ual&uier sistema %e 'ic!eros permite almacenar, recuperar ( manipular %atos, almacena%os en
1K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
'ic!eros ( organi6a%os en %irectorios. 5ara conseguir esto, el sistema %ebe almacenar, a%em7s %e los
%atos en s), unas estructuras internas &ue mantengan la organi6acin %e los %atos sobre el %isco para
tenerlos accesibles en to%o momento. "stas estructuras %e %atos internas +como los iBno%os e$plica%os
en el punto anterior, son conoci%as como RmetaB%atosS. "l %iseQo %e estos metaB%atos es lo &ue %a su
personali%a% ( caracter)sticas +ren%imiento, etc, a ca%a sistema %e 'ic!eros.
/os metaB%atos no los mane#a el usuario ni el a%ministra%or %el sistema9 se encarga el
controla%or %el sistema %e 'ic!eros en el n3cleo %e /inu$, &ue se programa para tratar con especial
cui%a%o to%o este en#ambre %e %atos ( punteros a %atos. 5ero para &ue el sistema 'uncione
correctamente se necesita una cosa9 &ue los metaB%atos estn en un esta%o consistente. Si no, el
controla%or %el sistema %e 'ic!eros no enten%er7 estas estructuras o las malinterpretar7, resultan%o en
una per%i%a o corrupcin %e los 'ic!eros almacena%os en el sistema. 5or supuesto, el n3cleo %el sistema
se encarga %e &ue los metaB%atos estn siempre en buen esta%o, pero ante una para%a inespera%a %el
sistema +un cuelgue o similar, ste no ten%r7 tiempo %e escribir al %isco to%os los %atos ( metaB%atos
&ue estu*iera almacenan%o en ese momento o &ue tu*iera en alguna cac! interna. De este mo%o, el
sistema &ue%ar)a en un esta%o inestable (a &ue los metaB%atos no !an po%i%o ser actuali6a%os
consecuentemente.
\Nu !acer cuan%o esto ocurraX /a solucin cl7sica es utili6ar el 'scH, un programa &ue
comprueba el esta%o %e los metaB%atos %e nuestros sistemas %e 'ic!eros ( los repara si encuentra alg3n
error. @uan%o el sistema arranca, comprueba si alg3n sistema %e 'ic!eros no se pu%o %esmontar
correctamente en el 3ltimo reinicio, ( 'uer6a un an7lisis con 'scH. 5or regla general el sistema se
reconstru(e sin problemas ( sin necesitar interaccin alguna con el usuario, ( pue%e ser utili6a%o %e
'orma normal %espus %e ser repara%o. "l problema es &ue este an7lisis ( reparacin pue%e lle*ar
2@M- tiempo, %el or%en %e !oras cuan%o tratamos con %ispositi*os %e *arias %ecenas %e gigab(tes,
!oras %urante las &ue nuestro ser*i%or %e alta %isponibili%a% est7, en e'ecto, no %isponible.
/a solucin aporta%a por los sistemas %e 'ic!eros transaccionales consiste en aQa%ir a los %atos
%e siempre ( sus metaB%atos, otra nue*a estructura &ue se encarga %e ir apuntan%o como en un
cua%erno %e bit7cora las operaciones &ue se *an a reali6ar con los metaB%atos antes %e lle*arlas a cabo.
Ser)a, por %ecirlo %e alg3n mo%o, una 'orma %e metaBmetaB%atos. As), si %urante el arran&ue se
comprueba &ue el sistema %e 'ic!eros est7 en un esta%o inconsistente, se pue%e consultar esta bit7cora
para *er &u se estaba !acien%o cuan%o el sistema se colg, ( el an7lisis ( reparacin %e las estructuras
%e %atos %el %isco se centra 3nicamente en esas 6onas %el %isco. Des%e luego, los %atos &ue estu*ieran a
me%io escribir en el momento %el cuelgue se pier%en irremisiblemente, pero si &ue se consigue *ol*er
al esta%o consistente inme%iatamente anterior en cuestin %e segun%os.
2.2.2.2. Caractersticas de ReiserFS
Reiser.S ?.I.$, la *ersin inclui%a %e serie en el Hernel 2.C, !a si%o %iseQa%o e implementa%o
por Mans Reiser ( su e&uipo %e %esarrolla%ores %e la empresa 1ames(s. /a 'iloso')a %e %iseQo %etr7s %e
20
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Reiser.S es la %e &ue un buen sistema %e 'ic!eros %ebe proporcionarnos un entorno com3n, o
RnamespaceS +espacio %e nombres,, sea cual sea la tarea &ue *a(amos a reali6ar, ( %ebe ser capa6 %e
cumplir %ic!a tarea %e 'orma r7pi%a ( e'iciente. Dic!o %e otra 'orma, el sistema %e 'ic!eros %ebe tener
las caracter)sticas necesarias para &ue el usuario no se *ea 'or6a%o a aQa%ir m7s capas %e so't8are
sobre l, por e#emplo, implantan%o una base %e %atos cuan%o estos %atos po%r)an estar %irectamente
sobre el propio sistema %e 'ic!eros +por supuesto, esto no siempre tiene senti%o ni siempre es posible,.
"l primer aspecto a optimi6ar para conseguir este 'in es el ren%imiento en los 'ic!eros
pe&ueQos, un campo &ue generalmente es %a%o %e la%o por la ma(or)a %e los sistemas %e 'ic!eros.
Sistemas como e$t2 o u's son lentos ( %esper%ician espacio con los 'ic!eros pe&ueQos ( con %irectorios
mu( llenos, llegan%o a %esaconse#ar al usuario utili6arlos e incluso a %ecir &ue no es una pr7ctica
aconse#able. 5or esto, en muc!os casos en los &ue una base %e %atos no ten%r)a por &u ser necesaria, se
pasa a utili6ar una en lugar %e tener los 'ic!eros %irectamente en el %isco. "sto es lo &ue tratan %e e*itar
Mans Reiser ( su e&uipo con Reiser.S. ] lo !an consegui%o. Reiser.S es entre oc!o ( &uince *eces
m7s r7pi%o &ue e$t2 al tratar con 'ic!eros %e menos %e 1H, sin por ello penali6ar otros tipos %e 'ic!eros
+Reiser no es m7s lento &ue e$t2 con 'ic!eros gran%es, en general es siempre algo m7s r7pi%o,.
-tras caracter)sticas interesantes %e Reiser.S son9
Soporta to%os los atributos para 'ic!eros 21=T *istos en e$t2 +es compatible %e cara al sistema
( el usuario,.
/a organi6acin interna en 7rboles EF proporciona un ren%imiento general superior al obteni%o
con otros sistemas %e 'ic!eros, para 'ic!eros ( %irectorios %e cual&uier tamaQo, en especial
con %irectorios con muc!os 'ic!eros &ue otros sistemas no tratan bien.
Apro*ec!a me#or el %ispositi*o, (a &ue por un la%o no %e%ica una canti%a% 'i#a %e sectores para
las tablas %e iBno%os +se a!orra un IP %e espacio,, ( por otro se pue%en agrupar en un mismo
sector 'ic!eros pe&ueQos &ue no ocupen un sector por s) mismos ( RcolasS %e 'ic!eros +el
3ltimo tro6o &ue tampoco ocupa to%o un sector,, en lugar %e utili6ar un sector por ca%a
'ic!ero pe&ueQo.
"n el 'uturo se *a a abrir el sistema %e 'ic!eros a una ar&uitectura %e RplugBinsS, me%iante los
cuales el usuario po%r7 e$ten%er '7cilmente el sistema con nue*os tipos %e 'ic!eros,
%irectorios o atributos.
Se !an implanta%o las bases para a%aptar al mun%o %e los sistemas %e 'ic!eros algunas tcnicas
!asta a!ora 3nicas %e las bases %e %atos.
2.2.2.3. rboles B*
Reiser.S se organi6a internamente en Drboles EF, en lugar %e en iBno%os como e$t2 o tablas
como la .A4 %e SBD-S. /os 7rboles EF son un tipo %e 7rboles balancea%os +%e a!) la ^E^ %el
nombre,, esto es, se *an reorgani6an%o para mantener siempre una altura m)nima ( as) garanti6ar &ue
las b3s&ue%as sobre ellos ten%r7n siempre unos tiempos me%ios buenos, sin casos peores mu( ale#a%os
21
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%e esta me%ia. A%em7s, los tipos %e %atos ( la algoritmia asocia%a a estos 7rboles est7n especialmente
%iseQa%os para traba#ar con los %atos sobre %isco en lugar %e tener to%o el 7rbol carga%o en memoria, lo
&ue posibilita tratar con ma(or canti%a% %e %atos &ue otros tipos %e 7rboles.
/os 7rboles balancea%os son mu( utili6a%os en algoritmos %e b3s&ue%a por lo r7pi%o &ue es
obtener resulta%os, sien%o los costes %e b3s&ue%a, insercin ( borra%o logar)tmicos. Masta a!ora se
cre)a &ue no se po%)a implementar un sistema %e 'ic!eros sobre 7rboles ( &ue %iera un buen
ren%imiento, pero Reiser.S !a *eni%o a probar lo contrario.
Sin entrar en ma(or %etalle sobre el 'uncionamiento interno %e los 7rboles EF, %igamos &ue son
un caso espec)'ico %e los 7rboles E, cu(as principales caracter)sticas para un 7rbol %e or%en n son9
@a%a no%o tiene a lo sumo 2n cla*es.
@a%a no%o, e$cepto la rai6, tiene como m)nimo n cla*es.
4o%o no%o interno +no !o#a, tiene +J1 %escen%ientes, sien%o + su gra%o %e ocupacin9
5ara la rai6, 2n _ + _ 1.
5ara el resto %e no%os, 2n _ + _ n.
4o%os los no%os !o#a se encuentran en el mismo ni*el.
"l 7rbol implementar7 to%a la algoritmia necesaria para, ante las operaciones t)picas %e
insercin, borra%o ( mo%i'icacin %e cla*es, reorgani6arse internamente para cumplir con to%os los
puntos anteriormente cita%os.
2n e#emplo %el %esarrollo %e un 7rbol %e este tipo seg3n se le *an aQa%ien%o cla*es ser)a9
22
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ?. /eiser@S5 Arboles B
Ynut! %e'ine un 7rbolBEF como un 7rbolBE en el cual ca%a no%o est7 al menos lleno en 2:?
2?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
partes. /a insercin %el 7rbolBEF emplea un es&uema %e re%istribucin local para retrasar la %i*isin
!asta &ue %os no%os !ermanos est7n llenos9 entonces los %os no%os se %i*i%en en tres ca%a uno lleno en
2:? partes. "ste es&uema garanti6a &ue la utili6acin %el almacenamiento es al menos %el IIP,
mientras &ue solamente re&uieren una mo%era%a mo%i'icacin %e los algoritmos %e mantenimiento.
"sto %ebe ser seQala%o (a &ue el incremento en la utili6acin %el almacenamiento tiene el e'ecto lateral
%e acelerar la b3s&ue%a (a &ue la altura %el 7rbol resultante es m7s pe&ueQa.
"l uso %e este tipo %e 7rboles como base %e Reiser.S, a%em7s %el aumento en *eloci%a% me%ia
respecto a otros sistemas %e 'ic!eros, !a tra)%o otras *enta#as como la eliminacin %e los problemas con
%irectorios mu( pobla%os9 @on Reiser.S es per'ectamente posible tener, por e#emplo, un %irectorio &ue
contenga 100.000 %irectorios m7s sin ninguna pr%i%a %e ren%imiento, algo completamente impensable
en e$t2. 5ara conseguir tratar %irectorios con tantos elementos en su interior sin problemas, se utili6an
tablas !as! para almacenar los nombres %e los 'ic!eros ( %irectorios ( po%er acce%er en un tiempo
pr7cticamente lineal. -tra *enta#a es &ue el espacio para las estructuras internas %el sistema %e 'ic!eros
se reser*a ( libera %in7micamente, en lugar %e tener una tabla 'i#a %e iBno%os como en e$t2, &ue
consume un espacio 'i#o &ue pue%e &ue no se use +%esper%ician%o espacio, o pue%e &ue se &ue%e corto
+%esper%ician%o espacio tambin, (a &ue no se po%r)a aQa%ir na%a m7s al sistema aun &ue &ue%e
espacio libre en la 6ona %e %atos,.
Reiser.S tiene to%a una serie %e caracter)sticas para optimi6ar el uso %e 'ic!eros pe&ueQos9 por
una parte, no se reser*a el espacio en blo&ues %e un tamaQo 'i#o +%e 1 CH, como !ace e$t2,, sino &ue
es capa6 %e reser*ar el espacio e$acto &ue necesita; a%em7s, es capa6 %e almacenar en las R!o#asS %el
propio 7rbol EF %el sistema las RcolasS %e los 'ic!eros. "n la #erga %e Reiser.S, se %enominan RtailsS
+RcolasS, a los 'ic!eros m7s pe&ueQos &ue un blo&ue %e %isco o a la parte 'inal %e un 'ic!ero &ue ocupa
menos &ue un blo&ue +%e a!) el nombre %e colas,.

De esta 'orma se consiguen %os cosas9 por un la%o se aumenta en gran me%i%a el ren%imiento,
(a &ue con un 3nico acceso al %isco se leen los metaB%atos %el 'ic!ero ( el propio conteni%o %el 'ic!ero,
(a &ue ambos se encuentran en el 7rbol EF uno al la%o %el otro; por otro la%o, se pue%en Rempa&uetarS
*arias colas en una !o#a %el 7rbol +si son su'icientemente pe&ueQas, con el consiguiente a!orro %e
espacio, &ue llega a ser %e !asta un IP respecto a e$t2.
Sin embargo no to%o son *enta#as9 el empa&ueta%o %e colas pue%e !acer mella seriamente en el
ren%imiento %el sistema, (a &ue si un 'ic!ero mo%i'ica su tamaQo !abr7 &ue reorgani6ar to%as las colas
&ue se encuentren empa&ueta%as con la %el 'ic!ero &ue !a si%o mo%i'ica%o. 5or este moti*o, se pue%e
%esacti*ar el empa&ueta%o %e colas, &ue%an%o a eleccin %el a%ministra%or %el sistema el utili6ar esta
caracter)stica9 por e#emplo, si se sabe &ue los 'ic!eros %e una particin no *an a ser mo%i'ica%os
'recuentemente +son %atos est7ticos,, ser)a con*eniente acti*ar el empa&ueta%o para ganar espacio,
mientras &ue si sabemos %e antemano &ue en otra particin los %atos su'ren continuas mo%i'icaciones
por&ue se est7 traba#an%o con ellos, ser)a pre'erible %esacti*arlo.
2C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
2.2.2.4. Uso
"n primer lugar, ten%remos &ue compilar el n3cleo %e /inu$ con soporte para Reiser.S, si no lo
!emos !ec!o (a. /a opcin para aQa%ir soporte Reiser.S se encuentra ba#o el men3 R.ile S(stemsS.
5ara traba#ar con las particiones Reiser.S, %isponemos %e una serie %e !erramientas similares a
las &ue !a( para e$t2 o cual&uier otro sistema %e 'ic!eros. 5ara 'ormatear una particin, tenemos
+8reiserfs9
vjaguilar:~# mkreiserfs
<-------------mkreiserfs, 2001------------->
reiserfsprogs 3.x.0j
Usage: mkreiserfs [ -f ] [ -h tea | rupasov | r5 ] [ -v 1 |
2] [ -q ] device [block-count]
vjaguilar:~# mkreiserfs /dev/hda1
+8reiserfs pue%e recibir *arios coman%os. 2no %e los m7s 3tiles es B!, con el &ue se in%ica la
'uncin %e !as!ing con la &ue se co%i'icar7n internamente los nombres %e 'ic!eros ( %irectorios. Ma(
tres 'unciones soporta%as, r=, tea ( rupasov, sien%o r= la opcin por %e'ecto +( la m7s segura,. Jugan%o
con esta opcin po%emos conseguir particiones m7s r7pi%as, a3n &ue algunas %e estas 'unciones
+e$cepto r=, no se !a %emostra%o to%a*)a &ue sean seguras al 100P ( no !a(a colisiones %e nombres.
5ara montar una particin, se utili6a el coman%o mount %e 'orma normal9
vjaguilar:~# mount /dev/hda1 /mnt/reiser -t reiserfs
@abe seQalar &ue el Hernel 2.C.$ es capa6 %e i%enti'icar el tipo %e particin autom7ticamente,
por lo &ue el par7metro Bt pasa a ser opcional +si bien es recomen%able utili6arlo,.
A%em7s, Reiser.S soporta el re%imensiona%o %e una particin en caliente, es %ecir, sin
necesi%a% %e %esmontarla antes %e re%imensionarla ( luego *ol*erla a montar +por supuesto, siempre
&ue &ue%e espacio libre en el %ispositi*o ')sico,. "sto es mu( 3til, por e#emplo, si por %eba#o %el
sistema %e 'ic!eros !emos instala%o /V ( acabamos %e ampliar una particin *irtual. 5ara
re%imensionar una particin se utili6a resiCeDreiserfs9
vjaguilar:~# resize_reiserfs
2G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
<-------------resize_reiserfs, 2001------------->
reiserfsprogs 3.x.0j
Usage: resize_reiserfs [-s[+|-]#[G|M|K]] [-fqv] device
"l re%imensiona%o se controla con la opcin Bs, segui%a %el tamaQo &ue *a(a a tener la particin
en gigab(tes +^0^,, megab(tes +^^, o Hilob(tes +^Y^,. Si se utili6an los mo%i'ica%ores ^J^ o ^B^, lo &ue se
!ace es aQa%ir o &uitar el espacio in%ica%o a la particin. Si se omite por completo la opcin Bs, se
re%imensionar7 la particin para ocupar to%o el espacio libre en el %ispositi*o.
2.2.3. xfs y jfs
$'s ( #'s son %os e#emplos %e tecnolog)as %e nue*o %esarrollo o bien a%apta%as %e otro sistema
21=T a /inu$ ( posteriormente %ona%as a la comuni%a% %el so't8are libre. 4ambin son e#emplos %el
inters &ue el so't8are libre est7 generan%o en el mun%o %e las gran%es compaQ)as in'orm7ticas, (a &ue
estos sistemas !an si%o %esarrolla%os por S0= e =E, respecti*amente.
Ambos son sistemas completamente compatibles 21=T +atributos, etc, ( transaccionales, con
caracter)sticas en general mu( similares a Resier.S, si bien superiores en ciertos aspectos +soporte %e
A@/s, etc,. 5ero presentan %os problemas9
A pesar %e &ue ambos sistemas (a *an por la *ersin 1.$, parece ser &ue a3n no !an llega%o al
gra%o %e estabili%a% +ni %e implantacin en el mun%o /inu$, %e Reiser.S.
1inguno %e los %os !a si%o integra%o to%a*)a en el Hernel o'icial %e /inu$. 5ara probarlos, es
necesario parc!ear el n3cleo.
/as noticias %e &ue estos %os sistemas iban a ser %ona%os a la comuni%a% /inu$ 'ueron
recibi%as en su %)a con gran entusiasmo, pero %es%e entonces se !an calma%o los 7nimos. /a ma(or
prueba %e esto pue%e ser el !ec!o %e &ue a3n no se !a(a acepta%o ninguno %e los %os para la
%istribucin o'icial %el Hernel, ni para la actual *ersin 2.C ni parece ser &ue tampoco para la serie %e
%esarrollo 2.G &ue *er7 la lu6 %entro %e poco.
-tro e#emplo es &ue tanto Re%Mat como an%raHe, &ue !ab)an anuncia%o &ue sus pr$imas
*ersiones soportar)an J.S como sistema %e 'ic!eros nati*o %es%e la instalacin %el sistema +( &ue
actualmente (a soportan Reiser.S,, !an !ec!o p3blica recientemente su %ecisin %e no intro%ucirlo
'inalmente por los malos resulta%os &ue !a %a%o en ciertos tests %e estabili%a%. Si bien los errores
%etecta%os !an si%o %urante pruebas e$tremas, ( a3n as) son errores &ue slo se pue%en %ar en casos
2I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
mu( concretos ba#o con%iciones mu( %etermina%as, el !ec!o %e &ue estos problemas e$istan !a si%o
m7s &ue su'iciente para &ue ambas %istribuciones %eci%an !acer Rmarc!a atr7sS con en su %ecisin.
A3n as), son %os tecnolog)as &ue no !a( &ue per%er %e *ista ( &ue !abr7 &ue tener en cuenta en
un 'uturo, cuan%o !a(an alcan6a%o el gra%o %e estabili%a% comercial &ue sus %esarrolla%ores, =E (
S0= a(u%a%os por la comuni%a% %el so't8are libre, seguro conseguir7n alcan6ar.
2A
3. Distribucin de los datos
A!ora &ue (a conocemos las %i*ersas tcnicas para sal*aguar%ar los %atos %e nuestros %iscos
%uros ( posibilitar el cambio %e %iscos en caliente, ( los %istintos sistemas con los &ue organi6ar los
sistemas %e arc!i*os, se nos presenta otro problema9 como (a se a*an6 en los primeros cap)tulos,
*amos a conseguir la alta %isponibili%a% a tra*s %e la replicacin %e ser*i%ores, capaces %e traba#ar en
paralelo como uno slo e incluso sustituirse unos a otros en sus 'unciones. "sto implica &ue los %atos
&ue tengan &ue ser*ir o procesar %eben estar %isponibles para to%os ( ca%a uno %e nuestros ser*i%ores,
pero, \cmo conseguirloX 1uestra intencin es crear *arios ser*i%ores, rplicas e$actas unos %e otros,
&ue sir*an to%os el mismo conteni%o, ten%remos &ue encontrar alguna 'orma %e reali6ar estas rplicas
autom7ticamente, %e 'orma &ue para el usuario +en este caso, los %esarrolla%ores o encarga%os %e
conteni%os, el cluster se comporte como un 3nico or%ena%or, en el &ue ellos copian +o traba#an, en un
3nico lugar los 'ic!eros, ( el so't8are %e control %el cluster internamente se encargue %e !acer llegar
una copia a ca%a uno %e los ser*i%ores &ue lo componen.
A este respecto tenemos %os estrategias9 la replicacin ')sica %e arc!i*os, en la &ue ca%a
ser*i%or ten%r7 una copia %e to%os los %atos en su %isco %uro; ( la %istribucin %e los %atos me%iante
sistemas %e arc!i*os %istribui%os, en los &ue ten%remos un ser*i%or %e 'ic!eros ( el resto %e e&uipos %el
cluster acce%er7n a sus conteni%os por la re%. @a%a estrategia ten%r7 sus *enta#as ( %es*enta#as, &ue
a!ora estu%iaremos.
3.1. Replicacin de archivos
/a alternati*a m7s Rprimiti*aS para la %istribucin %el conteni%o a ser*ir a to%os los e&uipos %e
nuestro cluster es la replicacin +autom7tica o manual, %e los 'ic!eros en to%os los or%ena%ores. 5or
e#emplo, una 'orma %e replicar los arc!i*os ser)a tener en un ser*i%or .45 central el conteni%o a
replicar en los clientes, ( &ue estos a una !ora %etermina%a lancen un script +programa%o en el cron %el
sistema, &ue se encargue %e conectarse al ser*i%or ( %escargar to%o el conteni%o.
A&u) *eremos un no*e%oso protocolo &ue optimi6ar7 en gran me%i%a la canti%a% %e %atos a
transmitir por la re% (, en consecuencia, el tiempo necesario para reali6ar la sincroni6acin.
3.1.1. rsync
rs1nc es un programa para copiar arc!i*os entre %os sistemas 21=T &ue, utili6an%o un
ingenioso algoritmo propio, para los arc!i*os &ue (a e$istan en ambas m7&uinas es capa6 %e en*iar %e
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
un e&uipo a otro tan slo a&uellas partes %e los arc!i*os &ue !a(an si%o mo%i'ica%as, Rsincroni6an%oS
%e esta 'orma los conteni%os %e los %os e&uipos. "sta caracter)stica !ace a rs(nc especialmente
apropia%o +'rente a otros mto%os como rcp o 'tp, para mantener al %)a copias i%nticas %e %irectorios
entre e&uipos geogr7'icamente %istantes +p.e#., mirrors, rplicas %e ser*i%ores, etc,.
@on rs(nc po%emos9
@opiar o sincroni6ar 'ic!eros, %irectorios o sistemas %e arc!i*os enteros, mantenien%o si
'uera necesario enlaces, permisos, 'ec!as, etc.
Re%ireccionar to%o el tr7'ico a tra*s %e ss! para ci'rarlo.
5ermitir un acceso RannimoS para &ue terceras personas pue%an !acer mirror %e nuestras
p7ginas.
"l !ec!o %e copiar por la re% 3nicamente las %i'erencias entre los 'ic!eros ser)a tri*ial si en una
misma m7&uina tu*iramos ambos 'ic!eros9 utili6an%o diff po%emos calcular las %i'erencias (
en*iarlas. "l problema es &ue no tenemos las %os *ersiones %el 'ic!ero en la misma m7&uina, tenemos
una *ersin en ca%a m7&uina, ( lo &ue &ueremos e*itar es en*iar to%o el 'ic!ero %e un sitio al otro.
3.1.1.2. El algoritmo rsync
"l protocolo &ue utili6a rs(nc para trans'erir slo las mo%i'icaciones %e los arc!i*os est7
%escrito en su p7gina 8eb, ( es bastante ingenioso. A gran%es rasgos9
"l e&uipo receptor +^A^, %i*i%e el 'ic!ero en blo&ues %e un tamaQo 'i#o &ue no se solapan
entre s).
Se %ispone %e %os algoritmos %e c7lculo %e @R@ +en la 8eb %el rs(nc se %etallan
minuciosamente ambos algoritmos,9
2no mu( r7pi%o +VTW, pero no e$acto, a3n &ue asegura &ue nunca %ar7 un 'also
negati*o +un blo&ue con @R@ correcto siempre ser7 e*alua%o como correcto; uno
incorrecto pue%e &ue sea e*alua%o como correcto,. A%em7s, este algoritmo tiene la
caracter)stica %e &ue el resulta%o %el blo&ue $E4 se pue%e calcular r7pi%amente a
partir %el resulta%o %el blo&ue $.
-tro m7s lento +V]^,, pero &ue s) &ue es capa6 %e %iscriminar siempre si el @R@ es
correcto o no.
Se calculan los *alores %e ambos algoritmos sobre los blo&ues %el 'ic!ero, ( se en*)an al otro
e&uipo.
"l e&uipo emisor +^E^, busca en su 'ic!ero blo&ues %el tamaQo 'i#a%o para los &ue coinci%a el
algoritmo VTW9 Si el @R@ %i'iere en el 'ic!ero local ( el remoto, no !ace 'alta retransmitir
este blo&ue; si coinci%e, se anali6a con el algoritmo V]W.
Si con el algoritmo V]W tambin coinci%e, entonces el blo&ue !a cambia%o ( !abr7 &ue
transmitirlo. Se en*)a al otro e&uipo la in'ormacin precisa para reconstruir el 'ic!ero, bien
como una re'erencia a otro blo&ue %el 'ic!ero o como %atos puros.
?0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
De esta 'orma, se consigue %isminuir en gran me%i%a la canti%a% %e %atos a transmitir entre las
%os m7&uinas, algo mu( a tener en cuenta si la cone$in entre los e&uipos es lenta o si el n3mero %e
'ic!eros a sincroni6ar es gran%e.
3.1.1.3. Resultados
"stos son los resulta%os %e las pruebas lle*a%as a cabo por los autores %e rs(nc, &ue se pue%en
encontrar en su p7gina 8eb9
5ara probar el programa, transmitieron %e una m7&uina un 'ic!ero .tar con el c%igo 'uente %el
Hernel 2.0.0 %e linu$ a otra &ue ten)a el c%igo %e la *ersin 1.KK.10. @a%a *ersin ocupaba sobre los
2Gb, ( %e los 2CC1 'ic!eros en la *ersin 1.KK.10, 2K1 'ueron mo%i'ica%os en la *ersin 2.0.0, 1K se
eliminaron ( se aQa%ieron 2G 'ic!eros. Al e#ecutar diff sobre los %os 'ic!eros se obtu*o un 'ic!ero %e
2.1b con ?2.000 l)neas %e c%igo mo%i'ica%as.
"stos 'ueron los resulta%os proban%o rs(nc con %istintos tamaQos %e blo&ue9
tama$o "oin"iden"ias algoritmo alsos datos es"rito le%do
blo&ue r!pido positi'os en'iados
?00 IC2CA ?L1AC?C KCL G?12200 GI2K1GL 1I?22LC
G00 CIKLK I2001? IC 10K1K00 12L?K0I KAK?LC
A00 ??2GG GA1KA0 22 1?0AL00 1CCC?CI IKKGIC
K00 2GILI G2G0GL 2C 1CIKG00 1GAGC?L GCC12C
1100 20LCL CKILCC 21 1IGCG00 1AC0L?L CCG20C
Tabla 4. rs1nc5 /endi+iento
Don%e ca%a columna representa9
4amaQo blo&ue9 el tamaQo en b(tes %e los blo&ues en los &ue se %i*i%ieron los 'ic!eros para
anali6arlos.
@oinci%encias9 n3mero %e *eces &ue un blo&ue %el e&uipo E se encontr en A.
Algoritmo r7pi%o9 n3mero %e *eces &ue el algoritmo r7pi%o +^T^, encontr una coinci%encia en
el @R@.
.alsos positi*os9 n3mero %e *eces &ue el algoritmo r7pi%o coinci%i pero el e$!austi*o no.
Datos en*ia%os9 total %e %atos en*ia%os por la re%, en b(tes.
"scrito9 total %e b(tes escritos por A, inclu(en%o los %atos %e control %e los protocolos %e re%.
@asi to%o son %atos %e los 'ic!eros en*ia%os.
/e)%o9 total %e b(tes le)%os por A, inclu(en%o %atos %e los protocolos. @asi to%o son %atos %e
?1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
@R@.

@omo se pue%e obser*ar por los *alores %e la columna R%atos en*ia%osS, utili6an%o rs(nc tan
slo se en*iar)an por la re% %e 1 a Gb, seg3n el tamaQo %e blo&ue, %e los 2Gb %e %atos. 4an slo en
el primer caso, %on%e el tamaQo %el blo&ue es bastante pe&ueQo, se en*)an m7s %atos usan%o rs(nc &ue
los &ue se !abr)an en*ia%o en caso %e tener ambos 'ic!eros en la misma m7&uina ( !aber utili6a%o diff.
"n el resto %e casos, los %atos en*ia%os !an si%o bastantes menos. A%em7s, en ning3n caso el uso %el
procesa%or utili6an%o rs(nc !a si%o ma(or al utili6a%o por diff.
3.1.1.4. Instalacin y uso
Rs(nc se pue%e utili6ar en un mo%o clienteBser*i%or cl7sico, en el cual lan6ar)amos un proceso
rs(nc en el ser*i%or ( el propio rs(nc se encargar)a %e la autenti'icacin %e los usuarios, o utili6an%o los
ser*icios rs0 o ss0 &ue (a estn instala%os en la m7&uina ser*i%ora, sien%o en este caso stos ser*icios
los &ue mane#ar)an la autenti'icacin +( en el caso %e ss!, el ci'ra%o,, ( no sien%o necesario con'igurar
el %emonio rs(nc.
"l mo%o %e 'uncionamiento %el %emonio ser*i%or se %e'ine en un 'ic!ero %e con'iguracin en
*etc*rs1nc.conf. "l 'ormato %e este 'ic!ero es mu( sencillo9 to%as las opciones tienen la 'orma RetiFueta
G valorS; para %e'inir %irectorios sobre los &ue se permitir7 el acceso (:o controlarlo %e 'orma m7s 'ina,
se pue%en %e'inir secciones entre corc!etes. 4o%as las opciones &ue !a(a %entro %e una %e estas
secciones son espec)'icas %el %irectorio in%ica%o para esa seccin. "l resto, son opciones globales. 2na
opcin %entro %e una seccin tiene pre'erencia sobre la misma opcin a ni*el global.
"ste ser)a un 'ic!ero rs(nc.con' m)nimo, %an%o acceso annimo a un %irectorio .459
[ftp]
path = /home/ftp
comment = area de ftp
2n 'ic!ero m7s comple#o po%r)a ser el siguiente9
uid = nobody
gid = nobody
use chroot = no
max connections = 4
syslog facility = local5
pid file = /etc/rsyncd.pid
[ftp]
path = /var/ftp/pub
?2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
comment = whole ftp area (approx 6.1 GB)
[sambaftp]
path = /var/ftp/pub/samba
comment = Samba ftp area (approx 300 MB)
[rsyncftp]
path = /var/ftp/pub/rsync
comment = rsync ftp area (approx 6 MB)

[sambawww]
path = /public_html/samba
comment = Samba WWW pages (approx 240 MB)
[cvs]
path = /data/cvs
comment = CVS repository (requires authentication)
auth users = tridge, susan
secrets file = /etc/rsyncd.secrets
"n el e#emplo superior, to%os los %irectorios in%ica%os en ca%a una %e las secciones ser)an
p3blicos +en reali%a% se leen con los permisos %e nobod1, tal ( como se in%ica en las opciones uid (
gid,, e$cepto en cvs para el &ue se utili6ar)an los pares usuario:contraseQa in%ica%os en el 'ic!ero
*etc*rs1ncd.secrets para autenti'icar el acceso.
"l uso %el cliente es similar al %e rcp o scp9
rsync origen [origen_2 ... origen_n] destino
%on%e cual&uiera %e los campos origen o %estino pue%e ser un arc!i*o en una m7&uina remota,
en la 'orma [usuario@]servidor:camino. 5or e#emplo, para copiar un 'ic!ero Rarc!i*oS a la
m7&uina Rser*i%orS, usar)amos9
rsync archivo invitado@servidor:/home/invitado/archivo
Si en la m7&uina remota no se !a lan6a%o el ser*i%or, to%a*)a po%remos acce%er si est7
%isponible acceso por rs0 o ss0 ( %isponemos %e una cuenta en el ser*i%or. "n este caso ten%remos &ue
in*ocar a rs(nc con la opcin Be ( el programa a utili6ar para la cone$in9
rsync -e ssh archivo invitado@servidor:/tmp/archivo
"n este caso, en lugar %e tener el acceso limita%o a los %irectorios con'igura%os en el 'ic!ero
rs1nc.conf, ten%remos acceso a to%o el 7rbol %e %irectorios %e la m7&uina remota, seg3n los permisos
??
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%el usuario como el &ue nos !a(amos i%enti'ica%o.
3.2. Sistemas de fcheros distribuidos
/os sistemas %e 'ic!eros %istribui%os son la estrategia opuesta a la replicacin9 en lugar %e
lle*ar to%os los %atos ')sicamente a to%os los ser*i%ores, se %e#an en un e&uipo &ue !ace %e ser*i%or
central ( los %em7s or%ena%ores *an acce%ien%o a ellos por la re% seg3n los necesiten.
3.2.1. NFS
Se po%r)a %ecir &ue el 1et8orH .ile S(stem %e S21 es el pionero %e los sistemas %e 'ic!eros
comparti%os tal ( como los conocemos !o( en %)a. 1.S permite compartir %atos entre *arios
or%ena%ores %e una 'orma sencilla. 5or e#emplo, un usuario *ali%a%o en una re% no necesitar7 !acer
login a un or%ena%or espec)'ico9 *)a 1.S, acce%er7 a su directorio personal +&ue llamaremos
e$porta%o, en la m7&uina en la &ue est traba#an%o.
5ero 1.S no es un protocolo %emasia%o e'iciente ( es mu( lento para cone$iones me%iante
m%em. "st7 %iseQa%o para re%es locales, sien%o mu( 'le$ible. -'rece muc!as posibili%a%es tanto a
usuarios como a a%ministra%ores.
3.2.1.1. Los protocolos detrs de NFS
/o &ue com3nmente se llama 1.S est7 'orma%o por C protocolos %istintos. @a%a uno %epen%e
%e las /e+ote Procedure #alls +R5@, ( %e portmap +tambin llama%o rpc.portmap,. 2n
portmapper con*ierte n3meros %e programa R5@ en n3meros %e puerto. @uan%o un ser*i%or R5@ se
inicia, %ice a portmap &u puerto usar7 ( el n3mero %e programa R5@ mane#a%o. @uan%o un cliente
&uiere en*iar una peticin R5@ a un n3mero %e programa %a%o, primero contacta con el ser*i%or
portmap para tomar el n3mero %e puerto %an%o acceso al programa %esea%o. Despus, %irige los
pa&uetes R5@ al puerto correspon%iente.
/os C ser*icios &ue permiten 'uncionar a 1.S son9
(roto"olo Des"rip"i)n Demonio
ns "ste protocolo es el b7sico ( permite crear, buscar, leer o escribir
'ic!eros. "ste protocolo tambin mane#a autenti'icacin ( esta%)sticas
n's%
?C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%e 'ic!eros.
mountd
[ste se encarga %e montar sistemas e$porta%os para acce%er a ellos con
ns. "l ser*i%or recibe peticiones como mount ( umount %ebien%o
mantener in'ormacin sobre los sistemas %e 'ic!eros e$porta%os.
mount%
nsm
+1et8orH Status
onitor,
Se usa para monitori6ar los no%os %e la re% ( as) conocer el esta%o %e
una m7&uina +cliente o ser*i%or,. =n'orma, por e#emplo, %e un
rearran&ue.
stat%
nlm
+1et8orH /ocH
anager,
5ara impe%ir mo%i'icaciones %e los %atos por *arios clientes al mismo
tiempo, este protocolo mane#a un sistema %e blo&ueo. As), con la a(u%a
%el protocolo Nsm es posible conocer cu7n%o se est7 reinician%o un
cliente. 1sm libera to%os los blo&ueos %el cliente antes %e %e*ol*erlos.
locH%
Tabla 6. (@S5 .e+onios
"l %emonio knfsd, %isponible con las 3ltimas *ersiones %el n3cleo, soporta %irectamente los
protocolos ns ( nlm. 5or otro la%o, mountd ( nsm no est7n to%a*)a soporta%os.
5or el momento, est7n %isponibles %os *ersiones %e 1.S +*ersiones 2 ( ?, &ue para %istinguirlas
%enotaremos 1.S*2 ( 1.S*?, respecti*amente,. /os ser*i%ores 1.S %e /inu$ slo soportaban la
*ersin 2 !asta la serie 2.2 %el n3cleo. A partir %e la 2.C.$, (a se soporta el protocolo ?, &ue entre otras
cosas me#ora muc!o el blo&ueo +RlocHS, %e 'ic!eros comparti%os sobre la re%.
1.S trata con una estructura %e %atos llama%a file 0andle. "s una serie %e bits bastante esotrica
&ue permite i%enti'icar %e 'orma 3nica ca%a ob#eto %el sistema %e 'ic!eros +como un 'ic!ero, pero no
tan slo 'ic!eros,. @ontiene por e#emplo el )no%o %el 'ic!ero ( tambin una entra%a representan%o el
%ispositi*o %on%e se locali6an. 5or tanto, po%emos *er 1.S como un sistema %e 'ic!eros %entro %e otro
sistema %e 'ic!eros.
3.2.1.2. El servidor
"l primer paso para implantar 1.S, como (a !emos *isto, es iniciar portmap (a &ue este
protocolo es necesario para 1.S. "sto por regla general lo !ar7 el sistema %e 'orma autom7tica si
!emos instala%o soporte para 1.S +en %ebian, se controla con :etc:init.%:n'sBHernelBser*er,. "n caso %e
problemas, el coman%o rpcinfo muestra los ser*icios R5@s en la m7&uina especi'ica%a como
argumento +opcin -p,.
Antes %e &ue 1.S se inicie por s) mismo, %ebe ser con'igura%o. "$iste un 3nico 'ic!ero %e
con'iguracin &ue se llama /etc/exports. @a%a l)nea muestra la ruta e$porta%a segui%o %e una lista
%e clientes a los &ue se permite el acceso. Se pue%en aQa%ir opciones al 'inal %e ca%a nombre %e cliente.
/a p7gina %e manual e$ports +man exports, e$plica la sinta$is para los nombres %e cliente ( las
opciones.
?G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Se aceptan como nombres %e cliente9
nombre %e la m7&uina
caracteres como%)n en un nombre %e %ominio +*.gr. 9 linu$BF.mon%omaine.'r,
un netgroup + @grupo, si se usa 1=S
una %ireccin =5...
1o *amos a %etallar a&u) to%as las opciones %e monta#e %isponibles, pero algunas %e las m7s
importantes son9
rw +lectura:escritura, 9 el cliente pue%e leer ( escribir en el sistema e$porta%o
ro +slo lectura, 9 el cliente slo pue%e leer el sistema e$porta%o
root_squash 9 es pre'erible &ue un usuario root %el cliente no pue%a escribir con
permisos %e root. 5ara impe%irlo, 2=D:0=D 0 +i.e. root, en el la%o %el cliente se tra%uce
en el usuario nobod1. "sta opcin est7 acti*a%a por %e'ecto, pero se pue%e cancelar con
no_root_squash
all_squash 9 to%os los clientes &ue acce%en al sistema e$porta%o utili6an el 2=D:0=D
%e nobod1
anonuid, anongid9 el usuario nobod1 a!ora usa los 2=D ( 0=D %e'ini%os por estas
opciones.
A!ora tenemos &ue iniciar los %emonios rpc.mountd ( rpc.nfs para tener 'uncionan%o el
ser*i%or 1.S. @omprobamos nue*amente &ue to%o est7 'uncionan%o con el coman%o rpcinfo.
=ncluso po%emos iniciali6ar el ser*i%or para los protocolos nsm ( nlm +rpc.statd ( rpc.lockd,
respecti*amente,. 1o !a( ninguna premisa para arrancar un ser*i%or 1.S... pero es altamente
recomen%able &ue se reinicie por s) mismo, en caso %e &ue la m7&uina 'alle, etc...
@uan%o mo%i'icamos el 'ic!ero %e con'iguracin /etc/exports, %ebemos a*isar a los
%emonios implica%os &ue se %eben !acer los cambios. "l coman%o exportfs transmite esta
in'ormacin a nuestros ser*i%ores. /a opcin -r sincroni6a el 'ic!ero /etc/mtab con el 'ic!ero
/etc/exports 'ile. /a opcin -v muestra #untos to%os los sistemas %e 'ic!eros e$porta%os #unto
con sus opciones.
Despus %e ponerse en marc!a el ser*i%or 1.S, los siguientes 'ic!eros contienen in'ormacin
importante9
/var/lib/nfs/rmtab 9 ca%a l)nea muestra el nombre %el cliente ( el sistema %e
'ic!eros importa%o %es%e este ser*i%or;
/var/lib/nfs/etab9 el 'ic!ero /etc/exports slo contiene una lista %e
peticiones. etab est7 crea%o por exportfs. @ontiene en ca%a l)nea in'ormacin
%etalla%a sobre las opciones usa%as cuan%o se e$porta un sistema %e 'ic!eros a un solo
?I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
cliente. "s el 'ic!ero %e re'erencia usa%o por rpc.mountd cuan%o es arranca%o
/proc/fs/nfs/exports contiene la lista %e clientes conoci%a por el n3cleo
/var/lib/nfs/xtab9 Se usa por precisin cuan%o etab contiene nombres %e clientes
( grupos %e m7&uinas con como%ines. "ste 'ic!ero slo contiene nombres e$pl)citos %e
m7&uinas.
@uan%o un cliente &uiere acce%er a un sistema %e 'ic!eros, empie6a !acien%o una peticin
mountd. "ntonces se busca en etab si la peticin est7 %isponible. Se comprueba el n3cleo para saber
si el cliente tiene permiti%a la peticin +comproban%o hosts.`allow, denya, reglas %e
corta'uegos, ...,. "l n3cleo utili6a exportfs para la comprobacin, permitien%o actuali6ar el 'ic!ero
/var/lib/nfs/etab. Si, en este 'ic!ero, el sistema e$porta%o tiene permiti%o ser e$porta%o al
grupo al &ue pertenece el cliente, entonces mountd in'orma al n3cleo &ue actualice xtab con este
nue*o !ost.
3.2.1.3. El cliente
1o !a( &ue !acer na%a, normalmente. "l acceso al sistema %e 'ic!eros e$porta%o por 1.S est7
controla%o %irectamente por el n3cleo. [ste tiene &ue !aber si%o compila%o para soportar 1.S. "l
'ic!ero /proc/filesystems contiene una lista con to%os los sistemas %e 'ic!eros soporta%os
%irectamente por el n3cleo. "ntonces, lo 3nico &ue tiene &ue !acer es %ecir al n3cleo &ue &uiere acce%er
a un sistema e$porta%o por 1.S.
"l coman%o mount permite acce%er a %i'erentes sistemas %e 'ic!eros. =n'orma al n3cleo &ue
est7 %isponible un nue*o sistema %e 'ic!eros in%ican%o su tipo, su dispositivo ( su punto %e monta#e. Se
pue%e usar la opcin -t para in%icar el tipo %el sistema %e 'ic!eros a usar. 5ara 1.S, escribimos9 -t
nfs.
mount tiene sus propias opciones para 1.S. 5or e#emplo, se pue%en utili6ar las opciones
rsize ( wsize para cambiar el tamaQo %e los blo&ues para lectura o escritura. 5ue%e combinar
opciones espec)'icas %e 1.S con opciones m7s generales como intr, noexec o nosuid. /a p7gina
%e manual mount muestra to%as esas opciones.
5or e#emplo, si la m7&uina R%esarrolloS est7 e$portan%o el %irectorio R:usr:%atosS ( %es%e
nuestro e&uipo tenemos permiso %e acceso +%e'ini%o en :etc:e$ports,, po%remos montar el %irectorio
e$porta%o en :mnt:%atos con9
mount -t nfs -o nosuid,hard,intr desarrollo:/usr/datos /mnt/datos
?A
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l coman%o in%ica &ue estamos montan%o un sistema %e 'ic!eros 1.S +-t nfs,, con las
opciones nosuid, hard e intr. /os %os 3ltimos argumentos son los m7s interesantes. "l primero %e
ellos especi'ica el dispositivo a montar. 5ara 1.S la sinta$is es %istinta %e la l)nea mount !abitual,
%on%e se especi'ica %ispositi*o ( %irectorio. A&u) especi'icamos ser*i%or9%irectorioOe$porta%o en *e6
%e %ispositi*o. "l 3ltimo argumento in%ica la locali6acin %el sistema %e 'ic!eros en la parte cliente.
5ara !acer esta con'iguracin permanente, po%emos especi'icarlo en el 'ic!ero /etc/fstab %e la
m7&uina cliente. 'stab contiene to%os los %ispositi*os &ue ser7n monta%os en el arran&ue. /a sinta$is
para /etc/fstab es9
# device mount point file system options dump fsckorder
desarrollo:/usr/datos /mnt/datos nfs nosuid,hard,intr 0 0
Sin embargo, %eber7 tener cui%a%o con una entra%a permanente. Slo po%r7 usarlo cuan%o el
ser*i%or est siempre encen%i%o, o cuan%o lo encien%a antes &ue el cliente.
3.2.1.4. Precauciones
2no %e los ma(ores problemas con 1.S *iene %el !ec!o %e &ue e$ista por %e'ecto una relacin
%e con'ian6a entre un cliente ( un ser*i%or 1.S. "n el caso %e &ue la cuenta root %el ser*i%or est
comprometi%a, la %el cliente tambin lo estar7. "l 1.SB@-- %escribe un con#unto %e me%i%as
esenciales &ue %ebe tomarse para conseguir cierta seguri%a%.
2n cliente no %ebe con'iar ciegamente en un ser*i%or, por ello %ebemos especi'icar opciones
restricti*as cuan%o usamos el coman%o mount. ]a !emos menciona%o la primera %e ellas9 nosuid.
@ancela el e'ecto %e los bits S2=D ( 0=D. @on esto alguien &ue est como root en el ser*i%or primero
%ebe !acer login en el cliente como un usuario normal ( %espus !acerse root. -tra opcin, m7s
restricti*a, es noexec. 5ro!ibe e#ecutar programas en sistema %e 'ic!eros e$porta%o. "sta opcin
3nicamente se utili6a en sistemas &ue slo contengan %atos.
"n el la%o %el ser*i%or 1.S, po%emos especi'icar &ue no con')e en la cuenta root %el cliente.
4enemos &ue especi'icarlo en /etc/exports con la opcin root_squash. "ntonces si un usuario
con 2=D 0 +root, en el cliente acce%iese al sistema %e 'ic!eros e$porta%o por el ser*i%or, tomar)a el
2=D nobod1 para consultar 'ic!eros. "sta opcin est7 acti*a%a por %e'ecto ba#o /inu$ pero se pue%e
%esacti*ar con la opcin no_root_squash. Se pue%e especi'icar &u opciones %eben aplicarse en un
con#unto %e 2=Ds. Recuer%e tambin &ue las opciones anonuid ( anongid permiten cambiar los
2=D:0=D %e nobod1 por los %e otro usuario %i'erente.
Algunas opciones son m7s generales ( se e'ect3an por el portmapper. 5or e#emplo,
pro!ibimos el acceso a to%as las m7&uinas con la siguiente l)nea en el 'ic!ero /etc/hosts.deny9
?L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
# hosts.deny : absolute prohibition for every one to
# use the portmap
portmap: ALL
Despus en el 'ic!ero /etc/hosts.allow esta estricta pro!ibicin se pue%e contrarrestar
permitien%o el acceso a las m7&uinas %esea%as.
2nas buenas reglas %e corta'uegos tambin contribu(en a una proteccin me#or. "stos son los
puertos utili6a%os por los %istintos protocolos, &ue !abr7 &ue 'iltrar con*enientemente en el 'ire8all %e
la empresa9
Ser'i"io #(C (uerto (roto"olos
portmap 111 up% : tcp
n's% 20CK u%p
mount% *ariable u%p : tcp
Tabla ;. (@S5 Servicios, puertos 1 protocolos
3.2.2. Samba
Samba pue%e &ue no sea el sistema %e arc!i*os %istribui%o m7s e'iciente, seguro o transparente
%es%e el punto %e *ista %e un sistema 2ni$, pero si &ue nos proporciona algo %e incuestionable *alor en
el terreno empresarial !o( en %)a9 interoperabili%a% completamente transparente para el usuario con
sistemas <in%o8s. Aun &ue los sistemas 2ni$ sean los m7s implanta%os en el terreno %e los ser*i%ores
%e =nternet, no cabe %u%a &ue en cuanto a sistemas R%e escritorioS, <in%o8s es el m7s e$ten%i%o, ( la
ma(or)a +por no %ecir to%os, los usuarios, programa%ores, %iseQa%ores, etc. &ue tengan &ue acce%er a
nuestro ser*i%or lo !ar7n %es%e <in%o8s.
"l protocolo SE es usa%o por icroso't <in%o8s ?.11, K$:" ( 14:2000 para compartir
%iscos e impresoras. 2san%o el pa&uete %e !erramientas Sa+ba crea%o por An%re8 4ri%gell, las
m7&uinas 21=T +inclu(en%o /inu$, pue%en compartir %iscos e impresoras con ser*i%ores <in%o8s.
Ma( cuatro cosas &ue po%emos !acer con Sa+ba9
1.@ompartir una uni%a% %e /inu$ con m7&uinas <in%o8s.
2.@ompartir una uni%a% %e <in%o8s con m7&uinas /inu$.
?K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
?.@ompartir una impresora %e /inu$ con m7&uinas <in%o8s.
C.@ompartir una impresora %e <in%o8s con m7&uinas /inu$.
3.2.2.1. Programas
Se re&uieren los %os %emonios siguientes para implantar un ser*i%or Sa+ba. Se suelen instalar
en /usr/sbin ( se pue%en e#ecutar tanto %es%e los scripts %e arran&ue %el sistema como %es%e
inetd:
smbd: "l %emonio ser*i%or %e SE.
nmbd: 5ro*ee un nameser*er %e 1etE=-S para soporte %e clientes.
Mabitualmente, se instalan en /usr/bin los siguientes e#ecutables %e Sa+ba, aun&ue la
locali6acin +como %e costumbre, es opcional.
smbclient: @liente SE para ma&uinas 21=T, similar en uso al .45.
smbprint: 2n script para imprimir a una impresora en un ser*i%or SE.
smbprint.sysv: @omo el anterior, pero para m7&uinas 21=T SVRC.
smbstatus: /ista %e las cone$iones SE en marc!a en el ser*i%or local.
smbrun: 2n script ^cola^ para 'acilitar la e#ecucin %e aplicaciones en ser*i%ores.
3.2.2.2. Confguracin
/a con'iguracin %e Sa+ba en un /inu$ +u otra m7&uina 21=T, es controla%a por un solo
'ic!ero, /etc/smb.conf. "ste 'ic!ero %etermina &u recursos %el sistema se &uieren compartir con
el mun%o e$terior ( &ue restricciones %eseas poner en ellos, sien%o su sinta$is mu( similar a la %el
'ic!ero %e con'iguracin %e rs1nc.
@a%a seccin %el 'ic!ero empie6a con una cabecera como [global], [impresoras], etc.
/a seccin [global] %e'ine unas pocas *ariables &ue Sa+ba usar7 para %e'inir la comparticin %e
to%os los recursos.
/a seccin [homes] permite a los usuarios remotos acce%er a sus respecti*os %irectorios
principales en la m7&uina /inu$ local +ca%a uno al su(o na%a m7s,. "sto es, si un usuario %e <in%o8s
intenta conectar a este recurso %es%e su m7&uina <in%o8s, ser7 conecta%o a su %irectorio personal. A
tener en cuenta &ue para !acer esto, tiene &ue tener una cuenta en la m7&uina /inu$ con el mismo
nombre &ue en el %ominio %e <in%o8s.
C0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l 'ic!ero smb.conf &ue *iene %eba#o como e#emplo permite a los usuarios remotos acce%er a
su %irectorio principal en la m7&uina local ( escribir en un %irectorio temporal. 5ara &ue un usuario %e
<in%o8s *ea estos recursos, la m7&uina /inu$ %ebe estar en la re% local. "ntonces el usuario
simplemente conecta una uni%a% %e re% %es%e el 2$plorador de Hindows o el Hindows @ile Manager.
"ste es un 'ic!ero %e con'iguracin m)nimo. Se remite al lector a la %ocumentacin %e Samba para *er
las m3ltiples opciones &ue nos o'rece.
; /etc/smb.conf
;
; Hay que reiniciar cada vez que se modifique la configuracin
;
; /etc/init.d/smb restart
;
[global]
; guest account = nobody
log file = /var/log/samba-log.%m
lock directory = /var/lock/samba
share modes = yes
[homes]
comment = Directorios principales
browseable = no
read only = no
create mode = 0750
[tmp]
comment = Espacio de ficheros temporales
path = /tmp
read only = no
public = yes
5ara compartir un %irectorio cual&uiera, ten%r)amos &ue aQa%ir una seccin como esta9
[compartido]
comment = Directorio compartido con Samba
path = /var/datos
public = yes
writable = yes
5ara limitar el acceso, po%emos in%icar Rsecurit( b userS en la seccin cglobald ( %e#ar &ue los
permisos sean a ni*el %el sistema %e 'ic!eros ( seg3n el usuario <in%o8s +con los permisos %e la
cuenta en linu$,, o Rsecurit( b s!areS ( los permisos ser7n in%epen%ientes en ca%a comparti%o.
"ntonces po%remos limitar el acceso por grupos +con R8rite list b egrupoS, o por e&uipos +R!osts
C1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
allo8 b <Direcciones =5>S,.
@omo <in%o8s ( /inu$ mane#an %e 'orma %istinta los permisos ( propietarios %e los 'ic!eros,
%isponemos tambin %e to%a una gama %e opciones para in%icar con &u usuario se acce%e o se crean
los 'ic!eros ( %irectorios ( con &u permisos. 5or %e'ecto, se crear7n ( acce%er7n con el usuario &ue
lance el %emonio %e Samba, ( con los permisos &ue permita su u+as8.
Se pue%e encontrar m7s in'ormacin sobre el 'ic!ero %e con'iguracin %e Samba en la
%ocumentacin, o en el e$celente libro publica%o ba#o licencia libre R)sing Sa+baS, %isponible en
!ttp9::888.oreill(.com:catalog:samba:c!apter:booH:in%e$.!tml.
3.2.2.3. Accediendo a Windows desde Linux
5ara acce%er %es%e /inu$ a un recurso comparti%o %e <in%o8s tenemos %os opciones9
smbclient9
Se trata %e un cliente interacti*o, similar en su uso al .45. 5ara *er la lista %e recursos
comparti%os en la m7&uina Rser*i%orS (, si es el controla%or %el %ominio, la lista %e
e&uipos %el %ominio, tenemos &ue !acer9
smbclient -L servidor
5ara acce%er al recurso Rcomparti%oS, !ar)amos9
smbclient //servidor/compartido
@on esto entrar)amos en un mo%o %e Rna*egacin en consolaS por el comparti%o, %on%e
tenemos %isponibles los coman%os cl7sicos %e un cliente %e .45 en consola9 get, mget,
recurse, etc. @on R!elpS obten%remos una lista %e to%os los coman%os reconoci%os.
5or %e'ecto, smbclient se intentar7 i%enti'icar en la m7&uina remota con el nombre %el
usuario /inu$, ( nos pe%ir7 una contraseQa si 'uera necesario. 5ara in%icar otro usuario o
bien alg3n grupo %e traba#o o %ominio %e 8in%o8s, tenemos las opciones B2 ( B<9
smbclient //servidor/copartido -U usuairo -W dominio
smbmount9
"s el mo%o m7s cl7sico, tipo 21=T, con el &ue montar)amos en alg3n punto %el 7rbol %e
%irectorios local el %irectorio remoto, ( acto segui%o po%r)amos acce%er a los 'ic!eros en
el ser*i%or con los coman%os locales +cp, m*, rm, etc,.
C2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5ara montar un %irectorio, !aremos9
smbmount //servidor/compartido /mnt/samba
o bien
mount -t samba //servidor/compartido /mnt/samba
"n este caso tambin tenemos los problemas %e con &u usuario nos i%enti'icamos en la
m7&uina remota, ( con &u permisos !acemos %isponibles los 'ic!eros en la local. 5ara
esto tenemos las opciones username, pass8or%, 8orHgroup, ui%, gi%, 'masH ( %masH.
3.2.3. CODA
@o%a es un sistema %e arc!i*os %istribui%o a*an6a%o, con sus or)genes en el A.S2, ( &ue se !a
esta%o %esarrollan%o %es%e 1KLA en la 2ni*ersi%a% @arnaige ellon por el e&uipo %el pro'esor .
Sat(anara(anan.
Si bien @o%a no es tan conoci%o como las alternati*as con soporte %e alguna empresa gran%e
&ue (a !emos comenta%o anteriormente +1.S %e Sun, SE para acce%er a los sistemas icroso't, (,
en cierto mo%o, se po%r)a %iscutir &ue no !a sali%o nunca %el 7mbito aca%mico, cuenta con bastantes
caracter)sticas mu( %eseables para un sistema %istribui%o +especialmente para un cluster, &ue no se
encuentran en ning3n otro sistema similar, entre otras9
"l cliente es capa6 %e 'uncionar sin problemas %esconecta%o %el ser*i%or, (a sea por&ue
estamos traba#an%o en un port7til &ue %esconectamos %e la re%, por un 'allo en la
comunicacin, o por una ca)%a %el ser*i%or. @uan%o se restablece la comunicacin, los
sistemas %el cliente ( el ser*i%or se sincroni6an %e 'orma autom7tica.
Alto ren%imiento proporciona%o por una cac! local en la m7&uina cliente9 la primera *e6
&ue se acce%e a un 'ic!ero se guar%a en el %isco %uro local, ( los siguientes accesos se
reali6an en local tras co+probar Fue la copia es v,lida +la %el ser*i%or no !a si%o
mo%i'ica%a,. "sto aumenta el ren%imiento %e %os 'ormas9 por un la%o los accesos al %isco
local son m7s r7pi%os &ue al ser*i%or por la re%, ( por otro se re%uce en gran me%i%a la
congestin %e la re% interna, e*itan%o las colisiones.
Replicacin autom7tica %e ser*i%ores. @o%a proporciona los mecanismos necesarios para
reali6ar rplicas autom7ticas entre ser*i%ores, ( para &ue los clientes pue%an acce%er a uno u
otro %e 'orma transparente para el usuario si alguno cae.
o%elo %e seguri%a% propio e in%epen%iente %el sistema operati*o para la i%enti'icacin %e
usuarios, permisos +A@/s, ( ci'ra%o %e %atos.
Euena escalabili%a%.
/icencia abierta +05/,.
C?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4o%as estas caracter)sticas !acen %e @-DA un sistema %istribui%o i%neo para un cluster %e alta
%isponibili%a%.
3.2.3.1. Terminologa CODA
@-DA es bastante %i'erente en *arios aspectos al resto %e sistemas %e 'ic!eros %isponibles en el
mun%o 21=T. "stas %i'erencias acarrean una terminolog)a %istinta a la &ue estamos !abitua%os. Vamos
a estu%iar un poco %e la R#ergaS %e @-DA, lo &ue nos ser*ir7 para ir !acin%onos una i%ea %e cmo
'unciona9
2spacio de no+bres unificado9 las carpetas comparti%as con co%a se encuentra situa%as en el
mismo %irectorio en to%os los e&uipos &ue la compartan9 en el %irectorio :co%a en el rai6 %el
sistema %e 'ic!eros principal. "sto es una %i'erencia importante respecto al resto %e sistemas
%e 'ic!eros comparti%os para 21=T:/inu$, &ue permiten montar los %irectorios en cual&uier
punto %el 7rbol %e %irectorios. /o &ue se persigue con esta limitacin es uni'icar el aspecto
%e los %irectorios a compartir en to%as las m7&uinas, para asegurarse %e &ue un %etermina%o
'ic!ero se encuentra en to%as ellas en el mismo lugar.
I+agen %. #O.-5 Arbol de directorios
CC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen I. #O.-5 Arbol de directorios
#elda coda9 una cel%a es un con#unto %e ser*i%ores +%es%e uno !asta *arios centenares, con la
misma con'iguracin. 2no %e los ser*i%ores es el S@ +S(stem @ontrol ac!ine,, el
ser*i%or maestro %on%e se guar%a la copia principal, se !acen mo%i'icaciones ( se propagan
!asta los %em7s. 2n cliente slo pue%e pertenecer a una cel%a co%a +en la implementacin
actual,, ( pue%e conectarse in%istintamente a cual&uiera %e los ser*i%ores &ue la 'orman.
7ol9+enes coda9 /os ser*i%ores agrupan los 'ic!eros comparti%os en *ol3menes, &ue
t)picamente contienen m7s %e un %irectorio. @a%a *olumen tiene una rai6 ( contiene una
CG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
serie %e sub%irectorios. 4o%os los *ol3menes se montan ba#o el %irectorio :co%a en los
clientes, ( se pue%en ani%ar +se pue%e montar un *olumen %entro %e otro,. "l grupo %e
ser*i%ores &ue sir*en un mismo *olumen se %enomina VS0 +Volume Storage 0roup,.
Puntos de +ontaje de vol9+enes9 el *olumen rai6, un *olumen especial, se monta %irectamente
en /coda. "l resto %e *ol3menes %e una cel%a co%a se montan en sub%irectorios %e /coda
con el coman%o cfs +8+ount.
-l+acena+iento de datos9 un ser*i%or @-DA necesita mantener m7s %atos sobre los 'ic!eros
&ue un ser*i%or 1.S o Samba. "s por esto &ue los 'ic!eros comparti%os no se guar%an tal
cual sobre el %isco, si no &ue se guar%an in%e$a%os por n3meros ba#o /vicepa ( se
almacena to%a una serie %e metaB%ato e in'ormacin transaccional +%e 'orma similar a como
lo !ace Reiser.S, en la particin %e RV.
/7M !/ecoverable 7irtual Me+or1"9 RV es una librer)a para reali6ar acciones %e 'orma
atmica, almacenan%o in'ormacin transaccional en %isco para po%er recuperarse m7s tar%e
ante cual&uier error. @-DA utili6a esta librer)a para conseguir atomici%a% en sus
operaciones, ( usa una particin para almacenar los %atos transaccionales.
#ac0J del cliente9 los clientes mantienen una cac! local +no *ol7til, %e los 'ic!eros a los &ue
se !a acce%i%o recientemente, %e 'orma similar a como lo !acen los ser*i%ores9
generalmente, los metaB%atos %e RV en :usr:co%a:DA4A ( los 'ic!eros normales in%e$a%os
por n3meros ba#o :usr:co%a:*enus.cac!e. "sta cac! local permite el acceso ( uso %e los
'ic!eros remotos %e 'orma muc!o m7s r7pi%a &ue 1.S o Samba, ( !ace posible tambin el
'uncionamiento tras una %escone$in %el ser*i%or.
7alidacin9 ca%a *e6 &ue se acce%e a un 'ic!ero en el cliente, o ste se reconecta al ser*i%or
%espus %e un problema con la re%, @-DA valida los %atos %e la cac! local para *er si est7n
al %)a con respecto a las *ersiones &ue !a(a en el ser*i%or, ( los actuali6a si 'uera necesario.
-utentificacin9 @-DA gestiona la autenti'icacin %e los usuarios a tra*s %e un RtoHenS o
lla*e &ue les entrega cuan%o se i%enti'ican, %e 'orma similar a como lo !ace el protocolo
Yerberos %e <in%o8s. "ste toHen se asocia a una i%enti%a% %e usuario en el ser*i%or, ( la
autenti'icacin as) otorga%a tiene una %uracin %e algo menos %e 2G !oras.
Proteccin9 cuan%o se intenta acce%er a un 'ic!ero comparti%o con un %etermina%o toHen, el
ser*i%or comprueba si la i%enti%a% asocia%a a ese toHen tiene permiso consultan%o una serie
%e tablas +-#L, Access @ontrol /ists,.
3.2.3.2. Los servidores
2na cel%a %e ser*i%ores @-DA es una enti%a% bastante comple#a en la &ue pue%en !aber
CI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
centenares %e e&uipos ser*i%ores, o'recien%o una *arie%a% %e ser*icios, a to%o un con#unto %e clientes.
"n concreto, el protocolo @-DA se sustenta sobre tres ser*icios9
Ser'idor de
*i"+eros
"l ser*i%or codasrv interact3a con el proceso venus en los clientes. "stos %os procesos
son los &ue reali6an to%o el intercambio %e %atos +'ic!eros, entre las m7&uinas.
Ser'idor de
Autentii"a"i)n
"l ser*i%or aut06 se e#ecuta en to%os los ser*i%ores, *ali%an%o a los usuarios (
controlan%o sus toHens %e i%enti%a%. Sin embargo, las contraseQas slo se pue%en
cambiar en el S@, por lo &ue la copia %e la base %e %atos es %e slo lectura en to%as
la m7&uinas e$cepto en el S@. /as actuali6aciones %e contraseQas se reali6an %e
'orma autom7tica me%iante los %emonios updateclnt:updatesrv %escritos a
continuacin.
Ser'idores de
A"tuali,a"iones
"l proceso updateclnt traba#a #unto con updatesrv +&ue se e#ecuta en el S@, para
mantener actuali6a%as las copias %e las bases %e contraseQas en to%os los ser*i%ores
con la copia original en el S@. 5ara ello, el %emonio updateclnt comprueba ca%a
cierto tiempo si los 'ic!eros %el S@ !an si%o actuali6a%os. "s por esto &ue las
actuali6aciones no son inme%iatas, %epen%en %el perio%o %e comprobacin %e
updateclnt.
Tabla <. #O.-5 Procesos servidores
2n mismo ser*i%or pue%e o'recer los tres ser*icios a la *e6, o tan slo alguno %e ellos. "n
cual&uier caso, el %emonio updateclnt %eben e#ecutarlo siempre para mantener actuali6a%as sus copias
%e los 'ic!eros %el sistema ( %e la base %e %atos %e contraseQas.
5or e#emplo, po%r)amos tener la organi6acin &ue se muestra en la siguiente 'igura, %on%e
tenemos9
4res ser*i%ores con los tres ser*icios. "l %e arriba a la i6&uier%a es a%em7s el S@, (a &ue est7
e#ecutan%o el %emonio updatesrv.
2n ser*i%or 3nicamente %e autenti'icacin +arriba a la %erec!a, &ue no %a ser*icio %e
comparticin %e 'ic!eros.
2n ser*i%or 3nicamente %e 'ic!eros +aba#o,, sin ser*icio %e autenti'icacin.
CA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4K. #O.-5 OrganiCacin de una celda
CL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
2n ser*i%or @-DA %eber)a tener al menos tres particiones en el %isco9
2na particin para el sistema operati*o ( los %atos %e @-DA +esto se po%r)a %i*i%ir en %os o
m7s particiones, reparti%as entre *arios %iscos para optimi6ar los tiempos %e acceso a los
%atos,.
2na particin para los %atos %e RV, &ue %ebe ser %e alre%e%or %el CP %el tamaQo %e los %atos
comparti%os me%iante @-DA.
-tra particin para la bit7cora %e RV, no necesita ser mu( gran%e +sobre 20b ser)a
su'iciente,.
2na instalacin ptima po%r)a tener este aspecto9
(arti"i)n Contenido (unto -ontaje Tama$o Ne"esita s".
!%a2 Sistema -perati*o : IG0E Si
!%aG Datos %e traba#o :*ar 100E Si
!%a? Datos %e @-DA :*ice ?00E Si
!%c1 Eit7cora RV 1- 12E 1o
s%a1 Datos RV 1- 1?0E 1o
s%a2 Datos @-DA 1 :*icepa 1.I0E Si
s%a? Datos @-DA 2 :*icepb 1.I0E Si
s%aG Datos @-DA ? :*icepc 1.I0E Si
Tabla =. #O.-5 Particiones en el servidor
Ma( &ue seQalar a&u) uno %e los gran%es incon*enientes %e @-DA9 el conteni%o %e la particin
%e RV se mantiene SI2MP/2 en memoria. "sto signi'ica &ue, para un ser*i%or &ue comparta 20b %e
%atos, ten%remos L0b ocupa%os %e 'orma 'i#a en memoria por los %atos %e RV. "l problema es &ue
esta canti%a% se %ispara al aumentar el tamaQo %e los %atos a compartir9 para un ser*i%or %e 'ic!eros
con C00b, necesitar)amos 1.I0b %e memoria 3nicamente para los %atos %e RV. "ste es un punto
importante &ue nos %eber)a !acer plantearnos si nos merece la pena o no utili6ar @-DA.
"n una instalacin t)pica, los %atos se almacenan en los ser*i%ores en estos %irectorios9
/vicep[a-z]: Datos comparti%os por el sistema @-DA.
CK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/vice/auth2: "ste %irectorio contiene la in'ormacin re'erente al ser*icio %e autenti'icacin,
entre otros el 'ic!ero %e bit7cora +log, %el %emonio.
/vice/bin: @ontiene los e#ecutables para los ser*icios %el S@.
/vice/db: Almacena las bit7coras %e los procesos %e actuali6acin, as) como copias %e las
bases %e %atos %e los ser*i%ores.
/vice/srv: @ontiene in'ormacin %el ser*i%or %e 'ic!eros, ( su 'ic!ero %e bit7cora.
/vice/vol: Almacena in'ormacin sobre los *ol3menes %el sistema %e 'ic!eros @-DA.
/vice/vol/remote: Slo e$iste en el S@, ( contiene in'ormacin sobre los *ol3menes
e$istentes en to%os los ser*i%ores %e esta cel%a.
/vice/misc: "n este %irectorio se e#ecutan los ser*icios updateclnt ( updatesrv.
"n la seccin A.C se %etalla en pro'un%i%a% cmo se instal una cel%a @-DA m)nima, con un
ser*i%or ( un cliente, ( las pruebas %e ren%imiento &ue se reali6aron sobre esta instalacin.
3.2.3.3. Los clientes
"l c%igo %el cliente @-DA se %i*i%e en %os partes9 un controla%or en el n3cleo %el sistema
operati*o +*iene %e serie con /inu$ %es%e la *ersin 2.2, ( una serie %e utili%a%es en espacio %e
usuario. "l primer paso para poner a 'uncionar un cliente co%a ser7 recompilar el n3cleo con soporte
para @-DA.
@omo (a se !a a%elanta%o en el punto anterior, en los clientes @-DA se e#ecuta el %emonio
venus, &ue es el encarga%o %e, por una parte, %ialogar con el ser*i%or ( reali6ar el intercambio %e %atos
( 'ic!eros (, por otra, con el controla%or %el Hernel %e la m7&uina local para pasarle stos %atos ( &ue
genere los conteni%os %el %irectorio *irtual /coda.
/os 'ic!eros en los clientes se organi6an %e la siguiente 'orma9
/usr/coda/etc 9 .ic!eros %e con'iguracin %el cliente.
/usr/coda/venus.cache: @ac! local %e los 'ic!eros comparti%os.
/usr/coda/spool: Datos re'erentes a la sincroni6acin %e arc!i*os entre cliente ( ser*i%or,
%urante el uso normal o tras %escone$iones %e la re%, 'allos %el so't8are, etc.
/usr/coda/tmp: Datos temporales.
/coda9 5unto %e acceso a los *ol3menes remotos.
G0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"n el cliente tambin se instalan las !erramientas necesarias para mane#ar la autenti'icacin, el
control %e A@/s, *er el esta%o %e los ser*icios, etc.
3.2.3.4. Caractersticas avanzadas
Vamos a comentar a continuacin un par %e caracter)sticas a*an6a%as %e @-DA %e las &ue a3n
no !emos !abla%o9
@ontrol %e las cac!s9 "n los clientes @-DA po%emos RmarcarS ciertos 'ic!eros para &ue se
obtengan %el ser*i%or na%a m7s conectarnos a l, ( para &ue se mantengan siempre en la
cac!. De esta 'orma, nos aseguramos %e &ue siempre *amos a tener una copia %e ciertos
'ic!eros importantes, a3n en el caso %e un 'allo %el ser*i%or. 4ambin po%emos asignar
priori%a%es a los 'ic!eros, %e 'orma &ue ciertos arc!i*os sean manteni%os en la cac! por
m7s tiempo &ue otros &ue se eliminar7n antes.
Replicacin %e ser*i%ores9 @-DA nos pro*ee %el so't8are necesario para mantener rplicas
i%nticas %e los ser*i%ores %e una misma cel%a. "sta rplica se lle*a a cabo tambin por los
%emonios updateclnt:updatesrv, al igual &ue la replicacin %e las bases %e %atos %e
contraseQas. De esta 'orma, po%emos aQa%ir seguri%a% me%iante re%un%ancia %e ser*i%ores,
tenien%o *arias copias %e los %atos en %istintas m7&uinas ( !acien%o &ue los clientes acce%an
in%istintamente a un ser*i%or u a otro. A%em7s, @-DA controla cuan%o un ser*i%or tiene
problemas ( re%irige a los clientes a otros ser*i%ores %e la misma cel%a.
=m7genes *irtuales9 @-DA tambin nos o'rece la posibili%a% %e crear %urante unos momentos
un R*olumen *irtualS en el &ue se mantiene una imagen %e un *olumen en un momento %a%o,
mientras &ue se pue%e seguir traba#an%o con el *olumen original sin &ue por ello se
mo%i'i&uen los conteni%os %e su Rimagen *irtualS. De esta 'orma, po%emos reali6ar
'7cilmente copias %e seguri%a% %e un *olumen con cual&uier !erramienta e$terna a @-DA
mientras &ue el sistema est7 'uncionan%o.
@opias %e seguri%a%9 A%em7s %e la caracter)stica &ue acabamos %e comentar, @-DA tiene un
completo sistema %e copias %e seguri%a% propio, en el &ue po%emos programar copias
%iarias, tanto completas como incrementales.
3.2.4. GFS
"l 0lobal .ile S(stem, %esarrolla%o por Sistina So't8are +los mismos %esarrolla%ores %el
/V,, es un nue*o sistema %e 'ic!eros %istribui%o %iseQa%o para sacar el m7$imo parti%o a la nue*a
G1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
tecnolog)a fibre c0annel, anuncia%a sucesora %el stan%ar% S@S=.
Actualmente e$isten %os *ersiones %e 0.S, con %istintas licencias9
Masta la *ersin C.1.1, 0.S se %istribu)a ba#o la licencia 05/.
A partir %e la C.2, libera%a a 'inales el pasa%o mes %e agosto, 0.S &ue%a cubierto por la nue*a
licencia S5/, similar a la 05/ pero &ue 'uer6a a pagar una cuota por el uso comercial %e
0.S. Se consi%era uso comercial siempre &ue se *a(a a obtener alg3n bene'icio, (a sea por
*en%er un pro%ucto &ue !ace uso %e 0.S +un e&uipo preinstala%o con 0.S, o bien o'recer un
ser*icio &ue se base e una in'raestructura con 0.S +p.e#., cobrar por un ser*icio %e correo
cu(os ser*i%ores utilicen 0.S,.
"ste cambio %e licencia !a le*anta%o ampollas en el mun%o %el so't8are libre9 en primer lugar
por&ue po%r)a no ser legal seg3n los trminos %e la 05/, %ebi%o a la gran canti%a% %e c%igo %e
terceras personas &ue contribu(eron en el pro(ecto &ue a3n &ue%a en 0.S ( a su 'uerte integracin con
el Hernel %e /inu$; ( en segun%o, por&ue el cambio !a si%o reali6a%o #usto tras 'inali6ar un e$tenso
programa %e pruebas en el &ue colabor %esinteresa%amente gente %e to%o el mun%o, lo &ue !ace *er el
cambio como una traicin. "n cual&uier caso, a los pocos %)as %e la aparicin %e la nota %e prensa %e
Sistina anuncian%o el cambio %e licencia, se cre el pro(ecto -pen0.S para continuar %esarrollan%o %e
'orma in%epen%iente pero paralela al 0.S %e Sistina la 3ltima *ersin con c%igo 05/, %e 'orma
similar a como ocurri con ss0 ( -penSSM.
3.2.4.1. Sistemas de discos compartidos
0.S no es un sistema %e 'ic!eros comparti%o, si no un sistema %e discos co+partidos. /a
principal %i'erencia entre ambas tecnolog)as es &ue, mientras &ue en un sistema %e 'ic!eros comparti%o
!a( una organi6acin cliente:ser*i%or entre las m7&uinas, %on%e 3nicamente el ser*i%or tiene acceso
')sico a los %iscos ( comparte la in'ormacin por la re% con los clientes, en la nue*a tecnolog)a %e
%iscos comparti%os TO.OS los e&uipos tienen acceso ')sico a los %iscos en igualdad %e con%iciones,
elimin7n%ose as) la organi6acin cliente:ser*i%or.
/as principales caracter)sticas ( *enta#as %e un sistema %e 'ic!eros por %iscos comparti%os son9
Ma1or disponibilidad %el sistema %e 'ic!eros, (a &ue se elimina el punto de fallo +S5., &ue
representaba el ser*i%or %e 'ic!eros9 a!ora to%os los e&uipos tienen la misma priori%a% ( las
mismas posibili%a%es en el acceso a los %iscos, ( si un or%ena%or se cuelga, el resto pue%en
seguir acce%ien%o a los %atos sin problemas.
Balanceo de carga, (a &ue los clientes son capaces %e acce%er %irectamente a cual&uier porcin
%e %atos en cual&uiera %e los %ispositi*os %e almacenamiento. 1o !a( ning3n posible Rcuello
G2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%e botellaS &ue se encargue %e %irigir el tr7'ico.
Se pue%en agregar to%os los %iscos comparti%os en una 3nica unidad virtual, accesible por
igual %es%e to%os los e&uipos. De esta 'orma, se 'le$ibili6a ( 'acilita enormemente la
a%ministracin %el espacio %e los %ispositi*os.
Ma1or escalabilidad en capaci%a%, conecti*i%a% ( anc!o %e ban%a, al no estar limita%os por la
ar&uitectura cliente:ser*i%or, %on%e la capaci%a% %el ser*i%or limita la capaci%a% total %el
sistema.
3.2.4.2. Caractersticas de GFS
0lobal .ile S(stem es un sistema %e %iscos comparti%os en cluster para /inu$. 0.S utili6a
tcnicas transaccionales en los clientes para recuperarse r7pi%amente %e cual&uier 'allo +%e 'orma
similar a Reiser.S,. 4o%os los clientes comparten los mismos %ispositi*os %e %isco me%iante canal %e
'ibra +.@, @ibre #0annel,, S@S= o %ispositi*os %e re% por blo&ues. "l sistema %e 'ic!eros aparenta ser
local para ca%a cliente, mientras &ue el c%igo %e 0.S en el n3cleo %e ca%a m7&uina se encarga %e
sincroni6ar el acceso a los 'ic!eros, %e una 'orma completamente simtrica9 to%as las m7&uinas tienen
la misma priori%a% %e acceso a los %atos. 0.S utili6a cac!s %e lectura ( escritura para acelerar su
'uncionamiento, ( soporta to%a la sem7ntica %e 'ic!eros %e 21=T +atributos, etc,. e%iante 0.S se
pue%e compartir !asta 1 4erab(te %e %atos +limitacin %el Hernel %e /inu$, no %e 0.S,, en 'ic!eros %e
!asta 2
IC
b(tes. =ncluso con estos tamaQos el ren%imiento es mu( bueno, por el uso e$tensi*o %e tablas
!as! para la b3s&ue%a ( acceso a %irectorios ( 'ic!eros. /a *eloci%a% %e acceso %epen%e %irectamente
%e la concurrencia9 cuantos m7s e&uipos estn acce%ien%o en paralelo a un mismo 'ic!ero, peor
ren%imiento obten%r7n con ese 'ic!ero.
"l siguiente gr7'ico muestra un uso t)pico %e 0.S en un cluster %e ser*i%ores9 tenemos arriba
to%os los %ispositi*os %e almacenamiento, comparti%os por to%os los ser*i%ores a tra*s %e una re% %e
acceso +SA19 Storage Access 1et8orH, &ue bien pue%e ser .@, S@S= o alg3n otro mto%o. A&u) se
pue%e *er claramente como no !a( ning3n e&uipo &ue act3e %e ser*i%or %e 'ic!eros, si no &ue to%os
acce%en por igual a los %iscos a tra*s %e la SA19
G?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 44. '@S5 2sFue+a general
3.2.4.2. Instalacin de GFS sobre Canal de Fibra
@omo con to%os los sistemas %e 'ic!eros, el so't8are %e 0.S se %i*i%e en %os partes9 un
controla%or en el Hernel ( una serie %e utili%a%es en el espacio %e usuario para crear el sistema %e
'ic!eros 0.S, con'igurarlo, a%ministrarlo, etc. 5or lo tanto, en primer lugar %eberemos parc!ear (
recompilar en n3cleo para aQa%ir soporte para 0.S ( .@ +el soporte para .@ *iene %e serie en el Hernel
2.C, el %e 0.S no,.
A continuacin se %escriben los pasos a seguir para implantar un sistema 0.S %e %iscos
comparti%os sobre canal %e 'ibra, accesible %es%e oc!o e&uipos9
/ard0are ne"esario:
-c!o e&uipos con el !ar%8are necesario para acce%er al canal %e 'ibra. Sus nombres e =5s
ser7n9
host-a 10.0.4.1
host-b 10.0.4.2
host-c 10.0.4.3
host-d 10.0.4.4
host-e 10.0.4.5
host-f 10.0.4.6
host-g 10.0.4.7
host-h 10.0.4.8
GC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
2n %isco .@ RA=D con %os particiones. /a primera pe&ueQa, %e Cb; ( la segun%a con el
resto %el espacio, 2KK0b. "l .@ RA=D %ebe cumplir con la norma S@S= D"5.
2n s8itc! Eroca%e SilH8orm .ibre @!annel s8itc!, con la %ireccin =5 10.0.C.20. /os
e&uipos ( el .@ RA=D se conectan al s8itc! %e esta 'orma9
Port 0: FC RAID
Port 1: host-a
Port 2: host-b
Port 3: host-c
Port 4: host-d
Port 5: host-e
Port 6: host-f
Port 7: host-g
Port 8: host-h
Conigura"i)n:
1.Veri'icar &ue las %os particiones %el %isco !an si%o %etecta%as por los ser*i%ores ( est7n
accesibles al sistema9
host-a% cat /proc/partitions
..
8 17 4000 sdb1
8 18 299000000 sdb2
..
:%e*:s%b1 ( :%e*:s%b2 son las %os particiones %el RA=D.
2.@argar los m%ulos para el Hernel en to%os los ser*i%ores9
host-a% modprobe memexp; modprobe gfs
Repetir la operacin en to%os los e&uipos.
?.@rear un 'ic!ero %e con'iguracin pool0.cf. "n !ostBa9
poolname pool0
subpools 1
subpool 0 0 1 gfs_data
pooldevice 0 0 /dev/sdb2 1
C.@rear el pool0.
GG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
host-a% ptool pool0.cf
Pool labels successfully written.
G.@rear un segun%o pool para la con'iguracin %e 0.S. "n !ostBa, creamos el 'ic!ero
pool0cidev.cf9
poolname pool0_cidev
subpools 1
subpool 0 0 1 gfs_data
pooldevice 0 0 /dev/sdb1 1
I.@rear pool0Oci%e*9
host-a% ptool pool0cidev.cf
Pool labels successfully written.
A.@argar los %os pools en to%os los e&uipos9
host-a% passemble
Added pool0.
Added pool0_cidev.
Repetir en los hosts b - h.
L.@rear el sistema %e 'ic!eros 0.S9
host-a% mkfs_gfs -p memexp -t /dev/pool/pool0_cidev
-i -j 8 /dev/pool/pool0
Device: /dev/pool/pool0
Blocksize: 4096
Filesystem Size: ...
Journals: 8
Resource Groups: ...
Locking Protocol: memexp
Lock Table: /dev/pool/pool0_cidev
Syncing...
K.5reparar el %ispositi*o %e con'iguracin %e 0.S. "n !ostBa, crear el 'ic!ero gfscf.cf:
GI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
datadev: /dev/pool/pool0
cidev: /dev/pool/pool0_cidev
lockdev: /dev/pool/pool0
cbport: 3001
timeout: 30
STOMITH: brocade_port
name: brocade
ipaddr: 10.0.4.20
passwd: stupidpassword
# IP addr CID STOMITH method Plug
node: 10.0.4.1 0 SM: brocade 1
node: 10.0.4.2 1 SM: brocade 2
node: 10.0.4.3 2 SM: brocade 3
node: 10.0.4.4 3 SM: brocade 4
node: 10.0.4.5 4 SM: brocade 5
node: 10.0.4.6 5 SM: brocade 6
node: 10.0.4.7 6 SM: brocade 7
node: 10.0.4.8 7 SM: brocade 8
10."scribir la con'iguracin %e 0.S en el @=D"V9
host-a% gfsconf -c gfscf.cf
datadev: /dev/pool/pool0
cidev: /dev/pool/pool0_cidev
lockdev: /dev/pool/pool0
cbport: 3001
timeout: 30
STOMITH: brocade_port
name: brocade
ipaddr: 10.0.4.20
passwd: stupidpassword
node: 10.0.4.1 0
SM: brocade 1
node: 10.0.4.2 1
SM: brocade 2
node: 10.0.4.3 2
SM: brocade 3
GA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
node: 10.0.4.4 3
SM: brocade 4
node: 10.0.4.5 4
SM: brocade 5
node: 10.0.4.6 5
SM: brocade 6
node: 10.0.4.7 6
SM: brocade 7
node: 10.0.4.8 7
SM: brocade 8
11.@on'igurar el %ispositi*o D"59
host-a% dmep_conf /dev/pool/pool0
Configuration complete.
Buffers created :: 150000
Bytes per buffer :: 32
Segment number :: 0
12.=niciar el %emonio S4-=4M en to%os los ser*i%ores9
host-a% stomithd
Repetir en el resto de equipos.
1?.ontar el sistema %e 'ic!eros en to%os los ser*i%ores sobre el %irectorio f/gfs^9
host-a% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.1
host-b% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.2
host-c% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.3
host-d% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.4
host-e% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.5
host-f% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.6
GL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
host-g% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.7
host-h% mount -t gfs /dev/pool/pool0 /gfs -o hostdata=10.0.4.8
Mec!o esto, los oc!o e&uipos pue%en acce%er al %irectorio comparti%o en /gfs como si se
tratar %e un %isco local. "l c%igo %el controla%or 0.S en el Hernel %e ca%a m7&uina se encargar7 %e
resol*er los posibles con'lictos %ebi%os a interblo&ueos, 'allos en alg3n otro ser*i%or, etc.
3.2.4.3. Limitaciones de GFS
Si nos %eci%imos a utili6ar 0.S en nuestro cluster, %eberemos tener en cuenta ciertas
limitaciones, algunas %eri*a%as %e la propia naturale6a comparti%a %e 0.S ( otras %e las
implementaciones actuales %el protocolo9
0.S no se pue%e montar sobre RA=D so't8are, (a &ue la in'ormacin interna %el RA=D se
mantiene en ca%a m7&uina local ( no !abr)a 'orma %e compartirla entre to%os los e&uipos. Si
&ue se pue%e utili6ar sobre RA=D !ar%8are, siempre &ue sea la propia electrnica %el
%ispositi*o la &ue realice el RA=D.
0.S pue%e %ar problemas si se intenta utili6ar #unto a /V, a3n &ue si se lle*a cui%a%o
'unciona bien. De cual&uier mo%o, se est7 %esarrollan%o una *ersin especial %e /V para
uso sobre 0.S.
2n sistema 0.S no se pue%e compartir posteriormente con Samba, %ebi%o a 'unciones %e
acceso a los %atos &ue a3n no est7n implementa%as.
0.S no soporta A@/s %e ning3n tipo, ni cuotas %e %isco.
GK
4. Monitorizacin
-tro aspecto mu( importante en el clustering %e alta %isponibili%a% es la monitori6acin %e los
ser*icios9 si alguno %e nuestros ser*i%ores RcaeS, ten%remos &ue a%*ertirlo %e alguna 'orma (
%esenca%enar las acciones pertinentes +eliminarlo %e la lista %e ser*i%ores acti*os ( !acer &ue alg3n
otro ser*i%or tome el lugar %e este,.
4.1. daemontools y ucspi-tcp
A pesar %e &ue %aemontools no se pue%e %ecir &ue sea un programa %e monitori6acin %e
ser*icios en s), si &ue nos pue%e ser*ir como una Rprimera l)neaS %e monitori6acin. %aemontools es en
concepto mu( similar a inet%9 controla las cone$iones a una serie %e ser*icios esperan%o cone$iones en
una serie %e puertos, ( lan6a los ser*i%ores asocia%os cuan%o se necesiten. 5or su parte, ucspiBtcp lan6a
un ser*icio cuan%o se le in%i&ue, pero miran%o la =5 %el cliente ( compar7n%ola contra una lista %e =5s
permiti%as:pro!ibi%as, controlan%o un n3mero m7$imo %e cone$iones simult7neas +para e*itar ata&ues
tipo DoS,, etc. @omo se !a %ic!o, en con#unto son mu( similares a inet% con tcpB8rappers, pero nos
o'recen m7s posibili%a%es a la !ora %e blo&uear el acceso por =5s o por n3mero %e cone$iones
simult7neas. A%em7s, %aemontools comprueba si un ser*i%or se !a Rca)%oS +si el proceso !a muerto por
cual&uier causa, ( se encarga %e *ol*erlo a lan6ar, una *e6 por segun%o para no sobrecargar la m7&uina
en caso %e &ue !a(a algo mal en la con'iguracin. As), con %aemontools ten%remos controla%o el caso
m7s simple %e monitori6acin9 si un ser*i%or 'alla por&ue muere el proceso por cual&uier moti*o, se
encargar7 %e *ol*erlo a lan6ar.
Ma( &ue a%*ertir &ue tal *e6 este no sea un mo%o mu( e'iciente %e lan6ar seg3n &ue ser*icio9
por e#emplo, tomemos el ser*i%or 8eb Apac!e. @a%a *e6 &ue se arranca, se leen ( anali6an una serie %e
'ic!eros %e con'iguracin potencialmente bastante gran%es, &ue !a( &ue anali6ar buscan%o errores
sint7cticos ( sem7nticos, reser*ar memoria, crear una serie %e procesos %e acuer%o a esta
con'iguracin... "s por esto &ue el Apac!e es pre'erible lan6arlo en mo%o Rstan% aloneS ( %e#arlo
siempre en e#ecucin ( monitori6ar su esta%o %e alguna otra 'orma, (a &ue %e !acerlo me%iante
%aemontools el coste %e estar reinician%o el ser*i%or por ca%a peticin &ue recibamos es e$cesi*o. "n
cambio, ser*i%ores como el &mail +ser*i%or %e correo S45:5-5, o el %#b%ns +ser*i%or %e D1S, se
a#ustan bien al uso con %aemontools, (a &ue sus 'ic!eros %e con'iguracin son binarios ( se cargan
%irectamente en memoria sin necesi%a% %e anali6arlos.
4.1.1. Confguracin y uso
/a con'iguracin %e %aemontools es un poco complica%a al principio, por ser bastante %istinta
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%e lo &ue estamos !abitua%os en linu$. 4ras instalar el so't8are, se nos !a crea%o un %irectorio
/service en el rai6 %e nuestro sistema %e 'ic!eros. "ste %irectorio es monitori6a%o por el programa
svscan. 5or ca%a ser*icio &ue &ueramos le*antar ( monitori6ar, ten%remos &ue crear un sub%irectorio
%entro %e ste con una estructura ( unos scripts %e inicio %etermina%os, ( el programa svscan se
encargar7 autom7ticamente %e lan6ar un proceso supervise &ue lan6ar7 los scripts %e inicio &ue
!a(amos crea%o ( monitori6ar7 el programa, *ol*in%olo a lan6ar si surgiera alg3n problema.
5ara crear un %irectorio %e con'iguracin para un ser*icio necesitaremos preparar como m)nimo
un script &ue se encargue %e lan6ar el %emonio en cuestin. "l %irectorio %e ser*icio no tiene por &u
ser un sub%irectorio %e /service, %e !ec!o es me#or &ue no lo sea ( m7s tar%e, cuan%o lo tengamos
to%o con'igura%o ( listo para 'uncionar, le crearemos un enlace en /service. 5or e#emplo, po%r)amos
crear un %irectorio para el Apac!e en /etc/daemontools/apache, ( m7s tar%e lo enla6ar)amos en
/service con9
ln -sf /etc/daemontools/apache /service/apache
"l script %e inicio al &ue !emos !ec!o re'erencia antes %ebe estar en el rai6 %el %irectorio %e
ser*icio, ( %ebe llamarse run. "ste ser)a un posible e#emplo para iniciar el Apac!e con dae+ontools9
#!/bin/sh
echo Iniciando Apache va daemontools
exec apachectl start
"l programa %ebe ser llama%o me%iante e$ec para &ue se e#ecute en el mismo proceso en lugar
%e crear otro. "n lugar %e llamar %irectamente al ser*i%or, po%r)amos tambin !acerlo a tra*s %e los
ser*icios %e ucspiBtcp para controlar me#or los permisos %e acceso, tal ( como se !a comenta%o
anteriormente.
2na *e6 &ue (a est7 prepara%o el %irectorio %e ser*icio +dae+ontools tiene muc!as m7s
opciones para con'igurar los ser*i%ores, monitori6arlos, crear logs, etc.,, creamos un enlace a l
%es%e :service. svscan %etectar7 autom7ticamente el nue*o enlace ( lan6ar7 un proceso supervise &ue
se encargar7 %e lan6ar ( super*isar el script run &ue acabamos %e crear.
5ara *er el esta%o %e un ser*icio ( %etenerlo, reiniciarlo, etc., contamos con los programas
svstat ( svc. 5ara comprobar el esta%o %e un ser*icio, utili6amos svstat pas7n%ole como par7metro el
%irectorio %e con'iguracin %e ese ser*icio9
vjaguilar:~# svstat /service/apache/
/service/apache/: up (pid 211) 229806 seconds
5ara mo%i'icar el esta%o %e un ser*icio, se utili6a svc. /o &ue !ace realmente svc es en*iar al
proceso una serie %e seQales, seg3n el par7metro &ue se le pase, &ue %eber7n pro*ocar una %etermina%a
reaccin en el ser*i%or. /os par7metros &ue pue%e recibir svc son9
I2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Bu9 2p. Si el ser*i%or no se est7 e#ecutan%o (a, se inicia, lan6an%o el script run. A%em7s, se
monitori6ar7 su esta%o para reiniciarlo si el %emonio muriera inespera%amente.
B%9 Do8n. Si el ser*i%or se est7 e#ecutan%o, se le en*)a una seQal 4"R (, tras una bre*e
pausa, una seQal @-14. 2na *e6 &ue se %etenga, no se *uel*e a lan6ar.
Bo9 -nce. Si el ser*i%or no est7 en e#ecucin, se inicia, pero no se monitori6a su
'uncionamiento +no se reiniciar7 si 'alla,.
Bp9 5ause. Se en*)a una seQal S4-5 al proceso.
Bc9 @ontinue. Se en*)a una seQal @-14 al proceso.
B!9 Mangup. Se en*)a una seQal M25.
Ba9 Alarm. Se en*)a una seQal A/R.
Bi9 =nterrupt. Se en*)a una seQal =14.
Bt9 4erminate. Se en*)a una seQal 4"R.
BH9 Yill. Se en*)a una seQal Y=//.
B$9 "$it. .inali6ar la e#ecucin %e super*ise cuan%o termine el ser*icio. "sta opcin slo se
%eber)a usar mientras se prueba la con'iguracin %e un nue*o ser*i%or. "n uno &ue (a
'uncione, no tiene senti%o.
As), por e#emplo, para reiniciar un ser*icio po%r)amos !acer9
svc -t /service/qmail
@on esto, el proceso %el ser*i%or %e correo F+ail recibir)a una seQal 4"R, con lo &ue
'inali6ar)a su e#ecucin limpiamente, supervise *er)a &ue el proceso !a muerto ( lo *ol*er)a a lan6ar.
4.2. mon
mon est7 un escaln por encima %e %aemontools. /a monitori6acin &ue reali6a mon es a ni*el
%e ser*icio9 %e'iniremos una serie %e pe&ueQos scripts &ue se conectar7n a ca%a puerto &ue &ueramos
monitori6ar ( lan6ar7n una pe&ueQa pregunta %e la &ue sepamos la respuesta &ue nos %ar7 el ser*i%or si
no 'alla na%a, ( as) a*eriguaremos el esta%o %el ser*icio. A su *e6, %e'iniremos las acciones a tomar
cuan%o una respuesta incorrecta, bien por&ue la respuesta en si no sea la &ue esper7bamos, o por no
!aber obteni%o respuesta alguna +el programa ser*i%or o el propio e&uipo no contestan,. "l principal
uso %e mon es el %e monitori6ar ser*icios remotos en las m7&uinas &ue con'orman el cluster, para
&uitarlas %e ste en caso %e &ue alguno 'alle, aun&ue, por supuesto, tambin se pue%e utili6ar sobre la
m7&uina local para %etectar si alg3n ser*icio 'unciona mal ( reiniciarlo si 'uera necesario.
"l 'uncionamiento es bastante sencillo9 en el 'ic!ero %e con'iguracin po%emos %e'inir la
monitori6acin %e cuantas m7&uinas ( ser*icios &ueramos, in%ican%o en ca%a caso el inter*alo a
utili6ar para la monitori6acin ( las acciones +tantas como &ueramos, a tomar en caso %e &ue el
resulta%o %e la monitori6acin sea negati*o. 4anto los monitores como las acciones son programas &ue
I?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
crearemos nosotros en el lengua#e &ue &ueramos +%es%e s!ellBscript !asta @,9 un monitor, por regla
general, se conectar7 a un puerto, lan6ar7 una peticin ( leer7 una respuesta; una alarma pue%e
en*iarnos un mail, un mensa#e SS al m*il, o tal *e6 tratar %e solucionar el problema.
"n el aparta%o A.G *eremos algunos e#emplos %e 'uncionamiento %e +on.
4.3. heartbeat y fake
Si +on se utili6a para monitori6ar servicios, 0eartbeat se utili6a para monitori6ar servidores
+a3n &ue esto tambin se pue%a !acer con el fping.+onitor %e +on,.
0eartbeat nos proporciona un mecanismo para &ue %os ser*i%ores controlen su esta%o
mutuamente a tra*s %e *arios acceso9 re% et!ernet, cable serie, etc. De esta 'orma, al tener *arias
cone$iones ( reali6ar la comprobacin por to%as ellas, no incurriremos en errores %el tipo creer &ue un
ser*i%or !a ca)%o cuan%o realmente lo &ue tenemos es un problema con la re%. /a comprobacin %e
esta%o se reali6a a un ni*el m7s alto &ue con el fping.+onitor %e +on9 en lugar %e a ni*el %e tramas
=@5 se reali6a a ni*el %e aplicacin, (a &ue los ser*icios !eartbeat en ca%a m7&uina se comunican
entre s) me%iante un protocolo propio, &ue a%em7s *a ci'ra%o para asegurar la i%enti%a% %e ca%a
m7&uina.
0eartbeat tambin pue%e controlar RcuelguesS en la propia m7&uina, programan%o alg3n
%ispositi*o 8atc!%og +!ar%8are o so't8are en el Hernel, para reiniciar la m7&uina %e 'orma autom7tica.
"l 'uncionamiento %el 8atc!%og es el siguiente9 este %ispositi*o se programa para &ue tenga &ue recibir
una entra%a +alg3n te$to, lo &ue sea, ca%a $ tiempo, generalmente unos pocos segun%os. "n caso %e
'allar esta entra%a *arias *eces segui%as, el 8atc!%og se encargar7 %e reiniciar la m7&uina %e 'orma
autom7tica. 0eartbeat se pue%e programar para &ue l mismo se encargue %e conectar con el 8atc!%og
con la 'recuencia programa%a para &ue no reinicie la m7&uina, ( para &ue %e#e %e !acerlo si %etecta
alg3n problema gra*e en el e&uipo +o si se cuelga, con lo &ue %e#ar)a %e en*iar estas seQales ( el
8atc!%og reiniciar)a la m7&uina,.
-tra caracter)stica importante %e 0eartbeat es &ue pue%e Ra%ueQarseS %e la =5 %e otra m7&uina
+la &ue est7 monitori6an%o, me%iante la tcnica conoci%a como AR5 =5 spoo'ing9 cuan%o %etecta &ue la
otra m7&uina !a ca)%o, comien6a a en*iar tramas AR5 anuncian%o sus %irecciones =5 ( A@, con lo
&ue el resto %e e&uipos, routers, ( %em7s %ispositi*os %e re% asociar7n a partir %e ese momento la =5
in%ica%a con la %ireccin A@ %e la tar#eta %el ser*i%or.
"ste proceso %e apropiacin %e %irecciones =5 es lo &ue reali6a tambin el programa fa8e, pero
%es%e &ue 0eartbeat incorpora tambin esta posibili%a%, se po%r)a %ecir &ue fa8e !a &ue%a%o obsoleto
+si bien a3n pue%e ser 3til %e 'orma in%epen%iente a 0eartbeat #unto con otros programas %e
monitori6acin,.
IC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4.4. Failover de red con iANS de Intel
-tro %e los aspectos a monitori6ar para asegurar el buen 'uncionamiento %el cluster es to%o lo
re'erente a la in'raestructura %e re%, %es%e el 'uncionamiento %e to%a la electrnica +cablea%o, routers,
etc., !asta los a%apta%ores %e re% instala%os en ca%a e&uipo. 2n 'allo en la in'raestructura electrnica
+p.e#., un router 'un%i%o o un cable %e'ectuoso, ser)a posible %e %etectar pero %i')cil %e reparar
autom7ticamente %es%e alguno %e los or%ena%ores, por lo &ue %eberemos recurrir a instalar una
in'raestructura %e re% secun%aria, &ue se utili6ar7 cuan%o cual&uier elemento %e la primaria 'alle. "n
cambio, si &ue es posible %etectar ( subsanar problemas en las tar#etas %e re% %e ca%a or%ena%or,
recurrien%o %e nue*o a la re%un%ancia ( por tanto instalan%o m7s %e una en ca%a e&uipo9 por e#emplo,
po%r)amos tener tres inter'aces %e re% en ca%a m7&uina, %os conecta%os a la re% principal ( otro a la
secun%aria, %e 'orma &ue cuan%o 'alle el primer a%apta%or se %etecte ( utilice %e 'orma autom7tica el
segun%o, ( si este tambin 'allara +posible in%icio %e &ue el problema est7 realmente en la re% ( no en
los a%apta%ores,, el tercero &ue sal%r7 por la in'raestructura %e re% secun%aria.
Si bien esta monitori6acin ( R'ailo*erS se po%r)a reali6ar utili6an%o el programa +on &ue (a
!emos comenta%o ( una serie %e scripts +(, tal *e6, fa8e,, !a( otra solucin m7s sencilla9 como to%o
buen a%ministra%or %e /inu$ %ebe saber, eligien%o con cui%a%o el !ar%8are &ue montamos en ca%a
m7&uina po%emos a!orrarnos m7s %e un %olor %e cabe6a, &ue en este caso ser)a el %iseQo (
con'iguracin %e to%o el proceso %e %eteccin %e errores en los %ispositi*os %e re% ( la consecuente
acti*acin %e otro %ispositi*o.
A pesar %e &ue pr7cticamente %es%e las primeras *ersiones %e /inu$ est7n soporta%as por la
comuni%a% open source las tar#etas %e re% %e =ntel, el propio 'abricante pro%uce sus %ri*ers para to%as
sus tar#etas %e las series 5R-:100 ( 5R-:1000 +%isponibles %e 'orma gratuita ( con c%igo 'uente, a3n
&ue ba#o una licencia no libre, ( los actuali6a %e 'orma peri%ica con ca%a nue*a *ersin %el n3cleo %e
/inu$. 2na %e las ma(ores *enta#as %e instalar estos %ri*ers es el po%er utili6ar el programa iA1S,
A%*ance% 1et8orH Ser*ices, %e =ntel.
e%iante iA1S po%emos con'igurar *arios %ispositi*os %e =ntel en cual&uiera %e estos en tres
mo%os9
A.4 +A%apter .ault 4olerance, 4olerancia a .allos en el A%apta%or,. "s el mo%o por %e'ecto, (
el &ue nos interesa en este estu%io. Se crea un grupo con to%as las tar#etas %isponibles, ( una
es la acti*a. "n el momento &ue los %ri*ers %etecten &ue le a%apta%or +o su cone$in a la re%,
'alla, %e 'orma autom7tica se pasa el control al segun%o, al tercero, etc. "n el momento &ue
se %etecte &ue el a%apta%or primario *uel*e a 'uncionar, se le %e*uel*e el control.
A/E +A%aptati*e /oa% Ealancing, Ealanceo %e @arga A%aptati*o,. Se crea un grupo %e 2 a L
%ispositi*os &ue se reparten el en*)o %e %atos, consiguien%o as) una *eloci%a% %e sali%a igual
a la agregacin %e la %e ca%a %ispositi*o %e 'orma in%i*i%ual, mientras &ue 3nicamente el
%ispositi*o primario se encarga %e recibir %atos. Se inclu(e tolerancia a 'allos como en A4.,
pero en este caso to%os los %ispositi*os %eben ser %e las misma *eloci%a%.
IG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/inH Aggregation +Agregacin %e @anales, usan%o la tecnolog)a @isco^s .ast "t!er@!annel,
."@,. Similar a A/E pero %istribu(en%o tambin la carga para la recepcin %e %atos, a%em7s
%e &ue en este caso to%as las tar#etas %eben ser 10:100 ( la electrnica %e re% +routers, !ubs,
s8itc!s..., %eben soportar el protocolo =ntel /inH Aggregation o @isco ."@. "$iste un cuarto
mo%o %e 'uncionamiento, 0"@, similar a ste pero para tar#etas gigabit. /a electrnica %ebe
ser compatible 0"@.
"ste so't8are tambin nos permite %e'inir V/A1s seg3n el est7n%ar IEEE 802.
4.4.1. Confguracin de iANS en modo AFT
Veamos por partes cmo con'igurar *arias tar#etas %e re% =ntel en mo%o A.49
1. "l primer paso para utili6ar iA1S es instalar los %ri*ers %e =ntel para las tar#etas %e re%, (a
&ue este programa no 'uncionar7 con los %ri*ers &ue *ienen %e serie en el Hernel %e /inu$. 4ambin
ten%remos &ue compilar los %ri*ers ( utili%a%es %e iA1S. @omo to%os estos %ri*ers se compilan a parte
%el Hernel como m%ulos, ten%remos &ue instalarlos con ins+od o +odprobe ( con'igurar el sistema
para &ue realice este paso tras ca%a reinicio9
modprobe e100
2. 2na *e6 !ec!o esto, ten%remos &ue in!abilitar to%as las tar#etas &ue &ueramos &ue 'ormen
parte %el grupo A.4. 5ara esto, %eberemos usar9
ifconfing - a
para *er to%as las tar#etas %e re% acti*as en el sistema,
ifconfig ethx 0.0.0.0
para eliminar su asociacin a una %ireccin =5 +si es &ue se !ab)a con'igura%o,, ( por 3ltimo
ifconfig ethx down
para in!abilitarla %e'initi*amente.
?. "l siguiente paso es cargar el m%ulo %e iA1S, con9
modprobe ians
II
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
C. A!ora !abr7 &ue crear los grupos %e tar#etas para el A4.. 5ara ello, utili6amos el coman%o
iansfg, &ue tiene %i*ersas sinta$is seg3n el uso &ue se le *a(a a %ar. "n este caso, la sinta$is a emplear
es9
ianscfg -a -t<grupo> [-M<modo>] [-V]
@on B se especi'ica el mo%o %e 'uncionamiento, por %e'ecto A.4. -tras opciones son 1-1",
A/E, ."@ ( 0"@.
@on BV, se con'iguran las V/A1s.
G. @uan%o (a tengamos con'igura%o un grupo en el mo%o &ue &ueramos, aQa%imos a%apta%ores
al grupo con9
ianscfg -a -t<grupo> -m<ethx> [-p <prioridad>]
%on%e prioridad pue%e ser 1one, 5rimar(, or Secon%ar(.
I. A continuacin crearemos un nombre %e R%ispositi*o *irtualS para el grupo. "ste nombre %e
%ispositi*o *irtual ser7 lo &ue m7s a%elante utili6aremos para con'igurar el acceso a la re% a tra*s %el
grupo A.49
ianscfg -a -t<grupo> -v<nombre> [-i<vlan_id>]
( acti*amos el grupo con9
ianscfg -c<grupo>
A. /lega%os a este punto, (a tenemos con'igura%o un %ispositi*o *irtual 'orma%o por *arias
tar#etas %e re% &ue !ar7n 'ailo*er entre s) seg3n se *a(an pro%ucien%o errores. 4an slo nos &ue%a
con'igurar el %ispositi*o %e 'orma normal con ifconfig9
ifconfig <dispositivo_v> <ip> netmask <mascara> [broadcast <broadcast>]
L. 5or 3ltimo, po%emos comprobar en to%o momento el esta%o %el grupo con9
ianscfg -s
IA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4o%o este proceso %e con'iguracin &ue pue%e parecer largo ( te%ioso se simpli'ica
enormemente (a &ue iA1S nos permite guar%ar su con'iguracin actual a un 'ic!ero ( cargarla
posteriormente. De esta 'orma, slo ten%remos &ue9
1.@on'igurar por primera *e6 el grupo en mo%o A.4.
2.0uar%ar la con'iguracin con9
ianscfg -w [-f<file_name>]
+por %e'ecto, :etc:ians:ians.con',
?.@on'igurar el sistema para &ue cargue al arrancar los m%ulos %e las tar#etas =ntel ( el %e
iA1S.
C.2tili6ar el script &ue *iene con el so't8are %e iA1S para arrancar el ser*icio a tra*s %e la
con'iguracin &ue !emos guar%a%o en el paso 2.
G.Asegurarnos %e &ue en ning3n momento se con'igura %irectamente ninguna %e las tar#etas %e
re%.
I.5reparar los scripts %e nuestra %istribucin &ue se encarguen %e con'igurar la re% para &ue lo
!agan a tra*s %el %ispositi*o *irtual con'igura%o con iA1S.
4.4.2. Ejemplo de confguracin manual
5or 3ltimo, o'recemos un e#emplo %e un posible script &ue se encargar)a %e cmo se con'igurar
%os tar#etas en mo%o A.49
modprobe e100
modprobe ians
ianscfg -a -t grupo1 -M !"
ianscfg -at grupo1 -m eth0 -p primary
ianscfg -at grupo1 -m eth1 -p secondary
ianscfg -at team1 -v veth1
ianscfg -c team1
ianscfg -s
ifconfig veth1 192.168.0.10 netmask 255.255.255.0
IL
5. Clustering de Alta Disponibilidad
@omo (a se a%elant en el segun%o cap)tulo, nuestra estrategia para conseguir la %isponibili%a%
ininterrumpi%a 2C! al %)a ( ?IG %)as al aQo ser7 la %e replicar tantas partes %e nuestro sistema como sea
posible, ( posibilitar &ue unas partes %el sistema tomen el lugar %e las &ue 'allen %e 'orma autom7tica (
transparente.
5.1. Linux Virtual Server
"l pro(ecto /inu$ Virtual Ser*er nos pro*ee con la in'ormacin ( to%os los programas
necesarios para montar un Rser*i%or *irtualS '7cilmente escalable sobre un cluster %e m7&uinas /inu$.
De cara al usuario 'inal solamente !abr7 un ser*i%or, a3n &ue %e puertas a%entro lo &ue ten%remos ser7
un cluster &ue ser*ir7 las peticiones &ue le lleguen como si se tratara %e una 3nica m7&uina. /inu$
Virtual Ser*er se basa 3nicamente en 5@s corrien%o /inu$ con su so't8are, tanto para los ser*i%ores
como para los e&uipos &ue !agan %e balancea%ores %e carga +el punto %e entra%a al cluster &ue
re%irigir7 el tr7'ico !acia ca%a uno %e los ser*i%ores reales,. "s %ecir, no necesitaremos %e ning3n
router:'ire8all:balancea%or !ar%8are, ni ning3n so't8are propietario %e terceras personas. 4o%o el
so't8are %e /inu$ Virtual Ser*er est7 %isponible ba#o la licencia 012 0eneral 5ublic /icense +05/,.
"l so't8are %e /inu$ Virtual Ser*er se est7 utili6an%o en la actuali%a% en entornos %e
pro%uccin como las 8eb %el portal %e /inu$ Linu$.#OM +!ttp9::888.linu$.com,, el portal %e
%esarrollo Source@orge +!ttp9::888.source'oge.net,, la 8eb %el integra%or %e ser*i%ores /inu$ 7-
Linu$ S1ste+s, Inc. +!ttp9::888.*alinu$.com,, la 8eb %e la empresa %e *)%eo ( multime%ia para la re%
/eal (etwor8s, Inc. +!ttp9::888.rela.com,, o la 8eb %e%ica%a al an7lisis ( comentarios %e !ar%8are
-nandTec0 +!ttp9::anan%tec!.com,.
5.1.1. Visin general de LVS
@onsi%rese el siguiente es&uema, e$tra)%o %e la 8eb %e /inu$ Virtual Ser*er9
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 46. L7S5 2sFue+a general

A0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l usuario se conecta a tra*s %e =nternet a la %ireccin p3blica %e nuestro cluster, &ue est7
asigna%a al Rbalancea%or %e cargaS. "ste e&uipo est7 conecta%o a tra*s %e una /A1 +ser7 lo m7s
com3n, o una <A1 con el resto %e e&uipos %el cluster9 los ser*i%ores reales, ser*i%ores %e 'ic!eros,
'ire8alls ... ( se encargar7 %e %irigir ca%a una %e las peticiones al ser*i%or &ue se encuentre en me#or
con%icin para aten%erla +menor carga,. Seg3n la con'iguracin por la &ue optemos, la respuesta ser7
en*ia%a por el ser*i%or real %irectamente al cliente +si ca%a ser*i%or tiene acceso %irecto a =nternet,, o
ser7 %e nue*o re%irigi%a a tra*s %el balancea%or %e carga.
/a escalabili%a% la conseguiremos '7cilmente aQa%ien%o m7s e&uipos a nuestra /A1,
aumentan%o as) el n3mero %e ser*i%ores reales en el cluster. /a alta %isponibili%a%, por su parte,
tambin, (a &ue al tener *arios ser*i%ores, cuan%o uno 'alle el resto asumir7n la carga %el ca)%o +sal*o
casos especiales, como el balancea%or %e carga, &ue se tratar7n %e 'orma %istinta,.
5.1.2. Cmo distribuir la carga
"$isten *arias 'ormas para montar un cluster ( %istribuir la carga entre los e&uipos. "n el punto
anterior (a !emos a%elanta%o cmo se lle*a esto a cabo en /VS, pero *amos a repasar to%as las
opciones %e &ue %isponemos9
"l mto%o m7s sencillo es me%iante un D1S roun%Brobin9 @uan%o en un ser*i%or %e D1S
A1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
%e'inimos *arias =5s para un mismo %ominio, el ser*i%or nos %e*ol*er7 ca%a *e6 una =5 %istinta, en
principio sin ning3n criterio en especial +no est7 especi'ica%o,, a3n &ue generalmente se utili6a una cola
roun%Brobin para ir sir*ien%o las peticiones. De esta 'orma conseguir)amos %istribuir la carga entre los
ser*i%ores reales %e una 'orma pseu%oBaleatoria, seg3n *a(an llegan%o peticiones. "l problema con este
mto%o es &ue no se tiene en cuenta la carga real %e ca%a ser*i%or, ( es posible &ue to%as las peticiones
Rpesa%asS *a(an a parar siempre a la misma m7&uina &ue acabar)a por saturarse, mientras &ue las
%em7s estar)an sir*ien%o peticiones tri*iales. -tro problema es &ue como los clientes suelen mantener
una cac! %e los %ominios (a resueltos a tra*s %el D1S, una *e6 &ue un cliente !a(a contacta%o con
uno %e los ser*i%ores reales, siempre +!asta &ue e$pire su cac!, se %irigir7 al mismo ser*i%or. "ste es
otro punto por el &ue se pue%e llegar a sobrecargar un ser*i%or mientras &ue el resto est7n libres.
A%em7s, si en alg3n momento 'allara un ser*i%or ( su =5 est7 to%a*)a en la cac! %e alg3n cliente, ste
seguir)a en*i7n%ole las peticiones &ue, por supuesto, 'allar)an.
2na solucin me#or es utili6ar un balancea%or %e carga para %istribuir las cone$iones entre los
ser*i%ores. @on esta solucin se pue%e aumentar la sensacin %e Runi%a%S %el cluster, (a &ue %e cara al
usuario 3nicamente !abr7 una %ireccin =5 a la &ue se %iri#an to%as las peticiones, en lugar %e *arias. /a
granulari%a% %e la %istribucin se pue%e !acer por cone$in +ca%a peticin %e un cliente se re%irige al
ser*i%or &ue est en me#or posicin para ser*irlo, o por sesiones +se almacena en una tabla a &u
ser*i%or se en*)a a ca%a cliente ( se le man%a siempre al mismo,. @uan%o alg3n ser*i%or 'alla, es m7s
'7cil enmascarar el error, (a &ue 3nicamente !abr7 &ue pro*eer al balancea%or %e carga %e los
mecanismos necesarios para %etectar el 'allo %e un ser*i%or ( eliminarlo %e su lista, %e 'orma &ue no le
re%iri#a ninguna peticin. 5or este mismo moti*o, la a%ministracin %el cluster se simpli'ica (a &ue se
pue%en sacar ser*i%ores %el cluster en cual&uier momento para reali6ar tareas %e mantenimiento, sin
&ue ello pro*o&ue errores en los clientes.
"l balanceo %e carga se pue%e !acer a %os ni*eles9 a ni*el %e cone$in =5, o a ni*el %e
protocolo. "n este segun%o caso, el balancea%or ser)a una especie %e pro$( &ue programar)amos para
recibir cone$iones en un %etermina%o puerto, tal *e6 inspeccionar los pa&uetes para *er si se trata %el
protocolo correcto o e$traer alg3n tipo %e %ato %el protocolo e incluso po%er 'iltrar peticiones
incorrectas, ( re%ireccionar la cone$in !acia uno %e los ser*i%ores. "l problema %e esta apro$imacin
es &ue al tener &ue anali6ar el protocolo en to%as las cone$iones entrantes, el programa balancea%or es
bastante comple#o ( po%r)a llegar a con*ertirse en un cuello %e botella en la entra%a al cluster +se estima
&ue, %epen%ien%o %e la potencia %e los e&uipos, el n3mero %e ser*i%ores reales &ue se pue%en ser*ir sin
problemas %e congestin estar)a entorno a los CBI,. "ntre este tipo %e balancea%ores contamos con
Re*erseB5ro$( ( p<"E.
/a otra opcin, el balancea%o a ni*el %e cone$in =5, es muc!o m7s e'iciente (a &ue el proceso
a reali6ar es tambin muc!o m7s sencillo9 cuan%o llega una peticin al balancea%or no se anali6a a
ning3n ni*el ma(or &ue el %e 4@5:=5, lo #usto para aceptar la cone$in ( re%irigirla a uno %e los
ser*i%ores. @on esta apro$imacin los ser*i%ores reales &ue se pue%en tener %etr7s %el balancea%or
pue%en oscilar entre 2G ( !asta 100, como siempre, seg3n la potencia %e los e&uipos. "l balancea%or %e
/inu$ Virtual Ser*er 'unciona a este ni*el.
A2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5.1.3. Modos de balanceado de carga en LVS
/VS permite reali6ar el reen*)o %e pa&uetes a los ser*i%ores reales %e tres 'ormas. Vamos a *er
en &u consiste ca%a una, con sus pros ( sus contras9
5.1.3.1. Balanceado por NAT (VS-NAT)
"ste tipo %e balancea%o apro*ec!a la posibili%a% %el Hernel %e /inu$ %e 'uncionar como un
router con 1A4 +1et8orH A%%ress 4ranslation,, &ue no es ni m7s ni menos &ue la posibili%a% %e
mo%i'icar las %irecciones %e origen:%estino %e los pa&uetes 4@5:=5 &ue lo atra*iesen9 la 3nica %ireccin
real %el cluster ser7 la %el balancea%or; cuan%o le llegue un pa&uete mo%i'icar7 la %ireccin %e %estino
para &ue llegue a uno %e los ser*i%ores ( la %e origen para &ue le sea %e*uelto a l, ( lo reen*iar7 a la
re% pri*a%a; cuan%o el ser*i%or real lo procese, se lo en*)a al balancea%or +&ue es el 3nico punto %e
sali%a para to%os los e&uipos %el cluster !acia =nternet, ( ste R%es!aceS el cambio %e %irecciones9 pone
como %ireccin %e origen %el pa&uete con la respuesta la su(a, ( como %ireccin %e %estino la %el
cliente &ue origin la peticin.
"n el gr7'ico %e la p7gina siguiente, e$tra)%o %e la %ocumentacin %e /inu$ Virtual Ser*er, se
pue%e *er gr7'icamente to%o el proceso. @a%a punto es9
1."l cliente reali6a una peticin %e ser*icio, a la =5 p3blica %el cluster +la %el balancea%or %e
carga,.
2."l balancea%or plani'ica a &u ser*i%or real *a a en*iar la peticin, reescribe las cabeceras %e
las tramas 4@5:=5 ( se las en*)a al ser*i%or.
?."l ser*i%or recibe la peticin, la procesa, genera la respuesta ( se la en*)a al balancea%or %e
carga.
C."l balancea%or reescribe %e nue*o las cabeceras %e las tramas 4@5:=5 con la respuesta %el
ser*i%or, ( se las en*)a %e *uelta al cliente.
G./a respuesta llega al cliente, como si la !ubiera genera%o la =5 p3blica %el cluster.
A?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4;. L7S5 7S>(-T

AC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Visto %e una 'orma m7s R')sicaS, el monta#e %el cluster &ue%ar)a as)9
AG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4<. L7S5 7S>(-T, esFue+a f:sico

/a 3nica =5 p3blica %el cluster ser)a la 202.10?.10I.G, &ue ser)a la =5 &ue asociar)amos en el
ser*i%or %e D1S al %ominio %e nuestro cluster ( a la &ue ir)an %irigi%as to%as las peticiones %e los
clientes. "l resto %e %irecciones son %e la re% pri*a%a.
AI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l ma(or punto a 'a*or %e esta tcnica es &ue los ser*i%ores &ue compongan el cluster pue%en
e#ecutar cual&uier Sistema -perati*o &ue soporte 4@5:=5, (a &ue to%a la manipulacin %e %irecciones (
gestin %el cluster se reali6a en el balancea%or, sin ser necesario mo%i'icar en ning3n mo%o el resto %e
ser*i%ores. A%em7s, slo se necesita una =5 real +la &ue asignaremos al balancea%or,. "l resto %e
ser*i%ores pue%en ten%r7n =5s pri*a%as %e una re% local.
/a pega %e este mto%o es la misma &ue ten)amos con los balancea%ores a ni*el %e protocolo
&ue comentamos anteriormente9 el balancea%or se pue%e llegar a con*ertir en un cuello %e botella, (a
&ue to%o el tr7'ico %e entra%a ( sali%a al cluster pasa por l +%ebe tener su'iciente anc!o %e ban%a %e
entra%a ( sali%a para soportarlo, ( a%em7s tiene &ue reescribir to%os los pa&uetes 4@5:=5. "l n3mero %e
ser*i%ores reales !asta el &ue po%amos escalar %epen%er7, por tanto, %el anc!o %e ban%a %e las
cone$iones con el balancea%or ( %e su potencia %e c7lculo para reescribir las tramas. De to%as 'ormas,
un ser*i%or actual %e clase alta no %eber)a tener problemas para tratar con 20 o tal *e6 m7s ser*i%ores9
Suponien%o &ue el tamaQo me%io %e un pa&uete 4@5:=5 es %e G?I b(tes ( &ue el tiempo emplea%o en
reescribirlo por las rutinas 1A4 %el Hernel est7 en torno a los I0us +%epen%er7 %el e&uipo, por
supuesto,, el anc!o %e ban%a total &ue po%r7 soportar el balancea%or est7 en torno a las L.K b(tes:s.
Suponien%o &ue ca%a ser*i%or pue%a mane#ar 'lu#os %e C00Yb(tes:s, el balancea%or ser7 capa6 %e
enrutar el tr7'ico %e !asta 22 ser*i%ores.
2na posible solucin es emplear una tcnica !)bri%a entre 1A4 ( la solucin cl7sica %el D1S9
tener *arios clusters no mu( gran%es con un balancea%or 1A4 ca%a uno, ( a su *e6, en el D1S, poner
to%as las =5s %e los balancea%ores con el mismo nombre %e %ominio. As) la carga se repartir7 entre ca%a
uno %e los clusters.
5.1.3.2. Balanceado por encapsulado IP (VS-Tun)
"ste mto%o nos permitir7 escalar !asta un ma(or n3mero %e ser*i%ores, 100 o m7s, pero to%os
ellos %eber7n ser capaces %e tratar el encapsula%o =5 +=5 tunneling,. "l encapsula%o =5 consiste en !acer
*ia#ar una trama 4@5:=5, con sus %irecciones %e origen ( %estino, %entro %e otra trama con %irecciones
%istintas para, una *e6 &ue la trama m7s e$terna llegue a su camino, R%esencapsularS la trama original (
reenrutarla %es%e all). "s una 'orma %e utili6ar un enrutamiento alternati*o %e una re% A a otra re% E,
'or6an%o un Rro%eoS por la re% @. "l problema %e esta tcnica es &ue no to%os los Sistemas -perati*os
la soportan.
De una 'orma mu( genrica, el encapsula%o 'unciona as)9
AA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4=. L7S5 2ncapsulado IP




2tili6an%o este mto%o %e balancea%o to%os los ser*i%ores necesitan tener con'igura%a en
alguna inter'a6 +a3n &ue sea *irtual, la =5 p3blica %el ser*i%or, ( a%em7s necesitar7n =5s p3blicas si
&ueremos %istribuir los e&uipos en una <A1. "l punto %e entra%a al cluster, %e nue*o, es la %el
balancea%or %e carga, pero una *e6 &ue el tr7'ico llega a los ser*i%ores reales stos enrutan
%irectamente las respuestas !acia los clientes sin necesi%a% %e pasar %e nue*o por el balancea%or.
5or otra parte, al reali6ar la comunicacin entre el balancea%or ( los ser*i%ores por me%io %e
encapsula%o =5, es posible %istribuir los ser*i%ores reales a lo largo %e una re% %e 7rea amplia en lugar
%e tenerlos to%os en un mismo segmento %e re% local.
"l es&uema %e /VS con encapsula%o =5 &ue%ar)a as)9

AL
=5 DA4-S =5 DA4-S =52 =5 DA4-S =52 =nternet =5 DA4-S
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4&. L7S5 7S>Tun
AK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l balancea%or recibe to%as las cone$iones %e entra%a al cluster, ( %eci%e a &u ser*i%or
en*i7rselas. 5ara !acer esto, utili6a el encapsula%o =5 para en*iar ca%a trama &ue recibe a la =5 %el
ser*i%or &ue *a(a a encargarse %e ella. @uan%o el ser*i%or elegi%o recibe el pa&uete, lo %esencapsula (
al tener con'igura%a la =5 p3blica %el cluster como propia, acepta la trama original ( se encarga %e
ser*ir la peticin &ue contu*iera.
@on esta tcnica se e*ita &ue el balancea%or sea un cuello %e botella !acien%o &ue slo los
pa&uetes %e entra%a al cluster pasen a tra*s %e l, mientras &ue los %e sali%a los en*iar7 ca%a ser*i%or
real %irectamente a su %estino. Si nos 'i#amos en el 'lu#o %e %atos &ue genera un ser*i%or corriente, por
e#emplo un ser*i%or 8eb, *eremos &ue el tr7'ico en %ireccin clienteBser*i%or es muc!o menor &ue al
contrario9 en e'ecto, las peticiones %e los clientes contienen pocos m7s %atos &ue un Rm7n%ame esta
p7ginaS, Rm7n%ame esta otraS o R!e recibi%o bien la p7ginaS, mientras &ue el tr7'ico %el ser*i%or al
cliente contiene la p7gina 8eb, to%as las im7genes, animaciones, 'ic!eros %e %atos, etc. De esta 'orma,
limitan%o el tr7'ico &ue pasa por el balancea%or a 3nicamente el %e entra%a, con un balancea%or
e&uipa%o con una tar#eta %e re% %e 100bps tenemos su'iciente para to%o un cluster &ue genere 10bps
%e %atos.
/a ma(or pega %e este mto%o es &ue to%os los ser*i%ores %eben enten%er el encapsula%o =5.
/os autores %e /VS 3nicamente !an proba%o este mto%o con ser*i%ores /inu$. "s probable &ue en
L0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
otros sistemas &ue tambin soporten encapsula%o =5 'uncione, pero no se !a proba%o.
5or otra parte, con este mto%o to%os los ser*i%ores %el cluster necesitan tener =5s p3blicas, lo
&ue pue%e ser un punto negati*o por el coste asocia%o a la a%&uisicin %e =5s p3blicas, a3n &ue como
contraparti%a positi*a esto posibilita &ue estn %ispersos en una re% %e 7rea amplia. Al po%er separar
geogr7'icamente los ser*i%ores aQa%imos un punto m7s a la alta %isponibili%a% %el cluster, (a &ue ante
un 'allo general en la locali6acin %e un cluster centrali6a%o +p.e#., un 'allo %e corriente (:o %el SA= &ue
mantenga el cluster, se inutili6ar)a to%o el cluster, mientras &ue si los e&uipos est7n %ispersos esto es
m7s %i')cil &ue ocurra +ten%r)a &ue !aber problemas en 4-DAS las locali6aciones %e los e&uipos,.
5.1.3.3. Balanceado por enrutamiento directo (VS-DR)
"ste tercer mto%o re&uiere &ue to%os los ser*i%ores tengan una =5 real, &ue se encuentren en el
mismo segmento ')sico %e re% &ue el balancea%or, ( a%em7s &ue to%os los ser*i%ores %el cluster
+inclui%o el balancea%or, compartan la =5 p3blica %el cluster. "n el la%o positi*o, es el &ue menos
sobrecarga impone al e&uipo balancea%or, (a &ue ni tiene &ue reescribir los pa&uetes +caso 1A4, ni
encapsularlos +caso encapsulamiento =5,. A%em7s, el balancea%or no es un cuello %e botella, (a &ue al
igual &ue en el caso anterior, 3nicamente pasar7 a tra*s %e l el tr7'ico en %ireccin %e los clientes al
cluster, mientras &ue el tr7'ico %e sali%a lo %irigir7n %irectamente los ser*i%ores a ca%a cliente.
@omo (a !emos a%elanta%o, to%os los e&uipos ten%r7n con'igura%o un inter'a6 con la =5 p3blica
%el cluster9 el balancea%or, como siempre, la ten%r7 en su acceso a =nternet ( ser7 el punto %e entra%a al
cluster; el resto %e e&uipos estar7n conecta%os al balancea%or en la misma re% ')sica ( en el inter'a6
conecta%o a esta re% ten%r7n con'igura%a la =5 p3blica %el cluster, pero con'iguran%o el inter'a6 para
&ue no respon%a a coman%os AR5 para no inter'erir con otros protocolos +to%os los e&uipos
respon%er)an por la misma =5 con %istintas A@s,. @uan%o llega una peticin al balancea%or ste
%eci%e a &u ser*i%or en*i7rsela, ( re%irige el pa&uete a ni*el %e enlace +p.e#. et!ernet, a la %ireccin
A@ %el ser*i%or elegi%o, en lugar %e mo%i'icar o encapsular el pa&uete 4@5:=5. @uan%o llega al
ser*i%or con la A@ %e %estino ( se anali6a !asta el ni*el %e re% +4@5:=5,, como el ser*i%or tambin
tiene con'igura%a la =5 p3blica %el cluster, acepta sin m7s el pa&uete ( genera la respuesta, &ue en*iar7
%irectamente al cliente9
L1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4?. L7S5 7S>./

L2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/os problemas %e este mto%o es &ue no to%os los Sistemas permiten con'igurar una =5 o un
%ispositi*o %e mo%o &ue no respon%a a los coman%os AR5, ( &ue to%os los ser*i%ores %eben estar en el
mismo segmento ')sico %e re% para po%er encaminar las tramas a ni*el %e enlace seg3n las %irecciones
A@, per%ien%o as) la posibili%a% %e %ispersar geogr7'icamente el cluster &ue se ten)a en el mto%o
anterior.
5.1.3.4. Resumen de los mtodos de balanceado
"n la siguiente tabla se resumen las caracter)sticas principales %e los tres mto%os %e
%ireccionamiento &ue pue%e utili6ar el balancea%or %e carga %e /inu$ Virtual Ser*er9
L?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
NAT 1n"apsulamiento I( 1nrutamiento Dire"to
Ser'idor cual&uiera necesita encapsulamiento %ispositi*o noBAR5
#ed de ser'idores re% pri*a%a /A1:<A1 /A1
1s"alabilidad ba#a +10>20, alta alta
Salida +a"ia Internet balancea%or router router
Tabla &. L7S5 MJtodos de direcciona+iento
5.1.4. Planifcacin del balanceo de carga
A la !ora %e con'igurar el balancea%or po%remos elegir entre una serie %e algoritmos para *er
cmo se %istribuir7 la carga entre los ser*i%ores ( cmo se elegir7 el ser*i%or al &ue se en*)a ca%a
peticin. /inu$ Virtual Ser*er permite utili6ar los siguientes algoritmos9
5.1.4.1. Round Robin
/a cl7sica cola Roun% Robin o .=.-9 ca%a peticin se en*)a a un ser*i%or, ( la siguiente
peticin al siguiente ser*i%or %e la lista, !asta llegar al 3ltimo tras lo cual se *uel*e a en*iar al primero.
"s la solucin m7s sencilla ( &ue menos recursos consume, a pesar %e &ue no es la m7s #usta, (a &ue
como se coment en el caso %el balanceo por D1S es posible &ue to%a la carga Rpesa%aS *a(a a parar al
mismo ser*i%or mientras &ue el resto slo reciban peticiones tri*iales. /a %i'erencia con la solucin
basa%a en el ser*i%or %e D1S estriba en &ue en este caso si &ue se asegura &ue la granulari%a% %e la
%istribucin es por pa&uete, (a &ue al ser el balancea%or &uien %istribu(e la carga en lugar %el D1S, no
tenemos el problema %e la persistencia %e la cac! %e D1Ss en los clientes, &ue los !ac)a ir siempre a
consultar al mismo ser*i%or.
-tro problema %e este mto%o &ue tambin tiene el %e la %istribucin por D1S es &ue to%os los
ser*i%ores recibir7n el mismo n3mero %e peticiones, in%epen%ientemente %e si su potencia %e c7lculo es
la misma o no. "l siguiente mto%o *iene a me#orar esto.
5.1.4.2. Round Robin Ponderado
"ste algoritmo es igual &ue el anterior, pero aQa%ien%o un RpesoS a ca%a ser*i%or. "ste peso no
LC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
es m7s &ue un entero &ue in%ica la potencia %e c7lculo %el ser*i%or, %e 'orma &ue la cola Roun% Robin
se mo%i'icar7 para &ue a&uellos ser*i%ores con ma(or potencia %e calculo reciban peticiones m7s a
menu%o &ue el resto. 5or e#emplo, si tenemos tres ser*i%ores A, E ( @, con una cola Roun% Robin
normal la secuencia %e %istribucin ten%r7 tres pasos ( ser7 AE@. Si usamos una Roun% Robin
5on%era%a ( asignamos pesos C, ? ( 2 respecti*amente a ca%a ser*i%or, la cola a!ora %istribuir7 en
nue*e pasos +CJ?J2, ( una posible plani'icacin %e acuer%o a estos pesos ser)a AAEAE@AE@.
"l problema %e este mto%o es &ue, si bien asegura &ue los ser*i%ores m7s capaces reciban m7s
carga, tambin por probabili%a% acabar7n recibien%o m7s peticiones Rpesa%asS, con lo &ue a pesar %e
to%o po%r)an llegar a sobrecargarse.
"n reali%a%, se pue%e *er la cola Roun% Robin normal como un caso especial %e esta otra,
%on%e to%os los ser*i%ores tienen peso 1.
5.1.4.3. Servidor con menos conexiones activas
"ste mecanismo %e %istribucin consulta a los ser*i%ores para *er en ca%a momento cu7ntas
cone$iones abiertas tiene ca%a uno con los clientes, ( en*)a ca%a peticin al ser*i%or &ue menos
cone$iones tenga en ese momento. "s una 'orma %e %istribuir las peticiones !acia los ser*i%ores con
menos carga.
A pesar %e &ue sobre el papel parece &ue este mto%o si &ue ser7 capa6 %e repartir la carga sobre
to%os los ser*i%ores %e una 'orma e&uitati*a, en la pr7ctica 'alla cuan%o la potencia %e los ser*i%ores no
es la misma9 si to%os tienen m7s o menos las mismas caracter)sticas, este algoritmo 'unciona como se
espera; si !a( %i'erencias en las prestaciones %e los e&uipos, lo &ue ocurre en la pr7ctica es &ue %ebi%o
a la espera en 4="O<A=4 %e las cone$iones per%i%as +alre%e%or %e 2 minutos por lo general,, los
ser*i%ores r7pi%os ten%r7n en un momento %a%o una canti%a% gran%e %e cone$iones acti*as sien%o
aten%i%as, ( otra canti%a% tambin gran%e %e cone$iones realmente inacti*as, pero a3n abiertas en
4="O<A=4, mientras &ue los ser*i%ores lentos ten%r7n muc!as menos cone$iones tanto acti*as como
en 4="O<A=4, %e 'orma &ue se en*iar7 m7s carga a los ser*i%ores lentos.
5.1.4.4. Servidor con menos conexiones activas (ponderado)
Al igual &ue la estrategia Roun% Robin 5on%era%a, en este algoritmo se coge el anterior ( se le
aQa%en unos pesos a los ser*i%ores &ue %e alguna 'orma mi%an su capaci%a% %e c7lculo, para mo%i'icar
la pre'erencia a la !ora %e escoger uno u otro seg3n este peso.
LG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5.1.4.5. Menos conectado basado en servicio
"ste algoritmo %irige to%as las peticiones a un mismo ser*i%or, !asta &ue se sobrecarga +su
n3mero %e cone$iones acti*as es ma(or &ue su peso, ( entonces pasa a una estrategia %e menos
cone$iones acti*as pon%era%a sobre el resto %e ser*i%ores %el cluster. "ste mto%o %e plani'icacin
pue%e ser 3til cuan%o o'recemos *arios ser*icios %istintos ( &ueremos especiali6ar ca%a m7&uina en un
ser*icio, pero sien%o to%as ellas capaces %e reempla6ar a las %em7s.
5.1.4.6. Tablas hash por origen y destino
"n estos %os 3ltimos mto%os se %ispone %e una tabla %e asignaciones 'i#as, en las &ue bien por
la =5 %e origen o %e %estino, se in%ica &u ser*i%or %eber7 aten%er la peticin. "l balancea%or compara
las %irecciones %e las tramas 4@5:=5 &ue reciba con estas tablas ( act3a en consecuencia.
5.1.4.7. Conexiones persistentes
A to%os los algoritmos %e plani'icacin anteriores, se les pue%e aQa%ir &ue una *e6 &ue un
cliente !a conecta%o con un ser*i%or, siempre se le %iri#a al mismo ser*i%or. "sto pue%e ser 3til, por
e#emplo, si nuestra aplicacin 8eb !ace uso %e sesiones M445 ( necesitamos mantener la cone$in, o
si &ueremos permitir cone$iones persistentes.
5.1.5. Alta disponibilidad en LVS
/a alta %isponibili%a% %entro %el pro(ecto /inu$ Virtual Ser*er se consigue utili6an%o algunas
%e las tcnicas *istas a lo largo %e este traba#o. Vamos a *er un par %e e#emplos tal ( como se ilustran
en la %ocumentacin %e /VS9
LI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5.1.5.1. mon+heartbeat+fake+coda
"n esta solucin se consigue la alta %isponibili%a% utili6an%o re%un%ancia %e elementos a ni*el
!ar%8are ( so't8are, ( monitori6an%o los recursos para %etectar ca)%as %e cual&uier tipo ( reorgani6ar
el cluster para &ue otros e&uipos pasen a !acerse cargo %e los ser*icios &ue !a(an po%i%o 'allar. 5ara
lograr este 'in, se utili6an los siguientes programas9
+on, para monitori6ar ser*icios.
0eartbeat, para monitori6ar si un e&uipo est7 en 'uncionamiento o !a ca)%o.
fa8e, para en caso %e &ue un e&uipo caiga, otro pue%a suplantar su lugar toman%o su %ireccin
=5.
coda, para o'recer un sistema %e 'ic!eros %istribui%o con re%un%ancia %e ser*i%ores ( cac!s
locales en los e&uipos.
"n el siguiente gr7'ico se pue%e *er %e 'orma es&uem7tica cmo se montar)a el cluster, ( el
lugar &ue ocupar)a ca%a uno %e los ser*i%ores ( programas9
LA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 4%. L7S5 -lta disponibilidad
LL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
LK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l cluster se %i*i%e !ori6ontalmente en tres partes9
"n la primera l)nea tenemos el %istribui%or %e carga. 5ara &ue esta m7&uina no se con*ierta en
un punto %e 'allo +S5.,, se %uplica con otra m7&uina igual %e respal%o &ue en principio
estar7 inacti*a. Ambas m7&uinas monitori6ar7n su 'uncionamiento ( el %e la otra con +on (
0eartbeat, ( cuan%o la %e respal%o %etecte alg3n problema con el %istribui%or principal,
utili6ar7 fa8e para suplantar su i%enti%a%, obtenien%o as) la %ireccin =5 %e entra%a al cluster
( toman%o el control %e la %istribucin %e la carga.
"n la segun%a l)nea tenemos los ser*i%ores reales. /a alta %isponibili%a% se consigue a&u)
instalan%o *arios ser*i%ores ( monitori67n%olos en el %istribui%or %e carga, tanto a ni*el %e
m7&uina +con el fping.+onitor, como %e ser*icios +0ttp.+onitor, ftp.+onitor, etc., para
sacarlos %el cluster me%iante la RalarmaS programa%a para ca%a ser*icio monitori6a%o en el
momento &ue alguno 'alle.
"n la tercera l)nea tenemos el sistema %e 'ic!eros %istribui%o @-DA. 5o%r)amos montar *arios
ser*i%ores en la cel%a @-DA para asegurar su %isponibili%a% ante cual&uier ca)%a. A%em7s,
po%r)amos con'igurar la cac! local %e los ser*i%ores para asegurar &ue siempre tengan a!)
los 'ic!eros %e m7s com3n acceso, para &ue ante una ca)%a %e la re% interna pue%an seguir
sir*in%olos.
A%em7s %e to%o esto, tambin !abr)a &ue tener en cuenta el instalar una in'raestructura %e re%
re%un%ante, con *arios routers %e sali%a, *arias re%es internas para interconectar to%os los e&uipos, (
*arias tar#etas %e re% en ca%a ser*i%or para po%er salir por una u otra si alguna 'allara.
5.1.5.2. ldirectord+heartbeat
ldirectord +/inu$ Director Daemon, es un %emonio escrito por Jacob Rie' para monitori6ar
ser*icios M445 ( M445S en un cluster /VS. "s una solucin muc!o menos genrica &ue +on, (a &ue
no tenemos la liberta% &ue ten)amos con +on para %e'inir nuestros propios programas para monitori6ar
el ser*icio &ue &ueramos, pero el !ec!o %e estar espec)'icamente %iseQa%o para traba#ar con /VS !ace
&ue sea muc!o m7s '7cil %e instalar e integrar %entro %e un cluster %e este tipo.
/as principales *enta#as %e ldirectord sobre +on en un cluster /VS son9
ldirectord lee los 'ic!eros %e con'iguracin %e /VS para acce%er a los ser*i%ores (
monitori6arlos, ( en caso %e ca)%a %e alguno %e ellos pue%e mo%i'icar %irectamente estos
'ic!eros %e con'iguracin para eliminarlos %el cluster.
ldirectord se pue%e con'igurar '7cilmente para &ue sea lan6a%o por !eartbeat al arrancar el
cluster, consiguien%o as) una ma(or integracin %e to%o el so't8are &ue 'orma el cluster
K0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/VS.
5or lo %em7s, el monta#e ( 'uncionamiento %el cluster ser)a similar al %el caso anterior, pero
sustitu(en%o el programa +on por ldirectord.
5.1.6. El software
"l so't8are %e /VS se %i*i%e en %os partes +a%em7s %e los programas au$iliares, como +on o
0eartbeat,9 un parc!e para el Hernel %el e&uipo &ue *a(a a !acer %e balancea%or +=5VSBpatc!,; ( unas
!erramientas %e a%ministracin +ipvsad+,, &ue tambin se utili6ar7n %es%e el balancea%or. "n los
ser*i%ores, 3nicamente ten%remos &ue instalar ( con'igurar el so't8are ser*i%or &ue *a(amos a
necesitar, ( con'igurar la re% +=5s, gate8a(, encapsula%o =5..., seg3n el tipo %e %ireccionamiento &ue
*a(amos a usar en el cluster +VSB1A4, VSB4un o VSBDR,.
4ras parc!ear el Hernel, en +a8e +enuconfig nos aparecer7 una nue*a serie %e opciones para
!abilitar /VS. "ste es el aspecto %e la seccin %e re% %e +enuconfig, con las opciones &ue %ebemos
seleccionar9
<*> Packet socket
[ ] Packet socket: mmapped IO
[*] Kernel/User netlink socket
[*] Routing messages
<*> Netlink device emulation
[*] Network packet filtering (replaces ipchains)
[*] Network packet filtering debugging
[*] Socket Filtering
<*> Unix domain sockets
[*] TCP/IP networking
[ ] IP: multicasting
[*] IP: advanced router
[*] IP: policy routing
[*] IP: use netfilter MARK value as routing key
[*] IP: fast network address translation
[*] IP: equal cost multipath
[*] IP: use TOS value as routing key
[*] IP: verbose route monitoring
[*] IP: large routing tables
[*] IP: kernel level autoconfiguration
[ ] IP: BOOTP support
[ ] IP: RARP support
<M> IP: tunneling
< > IP: GRE tunnels over IP
[ ] IP: multicast routing
[ ] IP: ARP daemon support (EXPERIMENTAL)
[ ] IP: TCP Explicit Congestion Notification support
[ ] IP: TCP syncookie support (disabled per default)
IP: Netfilter Configuration --->
K1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
IP: Virtual Server Configuration --->
< > The IPv6 protocol (EXPERIMENTAL)
< > Kernel httpd acceleration (EXPERIMENTAL)
[ ] Asynchronous Transfer Mode (ATM) (EXPERIMENTAL)
---
] este el conteni%o %e la subBseccin R=59 Virtual Ser*er @on'igurationS9
<M> virtual server support (EXPERIMENTAL)
[*] IP virtual server debugging (NEW)
(12) IPVS connection table size (the Nth power of 2) (NEW)
--- IPVS scheduler
<M> round-robin scheduling (NEW)
<M> weighted round-robin scheduling (NEW)
<M> least-connection scheduling scheduling (NEW)
<M> weighted least-connection scheduling (NEW)
<M> locality-based least-connection scheduling (NEW)
<M> locality-based least-connection with replication
scheduling (NEW)
<M> destination hashing scheduling (NEW)
<M> source hashing scheduling (NEW)
--- IPVS application helper
<M> FTP protocol helper (NEW)
2na *e6 tenemos parc!ea%o, compila%o ( 'uncionan%o el Hernel con soporte =5VS en el
%istribui%or, ten%remos &ue con'igurar el cluster con a(u%a %el programa en l)nea %e coman%os
ipvsad+. e%iante este programa, po%emos9
AQa%ir ser*i%ores (:o ser*icios al cluster, acti*ar o %etener un ser*icio, con'igurar ser*icios...
"legir los mto%os %e balancea%o ( los algoritmos %e plani'icacin.
o%i'icar los pesos %e los ser*i%ores.
@argar ( guar%ar la con'iguracin actual %el cluster...
"l uso %e ipvsad+ %irectamente es bastante te%ioso ( complica%o, seme#ante a lo &ue ser)a
con'igurar un 'ire8all /inu$ %irectamente con ipfwad+ o ip>tables. "s por esto &ue en la propia 8eb %e
/inu$ Virtual Ser*er se nos o'recen *arios scripts prepara%os (a para poner a 'uncionar un cluster /VS,
a 'alta %e retocar par7metros locales como el n3mero %e m7&uinas %el cluster ( sus %irecciones =5s. 5or
otra parte, !an surgi%o *arias !erramientas m7s o menos gr7'icas ( m7s o menos cmo%as para reali6ar
%e 'orma interacti*a to%o el proceso %e con'iguracin. Vamos a *er algunas %e estas !erramientas9
5.1.6.1. lvs-gui
K2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"s una aplicacin gr7'ica para TB<in%o8 %esarrolla%a por VA /inu$ para con'igurar '7cilmente
un cluster /VS. "ste es el aspecto %el programa9
I+agen 4I. L7S5 lvs>gui
K?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
l*sBgui nos permite con'igurar %e 'orma remota +reali6a la cone$in me%iante ss0, tanto el
e&uipo &ue !aga %e balancea%or %e carga como el resto %e ser*i%ores. "l programa se encarga %e, tras
con'igurar el cluster me%iante su inter'a6 gr7'ica, conectarse a los e&uipos remotos ( mo%i'icar sus
'ic!eros %e con'iguracin para &ue implementen con nuestra con'iguracin.
/a 3nica limitacin importante %e l*sBgui es &ue tan slo permite con'igurar clusters me%iante
el mto%o %e %ireccionamiento %irecto, VSBDR. 5or tanto, no po%remos utili6ar encapsula%o =5 ni 1A4.
A%em7s, para &ue l*sBgui se pue%a conectar a los e&uipos remotos ( los con'igure correctamente, to%os
ellos %eber7n e#ecutar /inu$ ( tener instala%o el ser*i%or %e ss0.
5.1.6.2. LVSM
/inu$ Virtual Ser*er anager es otro programa &ue nos permitir7 %e una 'orma cmo%a ( '7cil
instalar ( a%ministrar un cluster /VS a tra*s %e una inter'a6 en M4/. /VS est7 programa%o en
5erl, ( necesita %e Apac!e con el m%ulo mo%Operl para 'uncionar.
/VS nos o'rece9
Ealanceo %e carga
Alta %isponibili%a%
onitori6acin %e ser*icios
A%ministracin remota %e ser*i%ores 8eb
@on'iguracin sencilla
KC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"sta%)sticas %el cluster
"l so't8are %e /VS est7 compuesto por %os programas9
plvsd, un %emonio &ue !abr7 &ue instalar en ca%a uno %e los ser*i%ores %el cluster ( &ue se
encarga %e mantener la con'iguracin local %e ca%a e&uipo.
L7SM Heb ')I, el inter'a6 8eb me%iante el cual con'iguraremos el cluster. 1os presentar7 una
serie %e 'ormularios M4/ con las opciones %e con'iguracin, &ue ser7n procesa%as por
unos @0=s en 5erl &ue a su *e6 se comunicar7n con el %emonio plvsd %e ca%a ser*i%or para
acce%er a o mo%i'icar la con'iguracin %e ca%a m7&uina.
5.1.6.3. Mdulo webmin para LVS
8ebmin es una aplicacin 8eb para la con'iguracin ( a%ministracin remota %e ser*icios (
ser*i%ores, &ue anali6aremos en ma(or %etalle en el punto I.C. %el presente traba#o. "$iste un m%ulo
para po%er con'igurar clusters /inu$ Virtual Ser*er %es%e 8ebmin. Desa'ortuna%amente, no !emos
po%i%o locali6ar la 8eb %e este programa, tan slo el programa en s), ( no !emos po%i%o probarlo. Sin
embargo, los comentarios sobre este m%ulo para 8ebmin en las listas %e correo %e /VS son bastante
positi*os.
5.1.6.4. Ultra Monkey
2ltra onHe( ser)a la solucin m7s r7pi%a ( '7cil si necesitamos montar un cluster %e
ser*i%ores 8eb. Se trata %e un pa&uete con 4-D- el so't8are necesario para montar un cluster /VS9 un
Hernel con los parc!es a%ecua%os, +on, 0eartbeat, fa8e ... A%em7s %e to%o el so't8are, tambin o'rece
abun%ante %ocumentacin sobre cmo con'igurar el cluster ( *arios 'ic!eros %e con'iguracin (a
prepara%os para los siguientes casos9
Ser*icio simple con alta %isponibili%a%
"s un caso mu( sencillo en el &ue ni si&uiera se utili6a balancea%or %e carga, tan slo
*arios ser*i%ores &ue se monitori6an mutuamente con +on ( 0eartbeat.
KG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 6K. L7S5 )ltra Mon8e1, +Jtodo 4
Ser*icio simple con balanceo %e carga
Similar al anterior, pero aQa%ien%o al 'rente %e to%o un balancea%or %e carga, (
separan%o as) a los ser*i%ores reales %e =nternet. "l balancea%or controla el esta%o %e los
ser*i%ores por me%io %el programa l%irector%, ( el mto%o %e %ireccionamiento utili6a%o es VSB
1A4.
I+agen 64. L7S5 )ltra Mon8e1, +Jtodo 6
Ser*icio con balanceo %e carga ( alta %isponibili%a%
@omo el anterior, pero con un e&uipo %e respal%o para el balancea%or %e carga, &ue se
encargar7 %e monitori6arlo ( tomar su lugar con fa8e ante cual&uier problema.
KI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 66. L7S5 )ltra Mon8e1, +Jtodo ;
Ser*icio con balanceo %e carga, alta %isponibili%a% ( alta capaci%a%9
Similar a la anterior, pero se sit3an tanto los ser*i%ores como los balancea%ores %e carga
en la misma re% con sali%a a =nternet, para conseguir as) un ma(or anc!o %e ban%a %e sali%a
utili6an%o VSB4un o VSBDR.
I+agen 6;. L7S5 )ltra Mon8e1, +Jtodo <
"l 3nico punto negati*o %e 2ltra onHe( es &ue no nos proporciona ninguna !erramienta
gr7'ica para la con'iguracin:a%ministracin %el cluster9 a pesar %e &ue nos lo %a casi to%o !ec!o, la
instalacin ( a#uste %e con'iguraciones !a %e !acerse a mano, %irectamente sobre los 'ic!eros %e
con'iguracin. 5or lo %em7s, es una buena solucin (a &ue en un 3nico pa&uete tenemos to%o el
so't8are, %ocumentacin ( 'ic!eros %e con'iguracin necesarios para poner a 'uncionar un cluster /VS
en poco tiempo ( sin un gran es'uer6o.
KA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5.1.6.5. Piranha
5iran!a es tambin una solucin completa, al igual &ue 2ltra onHe(, pero en este caso
comercial ( %e la mano %e Re% Mat. Se basa en /VS, algunos programas 05/ ( otros propietarios %e
Re% Mat, ( es una implementacin completamente so't8are. 5iran!a es tanto el nombre %el pro%ucto, el
cluster en s), como %el inter'a6 gr7'ico para a%ministrarlo.
2n cluster 5iran!a se compone %e los siguientes elementos9
"l parc!e IP7S para el Hernel.
"l %emonio lvs para mane#ar las tablas =5VS a tra*s %e ipvsad+.
"l %emonio nann1 para monitori6ar ser*icios ( ser*i%ores.
"l %emonio pulse para controlar el esta%o %el resto %e %emonios %el cluster ( la entra%a en
'uncionamiento %el %istribui%or %e carga %e respal%o en caso %e 'allo %el primario.
/a inter'a6 gr7'ica piran0a para a%ministrar el cluster.
4o%os estos programas utili6an el mismo 'ic!ero %e con'iguracin, /etc/lvs.cf. /a 'uncin
%e la inter'a6 gr7'ica piran0a es la %e iniciar o %etener el %emonio pulse %e 'orma interacti*a, ( e%itar
los par7metros %e con'iguracin. "l c%igo =5VS %e /inu$ Virtual Ser*er es el encarga%o %e la
%istribucin %e carga entre los ser*i%ores, estan%o %isponibles to%os los mto%os comenta%os
anteriormente. @omo *alor aQa%i%o a to%o lo comenta%o para una instalacin /VS normal, piran0a es
capa6 %e a%aptar los pesos %e los algoritmos %e plani'icacin autom7ticamente, seg3n las esta%)sticas
%e 'uncionamiento %e ca%a ser*i%or.
4o%o ser*icio presta%o por ca%a uno %e los ser*i%ores reales %e nuestro cluster se monitori6a
me%iante el %emonio nann1, en e#ecucin en el %istribui%or %e carga acti*o. "sta monitori6acin se
lle*a a cabo en %os pasos9 en primer lugar se comprueba el esta%o %e las tar#etas %e re% ( %e la propia
re% en s), ( se trata %e conectar con el ser*i%or para asegurarnos %e &ue no se !a colga%o la m7&uina; en
segun%o lugar, se establece una cone$in al puerto %el protocolo &ue estemos monitori6an%o, se en*)a
una peticin sencilla ( se espera la respuesta correspon%iente. "ste proceso se repite ca%a %os
segun%os. Si un ser*i%or no respon%e +o la respuesta no es la espera%a, %urante un cierto per)o%o %e
tiempo, nann1 se encarga %e eliminarlo %e las tablas %e =5VS para as) RsacarS el ser*i%or ca)%o %el
cluster. "l e&uipo con problemas sigue sien%o monitori6a%o, para reinsertarlo en el cluster %e 'orma
autom7tica cuan%o *uel*a a 'uncionar.
5ara &ue el balancea%or %e carga no sea un S5., se pue%e montar un segun%o balancea%or &ue
le !aga %e respal%o en caso %e problemas. @uan%o se con'igura piran0a %e esta 'orma, el balancea%or
%e respal%o mantiene una copia %e la con'iguracin %el cluster ( monitori6a el esta%o %el balancea%or
primario. Si se %etecta alg3n problema %urante un cierto tiempo, el balancea%or %e respal%o lle*a a
cabo las acciones necesarias para suplantar la =5 %el balancea%or principal ( tomar su lugar. Si, tras un
tiempo, el antiguo balancea%or *uel*e a 'uncionar, %etecta &ue el otro !a toma%o su lugar ( a partir %e
KL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
entonces actuar7 como balancea%or %e respal%o, monitori6an%o el esta%o %el nue*o balancea%or
principal.
5iran!a pue%e ser una mu( buena solucin, pero presenta las pegas %e ser propietaria +%e pago,
( estar mu( liga%a a la %istribucin Re% Mat, lo &ue en algunos casos nos po%r)a limitar en 'le$ibili%a%.
5.2. Super Sparrow
Super Sparro8 lle*a el concepto %el clustering ( el balanceo %e carga un paso m7s all7,
permitin%onos !acer un Rcluster %e clustersS %istribui%os geogr7'icamente, %e 'orma &ue ca%a cliente
se encamine !acia el cluster &ue le resulte m7s cercano +en trminos %el enrutamiento a tra*s %e
=nternet, ( &ue, por tanto, %eber)a irle m7s r7pi%o. A%em7s, es un gran e#emplo %e ingenio, (a &ue
toman%o como base un protocolo e$istente, lo reapro*ec!a con J$ito para un 'in %istinto a a&uel para el
&ue 'ue %iseQa%o.
Visto %e otra 'orma, Super Sparro8 *iene a automati6ar en la parte %el ser*i%or el proceso %e
elegir el RmirrorS %e una %etermina%a 8eb m7s pr$imo a nuestra locali6acin, en lugar %e tener &ue
seleccionarlo manualmente %e una lista.
"l protocolo al &ue !ac)amos re'erencia anteriormente ( en el &ue se basa Super Sparro8 es el
Eor%er 0ate8a( 5rotocol, o E05 para abre*iar. "n concreto, la *ersin %e E05 &ue utili6a Super
Sparro8 es la E05BC. Vamos a *er en &u consiste.
5.2.1. BGP
E05 es un protocolo %e enrutamiento, es %ecir, un protocolo por el cual los routers ( otra
electrnica %e re% se pue%en comunicar entre s) para intercambiar in'ormacin %e a &u re%es pue%en
llegar ( &u rutas siguen ca%a uno, para po%er reorgani6ar as) las propias rutas a%apt7n%ose me#or al
entorno. 5or e#emplo, si un router %epen%e %e la re% ^A^ para llegar a ^E^ ( 'alla la electrnica en ^A^,
pue%e utili6ar la in'ormacin suministra%a por estos protocolos para encontrar otro camino para llegar a
^E^ a tra*s %e otra re% a la &ue tenga acceso, ( pue%e mo%i'icar sus tablas %e enrutamiento %e 'orma
autom7tica para conseguirlo. /a in'ormacin %e &u re%es pertenecen a ca%a router se intercambia
utili6an%o prefijos en notacin @=DR +R.@ 1G1K,.
/os protocolos %e enrutamiento se %i*i%en en %os grupos9
=05 +=nterior 0ate8a( 5rotocol,, utili6a%os para a%ministrar re%es pri*a%as ( asegurarse %e &ue
to%os los e&uipos son *isibles %es%e to%os los puntos %e la re%.
KK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"05 +"$terior 0ate8a( 5rotocol,, &ue in%ica &u %irecciones pertenecen a una %etermina%a
re% cubierta por un router ( a &u otras %irecciones:re%es se pue%e llegar a tra*s %e l.
E05 pertenece a este segun%o grupo.
@uan%o %os re%es se intercambian in'ormacin %e enrutamiento, lo !acen utili6an%o
numeracin Autonomous S(stem +AS, 1umber, seg3n se %e'ine en el R.@ 1K?0. Supongamos &ue
tenemos tres re%es, A, E ( @, con n3meros AS ICI00, ICI01 ( ICI02, interconecta%as entre s) como
muestra el siguiente gr7'ico9
I+agen 6<. Super Sparrow5 2je+plo B'P
/os routers %e bor%e +bor%er routers, a los &ue !ace re'erencia E05 son los &ue se encuentran
en el e$tremo %e ca%a re%, en comunicacin %irecta con los routers %e bor%e %e las otras re%es. /as
sesiones E05 se establecen entre los routers %e A ( E, ( los %e E ( @. "l camino AS para llegar %es%e
la re% A a un e&uipo perteneciente a un prefijo @=DR %e la re% @ ser)a ICI01 ICI02, in%ican%o as) &ue
el tr7'ico %ebe ser %irigi%o a la re% E (, %e a!), a la @.
5.2.2. Funcionamiento de Super Sparrow
Supongamos &ue tenemos %uplica%a nuestra in'raestructura en =nternet +ser*i%ores 8eb, etc, en
%os 5untos %e 5resencia +5-5, 5oints -' 5resence, %istintos, uno en la re% A %el e#emplo anterior
llama%o 5-5 T ( otro en la @ llama%o 5-5 (. @uan%o un cliente conecta con, %igamos, 5-5 T, %es%e
all) po%emos pe%ir me%iante E05 el camino AS !asta el cliente, ( me%iante una sesin %e m3ltiples
100
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
saltos +RmultiB!opS, E05, a*eriguar tambin el camino &ue se seguir)a %es%e el 5-5 ] !asta ese mismo
cliente9
I+agen 6=. Super Sparrow5 2je+plo de funciona+iento
De esta 'orma, si suponemos &ue el cliente estaba en un e&uipo %e la re% @, el camino %es%e
5-5 T *en%r)a %etermina%o por la secuencia AS ICI00 ICI01 ICI02, mientras &ue %es%e 5-5 ] ser)a
ICA02 ICI02. "l camino m7s corto, en este caso el %el 5-5 ] es el pre'eri%o, ( por tanto %on%e
%eberemos re%irigir la cone$in %el cliente.
/a pre'erencia sobre un camino u otro se pue%e mo%i'icar asignan%o pesos a ca%a re% +para &ue,
por e#emplo, el paso por ella cuente por %os,. 5or otra parte, en una in'raestructura ma(or con m7s %e
%os 5-5s po%r)a %arse el caso %e &ue en el camino pre'eri%o apare6can las %irecciones AS %e *arios
5-5s9 en este caso, re%ireccionaremos el tr7'ico al 5-5 &ue apare6ca el 3ltimo +m7s a la %erec!a, en el
camino, (a &ue es el &ue est7 m7s cerca %el cliente.
101
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5.2.3. El software
Super Sparro8 nos pro*ee %e los mecanismos necesarios para obtener la in'ormacin E05 %e
un ser*i%or %e enrutamiento +actualmente se soportan los routers so't8are 012 gebra ( gate%, ( el
sistema @isco =-S %e los routers !ar%8are %e Sisco S(stems, =nc., ( re%irigir el tr7'ico !acia otro 5-5.
"l so't8are %e Super Sparro8 se sub%i*i%e en *arios programas ( librer)as9
libsupersparrow9
4o%a la 'uncionali%a% b7sica %e Super Sparro8 est7 implementa%a en la librer)a
libsupersparrow, &ue nos permite9
-btener in'ormacin %e los ser*i%ores %e enrutamiento, para lo &ue reali6a una
cone$in 4@5:=5 con el ser*i%or ( utili6a E05 para a*eriguar el pre'i#o @=DR para
una %ireccin =5 ( a continuacin obtener ( anali6ar el camino AS !asta l.
Asociar n3meros AS pr$imos con %irecciones =5s, para a*eriguar la pro$imi%a% entre
%irecciones ( re%es =5.
@ac!ear las cone$iones con los ser*i%ores, utili6an%o cone$iones persistentes &ue
generan menos tr7'ico para no sobrecargar la re%.
@ac!ear los resulta%os, para e*itar preguntar el camino a una misma re%:%ireccin
*arias *eces.
antener una bit7cora %e lo &ue se *a !acien%o, a tra*s %e las 'unciones %e las
librer)as %el pro(ecto VAnessa.
+odDsupersparrow9
Se trata %e un m%ulo para el ser*i%or %e D1S .ents, lo &ue !ace to%a esta solucin
poco 'le$ible al estar )ntimamente liga%a a un ser*i%or en concreto. Sin embargo, al estar
%isponible el c%igo 'uente %e to%o el pro(ecto, no ser)a mu( costoso a%aptarlo a cual&uier otro
ser*i%or.
Dents es un ser*i%or %e D1S e$tensible a tra*s %e m%ulos, %e 'orma similar a como se
!ace con el ser*i%or 8eb Apac!e. e%iante el m%ulo mo%Osupersparro8, integramos to%a la
tecnolog)a %e Super Sparro8 en nuestra re%, para &ue %e 'orma autom7tica se re%iri#a a los
clientes al 5-5 m7s pr$imo. "n el siguiente gr7'ico se muestra su 'uncionamiento9
102
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 6&. Super Sparrow5 @unciona+iento de +odDsupersparrow
1."l cliente !ace una peticin %e resolucin %e nombres al ser*i%or D1S %e la re% @.
2."l ser*i%or !ace una peticin recursi*a al ser*i%or encarga%o %el %ominio, %e la &ue
obtiene las %irecciones %e 5-5 T ( 5-5 ] como ser*i%ores D1S autoritarios para el
%ominio. Deci%e continuar preguntan%o a 5-5 T.
?."l ser*i%or D1S %e 5-5 T es Dents con el m%ulo mo%Osupersparro8. Dents utili6a
entonces E05 para *er &u 5-5 est7 m7s cercano al .(S del cliente, (a &ue es &uien
!a conecta%o con l ( no tiene 'orma %e a*eriguar la %ireccin %el cliente &ue !a
!ec!o la consulta al ser*i%or D1S. "n este caso 5-5 ], por lo &ue %e*uel*e la
%ireccin =5 %e ste al ser*i%or D1S %e la re% @.
C."l D1S %e la re% @ %e*uel*e la =5 %e 5-5 ] al cliente.
G."l cliente reali6a la cone$in M445 con 5-5 ].
10?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I.5-5 ] respon%e al cliente.
supersparrow9
2n programa en l)nea %e coman%os &ue nos permite acce%er a to%a la 'uncionali%a% %e
la librer)a libsupersparro8. Se pue%e utili6ar para reali6ar pruebas, o pue%e ser in*oca%o por
cual&uier programa para reali6ar consultas E05.
5.2.4. Super Sparrow y Apache
Da%a la gran 'le$ibili%a% ( potencia %el ser*i%or 8eb Apac!e, ( gracias a su m%ulo
+odDrewrite, es posible integrar Super Sparro8 %entro %el ser*i%or 8eb en lugar %e !acerlo en el
ser*i%or D1S Dents, como se *io anteriormente. Veamos un e#emplo similar al anterior9
I+agen 6?. Super Sparrow5 Integracin con -pac0e
10C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
1./as %irecciones %e los clusters en 5-5 T ( 5-5 ] est7n asocia%as con el %ominio por el &ue
!a pregunta%o el cliente. "sta *e6, el ser*i%or le %a %e 'orma aleatoria la =5 %e 5-5 T ( el
cliente establece una sesin M445.
2."l ser*i%or Apac!e %el 5-5 T e#ecuta supersparrow a tra*s %e +odDrewrite9 tiene
con'igura%a una regla para +odDrewrite &ue obtiene la %ireccin =5 %el cliente +esta *e6 si, (
se la pasa a supersparrow, para calcular cu7l %e los %os 5-5s est7 m7s pr$imo al cliente. Si
el 5-5 m7s cercano 'uera T, to%o seguir)a normalmente; como el m7s cercano es ], 5-5 T
genera una respuesta a la peticin M445 %el cliente &ue lo re%irige al 5-5 ].
?."l cliente recibe la re%ireccin, ( abre una nue*a sesin esta *e6 con 5-5 ].
C."l ser*i%or en 5-5 ] atien%e a su peticin.
10G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
10I
6. Programas para la instalacin y administracin
2na *e6 &ue (a !emos re*isa%o to%as las posibili%a%es para implantar un cluster %e Alta
Disponibili%a%, !emos anali6a%o nuestras necesi%a%es, ( !emos %eci%i%o &u so't8are ( &u
in'raestructura instalar, nos &ue%a el paso m7s te%ioso ( susceptible a errores !umanos %es%e el punto
%e *ista %el a%ministra%or %e sistemas9 la instalacin %el sistema operati*o ( el resto %el so't8are en
cada uno %e los ser*i%ores %el cluster, ( su consiguiente con'iguracin. "n este aparta%o anali6aremos
las %istintas !erramientas %isponibles para automati6ar en la me%i%a %e lo posible esta tarea.
6.1. Linux Utility for cluster Installation (LUI)
2n nue*o e#emplo %el inters &ue est7 %espertan%o /inu$ entre las gran%es empresas %e
in'orm7tica, (a &ue es un %esarrollo %el %epartamento %e /inu$ %e =E, /2= es una aplicacin openB
source para la instalacin remota sobre una re% et!ernet %e e&uipos /inu$, eligien%o &u recursos
&ueremos instalar en ca%a e&uipo. "stos son los recursos &ue /2= nos permite seleccionar ( con'igurar9
4abla %e particiones %el %isco
Yernel %e linu$
S(stem.map %el Hernel
/ista %e R5s a instalar
Sistemas %e 'ic!eros +locales ( remotos,
Scripts %e con'iguracin:sali%a %e usuarios
Discos RA
.ic!eros R'uenteS +'ic!eros a copiar %irectamente %el ser*i%or al cliente,
/as m7&uinas a instalar se pue%en arrancar bien %es%e %is&uetes prepara%os especialmente, o
bien por re% utili6an%o E--45 ( 5T".
/a instalacin %e la m7&uina ser*i%ora, %es%e %on%e se reali6ar7 la instalacin remota %el resto,
es sencilla9 (a &ue /2= nos 'uer6a a usar una %istribucin basa%a en pa&uetes R5, no ten%remos
ning3n problema en instalar /2= %es%e un R5 &ue reali6ar7 to%a la instalacin ( con'iguracin por
nosotros.
5ara seleccionar estos RrecursosS, /2= %ispone %e un cmo%o inter'a6 gr7'ico9
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen 6%. L)I5 InterfaC gr,fico
A pesar %e &ue es ciertamente cmo%o %e instalar ( usar, /2= presenta tres importantes
problemas %es%e nuestro punto %e *ista9
1.Slo 'uncionar7 en %istribuciones Re% Mat ( %eri*a%as, (a &ue el so't8are a instalar se elige
en base a pa&uetes R5.
2.5or ello, !ar7 %i')cil la tarea %e mantener so't8are &ue !a(amos instala%o nosotros a parte %e
la %istribucin +p.e#. alg3n programa &ue !emos compila%o %es%e el 'uente,, algo &ue a pesar
%e estar soporta%o, es comple#o ( poco intuiti*o.
?.Slo permite la instalacin a tra*s %e re%es et!ernet. 1o se pue%en reali6ar
instalaciones:actuali6aciones remotas a tra*s %e re%es <A1 4@5:=5 +p.e#., a tra*s %e
10L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
=nternet,.
6.2. FAI
.A=, siglas %e .ull( Automate% =nstallation, es un sistema para instalar %e 'orma autom7tica (
no interacti*a un or%ena%or o to%o un cluster con Debian 012:/inu$. 5or tanto, ( en primer lugar,
tenemos el mismo problema &ue con /2=9 est7 orienta%o a una 3nica %istribucin, lo cual siempre es un
punto negati*o.
4o%o el proceso se pue%e automati6ar completamente. "l 'uncionamiento %e .A= est7 inspira%o
en el %el JumpStart %e Solaris.
.A= nos o'rece9
5roceso %e instalacin completamente automati6a%o ( mu( r7pi%o.
/os e&uipos a instalar se pue%en arrancar %es%e %is&uete o por re%. Se proporcionan los
programas para crear %iscos %e arran&ue.
Se soporta E--45 ( DM@5 para la con'iguracin %e la re%.
1o se necesita un %isco RA inicial, con Lb %e memoria basta.
.unciona en procesa%ores ?LI ( superiores +tambin se !a proba%o en S5AR@,.
"l Hernel %e instalacin soporta m%ulos.
Durante el proceso %e instalacin se pue%e entrar en los sistemas me%iante ss! para reali6ar
a#ustes, o me%iante %os terminales *irtuales en consola.
Se guar%a una bit7cora %e to%o el proceso en el ser*i%or.
Se pue%en aQa%ir scripts %e con'iguracin personali6a%os en s!ellBscript, perl, e$pect (
c'engine.
Se pue%e acce%er al repositorio con los pa&uetes a instalar por 1.S, .45 o M445.
Se pue%e utili6ar lilo o grub para con'igurar el arran&ue %e %isco %uro.
5ue%e ser utili6a%o como sistema %e RrescateS ante 'allos.
6.2.1. Funcionamiento
/a m7&uina a instalar se arranca, bien %es%e un %is&uete %e arran&ue o por re% me%iante 5T", (
obtiene su con'iguracin %e re% +=5, ser*i%ores %e D1S, gate8a(..., por DM@5, E--45 o la lee %el
%isco. Arranca un Hernel %e /inu$ ( monta su sistema %e 'ic!eros rai6 por 1.S %es%e el ser*i%or %e
instalacin. 2na *e6 &ue el sistema est7 listo, se comien6an a e#ecutar una serie %e scripts &ue obtienen
%el ser*i%or %e instalacin to%os los pasos a reali6ar9 particionamiento %el %isco, so't8are a instalar,
con'iguracin local... .inalmente, se reinicia el e&uipo para &ue arran&ue el sistema recin instala%o.
10K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/a con'iguracin sobre el particionamiento %e %iscos, so't8are a instalar, etc. se almacena en
'ic!eros en el ser*i%or. "stos 'ic!eros %e con'iguracin pue%en ser comparti%os entre %istintos e&uipos
a instalar, e incluso se pue%en crear clases con !erencia, %e 'orma &ue un mismo e&uipo pue%e tomar su
con'iguracin %e *arios per'iles %istintos. De esta 'orma, se pue%e 'le$ibili6ar el proceso %e
con'iguracin, con lo &ue se pue%e escalar la instalacin %e un n3mero potencialmente mu( gran%e %e
e&uipos.
.A= tambin pue%e ser utili6a%o como mto%o %e rescate ante 'allos9 es posible arrancar, montar
el sistema rai6 %es%e 1.S ( !acer un login en ese sistema en lugar %e continuar con la instalacin. De
esta 'orma se entra en el e&uipo sin utili6ar los %iscos locales, &ue po%remos comprobar por si tienen
errores, reparar, etc.
.A= es un sistema %e instalacin remota bastante potente ( cmo%o, incluso m7s &ue /2=, a
pesar %e no contar con una inter'a6 gr7'ica. Sin embargo, a%olece %el mismo problema &ue a&uel9 est7
%iseQa%o para 'uncionar 3nicamente con una %istribucin %etermina%a %e /inu$, lo &ue nos limita tanto
a la !ora %e elegir la %istribucin a instalar, como a la !ora %e instalar so't8are &ue no tengamos
empa&ueta%o en el 'ormato propio %e esa %istribucin.
6.3. VA SystemInstaller
VA S(stem=nstaller es un programa para la instalacin ( actuali6acin remota %e sistemas
basa%os en cualFuier distribucin %e 012:/inu$, %esarrolla%o por la empresa VA /inu$, una empresa
%e%ica%a a la *enta %e !ar%8are +ser*i%ores, e&uipa%o con sistemas /inu$, mu( *olca%a en la
comuni%a% %e usuarios %e /inu$ ( &ue promue*e, apo(a ( 'inancia *arios pro(ectos %e so't8are libre.
/as principales caracter)sticas %e VA S(stem=nstaller son9
4o%os los e&uipos se instalan "1 5ARA/"/-, incluso si %isponemos %e %i'erentes tipos %e
clientes con %i'erentes con'iguraciones %e so't8are.
/os clientes a instalar se pue%en arrancar +con el so't8are cliente apropia%o, %es%e el %isco
%uro, %is&uetes, @DBR- o incluso por re% +si el !ar%8are lo soporta,.
"l so't8are se encarga %e particionar ( 'ormatear los %iscos %uros, si 'uera necesario, sin &ue
sea necesario &ue los %iscos %e ca%a e&uipo tengan el mismo tamaQo.
/as im7genes &ue se instalan son rplicas %e un e&uipo &ue nos !abremos encarga%o antes %e
instalar, con'igurar ( a'inar al m7$imo. 2na *e6 &ue los clientes se instalan, sabemos el
so't8are &ue !a( instala%o ( cmo est7 con'igura%o, ( sabemos &ue 'unciona bien.
110
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/as im7genes se basan en 'ic!eros in%epen%ientes, no en sistemas %e pa&uetes +.%eb o .rpm,
e$clusi*os %e alguna %istribucin.
Se pue%en mantener *arias im7genes en el ser*i%or, ( RreinstalarS los e&uipos %e una a otra
al instante +para, por e#emplo, *ol*er a una *ersin anterior si encontramos alg3n error en la
actual,.
A la !ora %e actuali6ar una %e las instalaciones, slo se en*)a por la re% a&uellas partes %e la
instalacin &ue !a(an si%o mo%i'ica%as, con la consiguiente re%uccin %el tiempo %e
instalacin +para esto se utili6a rs1nc, comenta%o en una seccin anterior %e este traba#o,.
/a instalacin %e un cliente se pue%e iniciar %e 'orma remota por la re% +con el so't8are
apropia%o,, !acien%o posible la reali6acin %e instalaciones en 6onas geogr7'icamente
%ispersas sin necesi%a% %e en*iar tcnicos a reali6arla in situ.
A pesar %e &ue, por su mo%o %e 'uncionamiento basa%o en rs1nc, VA S(stem=mager 'uncionar7
sin problemas en cual&uier %istribucin %e /inu$, las siguientes %istribuciones est7n o'icialmente
soporta%as por los autores9
Distribu"i)n 2ersiones
Debian 2.1 +^slinH^ 8it! 2.2.$ Hernel,, 2.2 +^potato^,, +^8oo%(^,
Yon%ara 1.1
Re%Mat I.0, I.1, I.2, A.0
Re%Mat 8it! VA /inu$ "n!ancements I.0.$, I.1.$, I.2.$, A.0.$
Storm 1.C
Tabla ?. 7- S1ste+I+ager5 .istribuciones soportadas
VA S(stem=mager !a si%o proba%o en estas otras %istribuciones con $ito por terceras personas9
Distribu"i)n 2ersiones (robado por
an%raHe A.1 Een Spa%e +spa%eera%iH.com,
4urbo/inu$ Ser*er I.0 Annimo
Tabla %. 7- S1ste+I+ager5 Otras distribuciones
111
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
6.3.1. Requerimientos
5ara po%er utili6ar VA S(stem=mager, necesitamos9
Su'iciente espacio en el ser*i%or %e im7genes +el e&uipo %on%e se *a(an a almacenar las
im7genes %e to%os los ser*i%ores,.
4o%os los ser*i%ores %eben tener caracter)sticas !ar%8are similares, %e lo contrario po%r)amos
tener problemas9 mismo n3mero %e %iscos ( %el mismo tipo +S@S=:=D",, mismas tar#etas %e
re%, c!ipset %e la placa, etc.
5ara instalaciones por re% me%iante 5T", se necesita un ser*i%or %e tftp en el ser*i%or %e
arran&ue +DM@5 e im7genes,, ( tal *e6 un %emonio ser*i%or %e 5T".
rs1nc, tanto en los clientes como en el ser*i%or.
5ara utili6ar el programa pus!image, necesitaremos tener con'igura%o ss0 en los clientes ( el
ser*i%or, con las lla*es %ebi%amente con'igura%as para po%er entrar al sistema sin necesi%a%
%e i%enti'icarse.
6.3.2. Funcionamiento
VA S(stem=mager se basa en un cl7sico mo%elo cliente:ser*i%or, %on%e los clientes son los
e&uipos &ue *amos a instalar, ( el ser*i%or la m7&uina %on%e se guar%an las im7genes %e los clientes.
5or lo tanto, ten%remos %os grupos %e programas %istintos9 para el cliente ( para el ser*i%or.
2na *e6 &ue tenemos instala%o el so't8are en el e&uipo &ue *a(a a actuar como ser*i%or %e
im7genes +to%a la instalacin ( con'iguracin se %etalla en el aparta%o A.?, #unto con las pruebas &ue se
reali6aron,, el siguiente paso es instalar /inu$ en otra m7&uina, uno %e los 'uturos ser*i%ores %el
cluster, ( con'igurarlo9 instalar to%os los ser*icios &ue se *a(an a implantar, con'igurarlos, etc.
@uan%o este ser*i%or RpilotoS +o golden client, en la terminolog)a %e VA S(stem=mager, est
listo ( !a(amos comproba%o &ue 'unciona sin ning3n problema, instalamos en l el so't8are cliente %e
VA S(stem=mager ( e#ecutamos prepareclient. "ste programa e$trae %el sistema to%a la in'ormacin
necesaria para m7s tar%e replicarlo en otros e&uipos9 particionamiento %el %isco %uro, 'ormato %e las
particiones, inter'aces %e re%, %irecciones, tablas %e enrutamiento, etc.
"l siguiente paso es e$traer la imagen %el e&uipo &ue !emos instala%o ( almacenarla en el
ser*i%or %e im7genes. "sto se consigue e#ecutan%o geti+age en el ser*i%or %e im7genes, con la
%ireccin %el golden client ( el nombre &ue le &ueramos %ar a la imagen. Despus, ten%remos &ue
e#ecutar addclients en el ser*i%or para con'igurar &u im7genes se instalar7n en ca%a ser*i%or ( &u =5s
112
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
asignaremos a los nue*os ser*i%ores.
I+agen 6I. 7- S1ste+I+ager5
Instalacin, paso 4
I+agen ;K. 7- S1ste+I+ager5 Instalacin, paso 6
I+agen ;4. 7- S1ste+I+ager5 Instalacin, paso ;
11?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l 3ltimo paso es comen6ar la instalacin %e los ser*i%ores. 4enemos %os opciones9
=nstalacin por re%9 necesitamos un ser*i%or DM@5 &ue asigne =5s a los nue*os e&uipos, (
stos necesitan soportar el arran&ue por re% me%iante el protocolo 5T".
=nstalacin me%iante %iscos %e inicio9 po%emos preparar un %isco o un @DBR- %e arran&ue
%el sistema con los programas +a8eautoinstalldis8ette o +a8eautoinstallcd. "stos %iscos
ser*ir7n para arrancar cual&uiera %e los e&uipos, ( lo 3nico &ue ten%remos &ue mo%i'icar en
ca%a caso es un 'ic!ero /local.cfg &ue contiene los %atos particulares %e ca%a m7&uina
+nombre ( con'iguracin %e la re%,.
4o%o este proceso se e$plica con ma(or %etalle en la seccin A.C %e este traba#o.
6.4. webmin
8ebmin es un programa para la a%ministracin ( monitori6acin remota %e sistemas (
ser*i%ores, basa%o en la 8eb9 el propio 8ebmin lle*a un pe&ueQo ser*i%or 8eb el &ue, tras conectarnos
al e&uipo con cual&uier na*ega%or &ue soporte tablas ( 'ormularios M4/ +( en algunos casos,
#a*ascript (:o applets Ja*a,, nos presenta un men3 con una serie %e con'igura%ores ( monitores para
%i*ersos programas. @a%a uno %e estos con'igura%ores no es m7s &ue un script @0= &ue nos mostrar7
una serie %e 'ormularios con las opciones %e con'iguracin %el programa selecciona%o, para
posteriormente e%itar la con'iguracin %e %ic!o programa +en :etc o %on%e 'uera,.
/a instalacin %e 8ebmin es sumamente sencilla (a &ue no !ace 'alta integrarlo con ning3n otro
programa para &ue 'uncione, al lle*ar su propio ser*i%or 8eb. 4anto el ser*i%or 8eb %e 8ebmin como
los con'igura%ores est7n escritos en 5erl, utili6an%o pa&uetes ( librer)as propios, sien%o as) 5erl el
3nico re&uisito %e 8ebmin.
2no %e los puntos 'uertes %e 8ebmin es su '7cil ampliacin para &ue pue%a con'igurar m7s
programas, (a &ue soporta RpluginsS para aQa%irle m7s con'igura%ores. 4o%o el proceso %e ampliacin
est7 %ebi%amente %ocumenta%o en su p7gina 8eb.
11C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
De esta 'orma, a los con'igura%ores &ue (a lle*a 8ebmin R%e serieS +para *arios aspectos %el
Sistema -perati*o, %iscos RA=D, el ser*i%or 8eb Apac!e, el ser*i%or S45 sen%mail, el D1S bin%...,
!a( &ue aQa%ir to%o un con#unto %e con'igura%ores %e terceras personas, un total %e 1?2 seg3n la
p7gina o'icial, &ue po%emos encontrar '7cilmente en los enlaces %e la 8eb %el propio 8ebmin o
buscan%o en =nternet con cual&uier busca%or. "ntre otros, po%emos encontrar plugins para con'igurar
un cluster /VS, o el ser*i%or %e correo F+ail. "stos plugins son luego '7cilmente instalables en nuestro
sistema %es%e el mismo 8ebmin, (a &ue *an empa&ueta%os en un 'ormato propio &ue 8ebmin nos
permitir7 instalar %es%e el men3 %e con'iguracin.
Veamos por encima el 'uncionamiento %e 8ebmin9
I+agen ;6. web+in5 Men9 principal
"sta es una imagen %el men3 %el sistema %e 8ebmin. /os con'igura%ores se %i*i%en en cinco
categor)as, en la parte superior %e la imagen9
11G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
8ebmin, para la con'iguracin %el propio programa.
s(stem, con programas para la con'iguracin, a%ministracin ( monitori6acin %el Sistema
-perati*o9 con'iguracin %e %ispositi*os %e re%, tablas %e enrutamiento, particiones %e los
%iscos %uros, etc.
ser*ers, para los %istintos ser*i%ores &ue tengamos instala%os9 apac!e, ser*i%ores %e correo, %e
bases %e %atos, etc.
!ar%8are, con monitores %e los peri'ricos +temperatura, *olta#e,, control %e %ispositi*os, etc.
ot!er, %on%e se encuentran los aQa%i%os para 8ebmin &ue no enca#an en ninguna %e las otras
categor)as.
11I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ;;. web+in5 -d+inistracin #1rus IM-P
"sta imagen muestra el aspecto %e un con'igura%or %e 8ebmin, concretamente %e un plugin
para el ser*i%or %e correo @(rus =A5. A&u) se pue%e apreciar cmo to%as las opciones %e
con'iguracin se muestran a tra*s %e tablas ( 'ormularios M4/ estan%ar%, accesibles por re% %es%e
cual&uier na*ega%or M445.
=nstalar 8ebmin en ca%a uno %e los e&uipos %el cluster pue%e ser la 'orma m7s cmo%a %e
tenerlos to%os monitori6a%os ( po%erlos a%ministrar remotamente sin necesi%a% %e entrar por telnet o
ss0 al sistema.
11A
7. Probando el software
Antes %e lan6arnos a instalar to%o un cluster, se %eci%i probar %e 'orma aisla%a algunos %e los
programas ( tecnolog)as a&u) e$puestos, para R!acernos con ellosS ( po%er reali6ar pruebas %e
ren%imiento %e ca%a una %e las partes in%epen%ientemente.
5ara reali6ar las pruebas %ispusimos %e %os e&uipos normales +clnicos, con las siguientes
caracter)sticas9
5entium === L00!6
5laca base con c!ipset V=A
Dos %iscos %uros =D" %e C0b
4ar#etas %e re% "t!ernet 10:100
7.1. Instalacin de GNU/Linux en un equipo
"l primer paso es instalar /inu$ en uno %e los e&uipos. /a instalacin %e un sistema /inu$
&ue%a 'uera %el 7mbito %e este traba#o, ( no se e$plicar7 a&u), remitien%o al lector interesa%o a la
abun%ante bibliogra')a e$istente sobre el tema. Easte %ecir &ue la %istribucin emplea%a para las
pruebas 'ue Debian 012:/inu$ 2.2r? +5otato,, con to%os los parc!es %e seguri%a% %isponibles !asta la
'ec!a ( las actuali6aciones necesarias para !acerla 'uncionar correctamente con un nue*o Hernel %e la
serie 2.C.
7.2. RAID, LVM, ext2 y reiserfs
/o primero &ue %eci%imos probar 'ue el ren%imiento %e los %istintos mto%os %e gestin %e los
%iscos ( los sistemas %e 'ic!eros. Memos reali6a%o to%as las posibles combinaciones %e pruebas %e
ren%imiento %e los sistemas %e arc!i*os e$t2 ( Reiser.S +ambos %isponibles %e serie en el Hernel %e
/inu$ 2.C.$, %irectamente sobre el %isco %uro ( con RA=D (:o /V +tambin %isponibles %e serie en el
Hernel,.
5ara las pruebas se !a utili6a%o el programa bonnieEE. "ste programa simula %os patrones %e
acceso a %isco9
"n primer lugar, crea un 'ic!ero gran%e +en nuestras pruebas, %e G00b, sobre el &ue reali6a
lecturas, escrituras ( b3s&ue%as, secuenciales ( aleatorias, ( por caracteres ( por blo&ues.
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"ste ser)a el uso &ue !ar)a %el %isco una base %e %atos.
"n segun%o lugar, reali6a pruebas %e creacin, acceso ( borra%o e$!austi*o %e gran canti%a% %e
'ic!eros pe&ueQos +<1Yb,. Ser)a el uso %e un ser*i%or 8eb, %e correo o ne8s.
Veamos los resulta%os %e estas pruebas.
"n primer lugar comparamos el ren%imiento %e e$t2 ( reiser's, sin RA=D ni na%a m7s por
%eba#o %e ambos sistemas9
I+agen ;<. #o+parativa5 e$t6 vs. reiserfs !4*6"

120
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"ste primer con#unto %e resulta%os es el correspon%iente al primer patrn %e acceso9 el %e la
base %e %atos. Vemos &ue ambos sistemas est7n mu( iguala%os, si bien e$t2 es ligeramente superior a
reiser en algunos %e los casos.
/a siguiente gr7'ica muestra los resulta%os %el segun%o patrn %e pruebas, el %e creacin (
borra%o %e m3ltiples 'ic!eros pe&ueQos9
121
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ;=. #o+parativa5 e$t6 vs. reiserfs !6*6"

122
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"n este caso, 3nicamente en el borra%o secuencial es m7s r7pi%o e$t2 &ue reiser's +m7s o menos
el %oble %e r7pi%o,. "n el resto %e casos, reiser's es 2@M- m7s r7pi%o &ue e$t2. "sto concuer%a con
los principios %e %iseQo %e reiser, entre los &ue recor%emos &ue estaba el tratar %e acelerar al m7$imo el
tratamiento %e 'ic!eros pe&ueQos.
De esta gr7'ica cabe %estacar tambin la sorpren%ente !omogenei%a% %e los resulta%os %e
reiser's, 'rente a la %ispari%a% %e e$t2. "sto sin %u%a es %ebi%o a la organi6acin en 7rboles EF %el
sistema %e 'ic!eros, &ue asegura unos tiempos %e b3s&ue%a ptimos en to%os los casos ( bastante
pare#os.
"n el siguiente par %e gr7'icas se muestran los resulta%os %e las pruebas %e e$t2 con
RA=D ( /V por %eba#o9
I+agen ;&. #o+parativa5 /-I. E L7M E e$t6 !4*6"
12?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/os resulta%os son los espera%os9 por un la%o, en *arios casos el me#or ren%imiento se obtiene
con RA=D0, (a &ue lee en paralelo %e los %os %iscos; por otro, el peor suele ser con RA=D1 al tener &ue
escribir en to%os.
2n %etalle importante es &ue /V no empeora a penas el ren%imiento, incluso en un
sorpren%ente caso +la escritura secuencial por blo&ues con RA=D, el ren%imiento es me#or con /V
&ue sin /V.
Veamos el resulta%o %e las pruebas sobre 'ic!eros pe&ueQos9
12C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ;?. #o+parativa5 /-I. E L7M E e$t6 !6*6"

12G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"sta *e6 to%os los resulta%os son m7s pare#os. 5arece ser &ue a&u) lo &ue m7s ralenti6a es el
c%igo %el sistema %e 'ic!eros, en lugar %el RA=D (:o /V &ue !a(a por %eba#o.
A!ora repetimos estas mismas pruebas con el sistema %e 'ic!eros Reiser.S, obtenien%o los
siguientes resulta%os9
12I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ;%. #o+parativa5 /-I. E L7M E reiserfs !4*6"
12A
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
/os resulta%os son mu( similares a los obteni%os con e$t2, si bien parece &ue m7s pare#os en
to%os los casos. Sobre 'ic!eros pe&ueQos los resulta%os tambin son m7s pare#os, sin a penas
%i'erencias entre usar o no RA=D ( /V9
12L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen ;I. #o+parativa5 /-I. E L7M E reiserfs !6*6"
12K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"n la siguiente prueba lo &ue !icimos 'ue comparar %irectamente el ren%imiento %e Reiser.S (
e$t2 ba#o RA=D1, el mo%o RA=D &ue m7s nos interesa pues es el &ue nos o'rece re%un%ancia ( por
tanto proteccin %e los %atos contra 'allos en el %isco. "stos 'ueron los resulta%os obteni%os9
I+agen <K. #o+parativa5 /-I. E e$t6 vs. /-I. E reiserfs
1?0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces

De nue*o son unos resulta%os mu( similares a los (a obteni%os al comparar Reiser.S ( e$t2 sin
tener na%a m7s por %eba#o9 el ren%imiento %e ambos sistemas es mu( similar, as) &ue, ante esta
igual%a% %e ren%imiento, nos %ecantar)amos por el sistema con ma(ores prestaciones a ni*el %e
seguri%a%9 el no*e%oso Reiser.S.
"n la 3ltima prueba &ue lle*amos a cabo con sistemas %e 'ic!eros, una *e6 %ecanta%a la balan6a
1?1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
a 'a*or %e Reiser.S, &uisimos comparar el ren%imiento %e Reiser slo, con RA=DB1 ( con RA=D (
/V9
I+agen <4. #o+parativa5 /-I.4 E reiserfs

1?2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Si bien se aprecia una ba#a%a %e ren%imiento al usar RA=D en un par %e casos, bastante notable
en uno %e ellos, en el resto el uso %e RA=DB1 no ralenti6a el sistema, como tampoco lo !ace el aQa%ir
/V a la me6cla. 5or tanto, %eber)amos montar to%os nuestros ser*i%ores con Reiser.S sobre RA=DB1
(, opcionalmente, /V para 'acilitar la %istribucin %el espacio.
1??
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
7.3. Instalacin remota con VA System Imager
@omo el programa %e instalacin remota %e e&uipos &ue m7s se a#ustaba a nuestros
re&uerimientos era VA S(stem=mager, !emos %eci%i%o ponerlo a prueba9 !emos instala%o el so't8are
ser*i%or en un e&uipo %e traba#o &ue (a ten)amos instala%o ( !emos toma%o como base para la
instalacin remota el e&uipo con el &ue !icimos las pruebas %e ren%imiento %e los sistemas %e 'ic!eros,
instalan%o en ste el cliente ( sacan%o una imagen %e l. Vamos a *er el proceso completo9
Antes %e na%a, !a( &ue asegurarse %e &ue cumplimos con los re&uisitos %e so't8are para po%er
e#ecutar VA S(stem=mager. "n el e&uipo ser*i%or necesitaremos instalar9
rs(nc +( asegurarse %e &ue el %emonio ser*i%or est7 e#ecut7n%ose,.
t'tp% +lo mismo,.
s(slinu$ +( p$elinu$, *ienen en el mismo pa&uete,.
"n el cliente tambin !abr7 &ue instalar el rs(nc.
]a po%emos proce%er con la prueba. 5or pasos, ten%remos &ue9
7.3.1. Instalacin del software en el servidor
Descargamos el so't8are %e la 8eb o'icial %el programa, ( !acemos9
cd /usr/src
tar xfI ~/va-systemimager-server-1.4.1.tar.bz2
cd va-systemimager-server
./install
"sto e#ecuta un programa &ue nos guiar7 a tra*s %e la instalacin9
Welcome to VA SystemImager.
This install script may modify the following files and/or directories:
/tftpboot/systemimager/ -- create if necessary and add appropriate
files/links
/tftpboot/pxelinux.cfg/ -- create if necessary and add appropriate
files/links
/etc/services -- add rsync and/or tftp entries if necessary
/etc/inetd.conf -- remove rsync entry if necessary and
add or modify tftp entry if necessary
/etc/rsyncd.conf -- it is assumed that VA SystemImager will
manage this
1?C
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
file and that it will not be used for
anything else
All modified files will be backed up with the .beforesystemimager
extension.
See install -help for command line options.
Install VA SystemImager? (y/[n])
@ontestaremos &ue si +(,.
Ok. Installing VA SystemImager...
Installing files in /usr/sbin/
Installing files in /etc/init.d/
Installing files in /tftpboot/
Installing files in /tftpboot/pxelinux.cfg/
Installing files in /tftpboot/systemimager/
Installing files in /var/spool/systemimager/images/
rsync entries already enabled in /etc/services...
backing up /etc/inetd.conf to /etc/inetd.conf.beforesystemimager...
adding tftp entry to /etc/inetd.conf...
Signalling inetd to re-read it's configuration information:
Signalling inetd to re-read it's configuration information:
creating VA SystemImager brand /etc/rsyncd.conf...
creating soft links to rsync init script...
running rsync init script...
Installing files in /usr/share/doc/va-systemimager-1.4.1/
All done! Please read the manual before using SystemImager.
See /usr/share/doc/va-systemimager-1.4.1/ for all documentation.
vjaguilar:/usr/src/va-systemimager-server-1.4.1#
]a tenemos instala%o el so't8are en el ser*i%or.
7.3.2. Instalacin linux en el golden client
"n este paso ten%r)amos &ue reali6ar la instalacin %e linu$ en el cliente &ue &ueramos RclonarS,
con'iguran%o to%os los programas &ue 'uera necesario. "n nuestro caso, como es una prueba,
simplemente utili6aremos el e&uipo %e las pruebas %e ren%imiento %e RA=D ( sistemas %e 'ic!eros.
1?G
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
7.3.3. Instalacin del software cliente en el golden client
"#ecutamos9
cd /usr/src
tar xfI ~/va-systemimager-client-1.4.1.tar.bz2
cd va-systemimager-client-1.4.1
./installclient
Install VA SystemImager client? (y/[n])
]es
Ok. Installing VA SystemImager client...
Installing files in /usr/share/doc/va-systemimager-1.4.1/
All done! Please read the manual before using SystemImager.
See /usr/share/doc/va-systemimager-1.4.1/ for all documentation.
You must run prepareclient before you can retrieve this clients image.
Do you want to run prepareclient now? ([y]/n)
]es. RprepareclientS instalar7 los 'ic!eros %e con'iguracin necesarios para m7s tar%e replicar la
imagen en el ser*i%or ( en el resto %e e&uipos.
Welcome to the VA SystemImager prepareclient command. This command
may modify the following files to prepare your client for having it's
image retrieved by the imageserver. It will also create the
/etc/systemimager directory and fill it with information about your
golden client, such as the disk partitioning scheme(s).
/etc/services -- add rsync line if necessary
/etc/inetd.conf -- comment out rsync line if necessary
(rsync will run as a daemon until shutdown)
/tmp/rsyncd.conf -- create a temporary rsyncd.conf file with a
[root] entry in it.
All modified files will be backed up with the .beforesystemimager
extension.
See prepareclient -help for command line options.
1?I
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Prepare client for VA SystemImager? (y/[n]):
]es
Ok. Preparing client for VA SystemImager...
Creating /tmp/rsyncd.conf ...
Starting or re-starting rsync as a daemon.....done!
This client is ready to have it's image retrieved.
You must now run the getimage command on the imageserver.
]a est7 prepara%o el e&uipo. A!ora iremos al ser*i%or a recoger su imagen.
7.3.4. Ejecutar getimage en el servidor
De nue*o en el ser*i%or, e#ecutamos9
getimage -golden-client 192.168.130.175 -image prueba
This program will get the prueba system image from "192.168.130.175
making the assumption that all filesystems considered p
of the system image are using ext2, ext3, or reiserfs.
This program will not get /proc, NFS, or other filesystems
not mentioned above.
See getimage -help for command line options.
Continue? ([y]/n):
]es
Retrieving /etc/systemimager/mounted_filesystems from 192.168.130.175 to
check for mounted filesystems...
------------- 192.168.130.175 mounted_filesystems RETRIEVAL PROGRESS
-------------
receiving file list ... done
/
1?A
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
var/spool/systemimager/images/prueba/etc/systemimager/mounted_filesystems
wrote 132 bytes read 260 bytes 784.00 bytes/sec
total size is 146 speedup is 0.37
------------- 192.168.130.175 mounted_filesystems RETRIEVAL FINISHED
-------------
Retrieving image prueba from 192.168.130.175
------------- prueba IMAGE RETRIEVAL PROGRESS -------------
System.map
System.old
bin/
...
var/state/apt/lists/partial/
var/state/logrotate/
wrote 486258 bytes read 373473856 bytes 2570172.60 bytes/sec
total size is 371580912 speedup is 0.99
------------- prueba IMAGE RETRIEVAL FINISHED -------------
Press <Enter> to continue...
]a tenemos una imagen %el cliente en el ser*i%or. /as im7genes se almacenan en %irectorios
ba#o :*ar:spool:s(stemimager:images:<imagen>, ( no tienen ning3n 'ormato especial, son los 'ic!eros
( %irectorios %el cliente sin m7s9
vjaguilar:~# cd /var/spool/systemimager/images/
vjaguilar:/var/spool/systemimager/images# ls
ACHTUNG CUIDADO DO_NOT_TOUCH_THESE_DIRECTORIES README prueba
vjaguilar:/var/spool/systemimager/images# ls prueba
System.map boot etc initrd mnt sbin var
System.old cdrom floppy lib proc tmp vmlinuz
bin dev home lost+found root usr vmlinuz.old
vjaguilar:/var/spool/systemimager/images#
5ulsamos "nter ( continuamos con la instalacin9
IP Address Assignment
---------------------
There are four ways to assign IP addresses to the client systems on an
ongoing basis:
1) static_dhcp -- A DHCP server will assign the
same static address each time to clients
installed with this image. Also see the
makedhcpstatic command.
1?L
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
2) dynamic_dhcp -- A DHCP server will assign IP
addresses dynamically to clients installed
with this image. They may be assigned a
different address each time.
3) static -- The IP address the client uses
during autoinstall will be permanently
assigned to that client.
4) replicant -- Don't mess with the network
settings in this image. I'm using it as a
backup and quick restore mechanism for a
single machine.
Which method do you prefer? [1]:
"n este caso no nos *amos a calentar la cabe6a instalan%o un ser*i%or DM@5 para una prueba,
a3n &ue probablemente para pro%uccin sea la opcin m7s cmo%a.
5ulsamos ^?V9
You have chosen method 3 for assigning IP addresses.
Are you satisfied? ([y]/n):
]es
Would you like to run the addclients utility now? (y/[n]):
"ste coman%o con'igura los scripts &ue instalar7n ca%a una %e las m7&uinas remotas. 5ulsamos
V(W9
Welcome to the VA SystemImager addclients utility
---------------------------------------------------
This utility has 3 sections.
Section 1" will ask you for your hostname information.
1?K
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Section 2" will allow you to create softlinks from each
client hostname to your master script in the
/tftpboot/systemimager/ directory.
Example: www297.sh -> web_server_image_v1.master
Section 3" will ask you for IP address information that will
be combined with the hostname information provided in Section 1
to create entries in /etc/hosts for each of these same clients.
New entries will be appended to the end of /etc/hosts. If you
specify new hostnames for existing IP addresses, those entries
will be re-written in place to reflect the new host names.
Continue? ([y]/n):
]es
addclients -- Section 1 (hostname information)
----------------------------------------------
The next series of questions will be used to create a range
of hostnames. You will be asked for your domain name, the
base host name, a beginning number, and an ending number.
For example, if you answer:
domain name = systemimager.org
base host name = www
starting number = 7
ending number = 11
Then the result will be a series of hostnames that looks like this:
www7.systemimager.org
www8.systemimager.org
www9.systemimager.org
www10.systemimager.org
www11.systemimager.org
What is your domain name? []:
"l %ominio ser7 Rrenr.esS.
What is the base host name that you want me to use? []:
1C0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l nombre %el ser*i%or prece%er7 al %ominio ( se le aQa%ir7 un n3mero para ca%a cliente
%istinto. 2tili6aremos RpruebaS.
What number should I begin with? []:
=nicio %e la serie9 1
What number should I end with? []:
KK
I will work with hostnames: prueba1 through prueba99
in the domain: renr.es
Are you satisfied? (y/[n]):
]es
addclients -- Section 2 (soft links to master script)
-----------------------------------------------------
Would you like me to create soft links to a master script so
that hosts:
prueba1 through prueba99
can be autoinstalled with that image? ([y]/n):
"l Rmaster scriptS es el script &ue se encargar7 %e instalar ca%a cliente cuan%o arran&uen por
primera *e6. "ste script es genrico para to%os ellos ( lo !a genera%o VA S(stem=nstaller por nosotros.
@rean%o enlaces para ca%a uno %e los clientes se %escargar7 ( e#ecutar7 el mismo script en to%os ellos,
aun &u po%emos a'inar m7s la con'iguracin %e ca%a cliente si 'uera necesario crean%o copias para
ca%a cliente ( mo%i'ic7n%olas a nuestro gusto.
Here is a list of available images:
prueba
1C1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Which image would you like these hosts to receive? [prueba]:
"n nuestro caso como slo tenemos una imagen, no tenemos muc!a eleccin a la !ora %e
instalar...
Your soft links have been created.
Press <Enter> to continue...
"l so't8are m)nimo para arrancar ( con'igurar ca%a cliente +el Hernel ( algunos programas, se
encuentra en el %irectorio :t'tpboot, &ue a su *e6 est7 sien%o ser*i%o por el %emonio t'tp%. Realmente,
el protocolo 4.45 slo se utili6ar7 si elegimos arrancar por re% +utili6an%o 5T",. Si, como en nuestro
caso, arrancaremos los clientes %es%e %is&uette, el Hernel ( %em7s programas %e arran&ue se
encontrar7n en el %isco ( el resto %e so't8are ( scripts se recoger7n %el ser*i%or mei%ante RS]1@.
"n el %irectorio :t'tpboot tenemos9
vjaguilar:~# ls /tftpboot/
initrd.gz kernel pxelinux.cfg systemimager
vjaguilar:~# ls /tftpboot/systemimager/
hosts prueba25.sh prueba45.sh prueba65.sh prueba85.sh
mkraid prueba26.sh prueba46.sh prueba66.sh prueba86.sh
mkreiserfs prueba27.sh prueba47.sh prueba67.sh prueba87.sh
prepareclient prueba28.sh prueba48.sh prueba68.sh prueba88.sh
prueba.master prueba29.sh prueba49.sh prueba69.sh prueba89.sh
prueba1.sh prueba3.sh prueba5.sh prueba7.sh prueba9.sh
prueba10.sh prueba30.sh prueba50.sh prueba70.sh prueba90.sh
prueba11.sh prueba31.sh prueba51.sh prueba71.sh prueba91.sh
prueba12.sh prueba32.sh prueba52.sh prueba72.sh prueba92.sh
prueba13.sh prueba33.sh prueba53.sh prueba73.sh prueba93.sh
prueba14.sh prueba34.sh prueba54.sh prueba74.sh prueba94.sh
prueba15.sh prueba35.sh prueba55.sh prueba75.sh prueba95.sh
prueba16.sh prueba36.sh prueba56.sh prueba76.sh prueba96.sh
prueba17.sh prueba37.sh prueba57.sh prueba77.sh prueba97.sh
prueba18.sh prueba38.sh prueba58.sh prueba78.sh prueba98.sh
prueba19.sh prueba39.sh prueba59.sh prueba79.sh prueba99.sh
prueba2.sh prueba4.sh prueba6.sh prueba8.sh raidstart
prueba20.sh prueba40.sh prueba60.sh prueba80.sh raidstop
prueba21.sh prueba41.sh prueba61.sh prueba81.sh
systemimager.exclude
prueba22.sh prueba42.sh prueba62.sh prueba82.sh updateclient
prueba23.sh prueba43.sh prueba63.sh prueba83.sh
prueba24.sh prueba44.sh prueba64.sh prueba84.sh
1C2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4o%os los 'ic!eros pruebaF.s! son enlaces a prueba.master. A&u) es %on%e po%r)amos %eci%ir
sustituir alg3n enlace por una copia mo%i'ica%a %el 'ic!ero master original, para a'inar la con'iguracin
%e ese cliente en concreto.
@ontinuamos la instalacin pulsan%o "nter9
addclients -- Section 3 (adding or modifying /etc/hosts entries)
----------------------------------------------------------------
It is necessary to have an entry for each client in /etc/hosts.
I will ask you for your clients' IP addresses one subnet at a time.
Would you like me to make these entries for you? ([y]/n):
"ste paso crear7 un 'ic!ero :etc:!osts con los nombres %e to%os los clientes a instalar ( sus
%irecciones =59
addclients -- Section 3 (adding or modifying /etc/hosts entries --
continued...)
-------------------------------------------------------------------------
-------
subnet 1
The first host in subnet 1 will be: prueba1
What is the starting IP address for subnet 1? []:
/a %ireccin =5 para el primer cliente9 1K2.1IL.1?0.G0.
What is the ending IP address? []:
/a %el 3ltimo. /as %irecciones se toman %e una en una !asta cubrir to%os los clientes &ue
!a(amos %ic!o &ue *amos a instalar. Si no !ubiera espacio en el rango =5 selecciona%o, se nos
preguntar7 por las =5s %e la Rsubnet 2R.
=ntro%ucimos la %ireccin 1K2.1IL.1?0.1G0.
I will work with IP addresses: 192.168.130.50 through 192.168.130.150
Are you satisfied? (y/[n]):
1C?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
]es
These entries have been added to /etc/hosts.
Press <Enter> to continue...
Si !acemos a!ora un cat %e :etc:!osts en el ser*i%or, tenemos9
192.168.130.50 prueba1.renr.es prueba1
192.168.130.51 prueba2.renr.es prueba2
192.168.130.52 prueba3.renr.es prueba3
192.168.130.53 prueba4.renr.es prueba4
...
192.168.130.147 prueba98.renr.es prueba98
192.168.130.148 prueba99.renr.es prueba99
7.3.5. Creacin del disco de arranque para instalar los clientes
5reparamos un %is&uete %e arran&ue para los clientes con9
vjaguilar:~# makeautoinstalldiskette
This program assumes that you have a 1.44MB floppy drive and that
it is /dev/fd0. You can use the -floppy command line option to
change this value.
If you do use -floppy, this command will run non-interactively!!!
Use the -help option to see all options.
Insert your floppy diskette now. This will overwrite all
information on your diskette.
Continue? (y/[n]):
]es.
Formatting floppy as 1.44MB ...
Measuring drive 0`s raw capacity
warmup cycle: 0 186096 186096
1CC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
...
In order to avoid this time consuming measurement in the future,
add the following line to /etc/driveprm:
drive0: deviation=-74560
CAUTION: The line is drive and controller specific, so it should be
removed before installing a new drive 0 or floppy controller.
Formatting cylinder 10, head 0
...
Verifying cylinder 79, head 1
mformat -s18 -t80 -h2 -S2 -M512 a:
Creating temporary mount point...
Mounting floppy...
Copying /tftpboot/initrd.gz to floppy.
Copying /tftpboot/kernel to floppy.
Copying /tftpboot/pxelinux.cfg/syslinux.cfg to floppy.
Copying /tftpboot/pxelinux.cfg/message.txt to floppy.
Un-mounting floppy...
Removing temporary mount point...
Using syslinux to make floppy bootable...
Done!
5or %e'ecto, el %isco usar7 DM@5 para obtener la %ireccin =5 %el cliente. De esta 'orma, con un
3nico %isco po%remos arrancar to%os los clientes, a3n &ue pre*iamente !abremos teni%o &ue con'igurar
en el ser*i%or DM@5 &u =5 correspon%e a ca%a e&uipo asoci7n%osela a su %ireccin A@. 5ara e*itar
este comportamiento, po%emos crear un 'ic!ero :local.c'g en el %is&uette &ue el programa %e
instalacin buscar7 antes %e tratar %e obtener una =5 me%iante DM@5. "n este 'ic!ero le in%icaremos
to%os los par7metros %e re% necesarios para con'igurar la m7&uina, como su =5, %ireccin ( m7scara %e
la re%, pasarela por %e'ecto, %ireccin %el ser*i%or %e VA S(stem=mager, etc9
#
# VA SystemImager - Copyright (C) 1999-2001 Brian Elliott Finley
<brian@valinux.com>
#
# This file is: local.cfg
#
# You can use this file as a template by copying it to the floppy
diskette for the desired
# machine. Be sure to edit the values below, replacing each of them
with the appropriate
# values for your site.
#
HOSTNAME=prueba5
DOMAINNAME=renr.es
DEVICE=eth0
IPADDR=192.168.130.54
NETMASK=255.255.255.0
1CG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
NETWORK=192.168.130.0
BROADCAST=192.168.130.255
GATEWAY=192.168.130.1
GATEWAYDEV=eth0
# IP address of the imageserver
IMAGESERVER=192.168.133.175
2na *e6 !ec!o to%o esto, (a po%emos arrancar el or%ena%or a instalar con el %isco %e
autoinstalacin &ue acabamos %e crear9 %espus %e arrancar, el e&uipo no es capa6 %e conectarse con el
ser*i%or %e im7genes +1-4A9 esto ocurri con la *ersin 1.C.1 %e VA S(stem=nstaller. 7s tar%e,
%urante la reali6acin %e este traba#o, apareci la *ersin 1.G.0 &ue corrigi este problema,.
7.4. CODA
De los sistemas %e 'ic!eros por re%, %eci%imos probar @-DA por ser el m7s no*e%oso %e los
&ue cont7bamos con !ar%8are capa6 %e soportar9 1.S ( Samba son bastante comunes ( (a ten)amos
e$perienca +buena, con ambos; por su parte, el no*e%oso 0.S necesita %e controla%oras ( %iscos fibre
c0annel, mu( caros ( %e los &ue no %ispon)amos.
@ontinuan%o con nuestro an7lisis incremental, esta *e6 *amos a apro*ec!ar la imagen %e un
sistema /inu$ b7sico &ue tenemos en VA S(stem =mager para instalarla en %os e&uipos, en uno %e los
cuales instalaremos m7s tar%e el ser*i%or %e @-DA ( en el otro un cliente, a%em7s %e instalar otro en
nuestra estacin %e traba#o.
5reparamos el ser*i%or con las siguientes particiones9
1.s8ap +10b,
2.e$ten%i%a +resto %el %isco,
G.rai6 +10b,
I.particin %e %atos co%a +1L0b,
A.RV +CP %e 1L0b, >10b,
L.log RV +pe&ueQa, C0b,
5ara instalar @-DA en los ser*i%ores ba#amos el c%igo 'uente %e la 3ltima *ersin, ( como
estaba prepara%o para Debian, compilamos %irectamente a pa&uetes %ebian e#ecutan%o el programa
dp8g>buildpac8age en el %irectorio con el c%igo 'uente %e @-DA. 2na *e6 !ec!o esto, instalamos los
pa&uetes con dp8g >i.
1CI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
7.4.1. El servidor CODA
5ara con'igurar el ser*i%or %ipsonemos %el script vice>setup. Se po%r)a con'igurar to%o a mano,
pero es una tarea larga ( te%iosa. "s pre'erible con'igurarlo to%o autom7ticamente (, m7s tar%e si !ace
'alta, a#ustar los 'ic!eros genera%os.
prueba1:/home/vicente# vice-setup
Welcome to the Coda Server Setup script!
You already have a file /etc/coda/server.conf!
Continuning will remove that file.
Do you want to continue? [yes/no] yes
Setting up config files for a coda server.
Do you want the file /etc/coda/server.conf created? [yes]
What is the root directory for your coda server? [/vice]
Setting up /vice.
Directories under /vice are set up.
Is this the master server, aka the SCM machine? (y/n)
]es. "l S@ es el ser*i%or maestro. Al slo %isponer %e uno, ser7 tambin maestro.
Setting up tokens for authentication.
The following token must be identical on all servers.
Enter a random token for update authentication :
=ntro%ucimos una palabra %e e$7ctamente oc!o letras como cla*e. 5or e#emplo, Rele'anteS.
The following token must be identical on all servers.
Enter a random token for auth2 authentication :
De nue*o intro%ucimos una palabra %e oc!o letras. 5ue%e ser la misma %e antes, aun&ue no
ser)a recomen%able por moti*os %e seguri%a%.
The following token must be identical on all servers.
Enter a random token for volutil authentication :
] otra *e6 m7s.
1CA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
tokens done!
Setting up the file list for update client
Filelist for update ready.
/etc/services already has new services registered! Good.
/etc/services ready for Coda
Now installing files specific to the SCM...
Setting up servers file.
Enter an id for the SCM server. (hostname prueba1)
The serverid is a unique number between 0 and 255.
You should avoid 0, 127, and 255.
serverid:
A!ora tenemos &ue elegir el i%enti'ica%or %el ser*i%or. 5or e#emplo, el 1.
done!
Initializing the VSGDB to contain the SCM as E0000100
/vice/db/VSGDB set up
Setting up ROOTVOLUME file
Enter the name of the rootvolume (< 32 chars) :
1ombre para el %ispositi*o rai6. =ntro%ucimos RrootS.
Setting up users and groups for Coda
You need to give me a uid (not 0) and username (not root)
for a Coda System:Administrator member on this server,
(sort of a Coda super user)
Enter the uid of this user:
2=D %el sistema %el usuario &ue &ueremos &ue tenga permisos %e a%ministra%or. iramos en
/etc/passwd el 2=D %e nuestro usuario. "n este caso, era el 1000.
Enter the username of this user:
1ombre %el usuario9 R*icenteS. A!ora se crear7n los accesos en @-DA para &ue el usuario
*icente pue%a a%ministrar la particin. 5or %e'ecto, se asigna la contraseQa Rc!angemeS.
1CL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Going to rebuild the protection databases
moving /vice/db/prot_users.db to /vice/db/prot_users.db.old
moving /vice/db/prot_index.db to /vice/db/prot_index.db.old
An initial administrative user vicente (id 1000)
with Coda password changeme now exists.
A server needs a small log disk partition, preferrably on a disk by
itself. It also needs a metadata partition of approx 4% of you filespace.
For trial purposes you may give oridnary files instead of raw
partitions. Keep all size small if you do this.
Production servers will want partitions for speed.
-------------------------------------------------------
WARNING: you are going to play with your partitions now.
verify all answers you give.
-------------------------------------------------------
WARNING: these choices are not easy to change once you are up and
running.
Are you ready to set up RVM? [yes/no]
Vamos a con'igurar las particiones %e %atos, log ( transacciones. @ontestamos &ue si.
What is your log partition?
"n nuestro caso, :%e*:!%aL.
The log size must be smaller than you log partition. We
recommend not more than 30M log size, and 2M is a good choice.
What is your log size? (enter as e.g. '2M')
?0.
What is your data partition (or file)?
/a particin %e %atos ser7 :%e*:!%aA.
1CK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
The data size must be approx 4% of you server file space. We
have templates for servers of approx: 500M, 1G, 2.2G, 3.3G, 8G
(you can store less, but not more on such servers).
The corresponding data sizes are 22M, 44M, 90M, 130M, 315M.
Pick one of the defaults, otherwise I will bail out
What is the size of you data partition (or file)
[22M, 44M, 90M, 130M, 200M, 315M]:
"stos son los *alores para los &ue *a prepara%o vice>setup. Se po%r)an crear particiones
ma(ores, pero !abr)a &ue a#ustar to%os los par7metros a mano. "legimos la opcin %e ma(or tamaQo,
?1G.
--------------------------------------------------------
WARNING: DATA and LOG partitions are about to be wiped.
--------------------------------------------------------
--- log area: /dev/hda8, size 30M.
--- data area: /dev/hda7, size 315M.
Proceed, and wipe out old data? [y/n]
]es.
LOG file has been initialized!
Rdsinit will initialize data and log.
This takes a while.
rvm_initialize succeeded.
Going to initialize data file to zero, could take awhile.
done.
rds_zap_heap completed successfully.
rvm_terminate succeeded.
RVM setup is done!
Your server directories will hold the files (not directories).
You can currently only have one directory per disk partition.
Where shall we store your file data [/vicepa]?
Shall I set up a vicetab entry for /vicepa (y/n) y
Select the maximum number of files for the server.
[256K, 1M, 2M, 16M]:
1G0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
1I.
Server directory /vicepa is set up!
Congratulations: your configuration is ready...and now
to get going do the following:
- start the auth2 server as: auth2
- start rpc2portmap as: rpc2portmap
- start updatesrv as: updatesrv
- start updateclnt as: updateclnt -h prueba1
- start the fileserver: startserver &
- wait until the server is up: tail -f /vice/srv/SrvLog
- create your root volume: createvol_rep root E0000100 /vicepa
- setup a client: venus-setup prueba1 20000
- start venus: venus
- enjoy Coda.
- for more information see http://www.coda.cs.cmu.edu.
prueba1:/home/vicente#
/lega%os a este punto (a est7 to%o prepara%o para lan6ar los %emonios ( poner nuestro ser*i%or
@-DA a 'uncionar. "n primer lugar !a( &ue lan6ar el %emonio aut!. @omo !emos compila%o el
pa&uete para Debian, se nos !a instala%o un script %e inicio en /etc/init.d/auth2.init, pero no
'unciona (a &ue contiene un error. Deberemos mo%i'icar la l)nea CG para a#ustar el pat! al %irectorio
para 'ic!eros Rcerro#oS +locH,, &ue en Debian es /var/lock.
4ras esta mo%i'icacin, (a po%emos arrancar el %emonio9
prueba1:/home/vicente# /etc/init.d/auth2.init start
Starting auth2: /usr/sbin/auth2 done.
/os siguientes ser*icios a lan6ar son rpc2portmap, up%atesr* ( up%ateclnt &ue se lan6an to%os
con el script %e inicio /etc/init.d/coda-update en el &ue, %e nue*o, !a( un error9 !a( &ue cambiar
Lvicedir por /vice. 2na *e6 corregi%o el problema, lan6amos los programas9
prueba1:/etc/init.d# /etc/init.d/coda-update start
Starting /usr/sbin/rpc2portmap...
Starting /usr/sbin/updatesrv...
Starting /usr/sbin/updateclnt...
Creating /vice/spool
A!ora !a( &ue lan6ar el ser*i%or en s), el resto eran programas %e apo(o. De nue*o, nos
1G1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
encontramos con un error similar al %e auth2.ini, esta *e6 en la l)nea ?2 %e codasrv.init. /o
corregimos ( lan6amos el ser*i%or9
prueba1:/etc/init.d# ./codasrv.init start
Starting codasrv: codasrv.
"n teor)a, nuestro sistema @-DA (a est7 'uncionan%o. 5ara comprobar si to%o *a bien po%emos
ec!arle un *ista6o al 'ic!ero %e bit7cora /vice/srv/SrvLog9
prueba1:/etc/init.d# tail -f /vice/srv/SrvLog
20:00:07 New SrvLog started at Tue Jun 12 20:00:07 2001
20:00:07 Resource limit on data size are set to 2147483647
20:00:07 RvmType is Rvm
20:00:07 Main process doing a LWP_Init()
20:00:07 Main thread just did a RVM_SET_THREAD_DATA
20:00:07 Setting Rvm Truncate threshhold to 5.
Partition /vicepa: inodes in use: 0, total: 16777216.
20:00:50 Partition /vicepa: 8210168K available (minfree=5%), 7751488K
free.
20:00:50 The server (pid 622) can be controlled using volutil commands
20:00:50 volutil -help will give you a list of these commands
20:00:50 If desperate,
kill -SIGWINCH 622" will increase debugging level
20:00:50 kill -SIGUSR2 622" will set debugging level to zero
20:00:50 kill -9 622" will kill a runaway server
20:00:51 VCheckVLDB: could not open VLDB
20:00:51 VInitVolPackage: no VLDB! Please create a new one.
20:00:51 Vice file system salvager, version 3.0.
20:00:51 SanityCheckFreeLists: Checking RVM Vnode Free lists.
20:00:51 DestroyBadVolumes: Checking for destroyed volumes.
20:00:51 Salvaging file system partition /vicepa
20:00:51 Force salvage of all volumes on this partition
20:00:51 Scanning inodes in directory /vicepa...
20:00:51 SalvageFileSys completed on /vicepa
20:00:51 Attached 0 volumes; 0 volumes not attached
20:00:51 CheckVRDB: could not open VRDB
lqman: Creating LockQueue Manager.....LockQueue Manager starting .....
20:00:51 LockQueue Manager just did a rvmlib_set_thread_data()
done
20:00:51 CallBackCheckLWP just did a rvmlib_set_thread_data()
20:00:51 CheckLWP just did a rvmlib_set_thread_data()
1G2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
20:00:51 ServerLWP 0 just did a rvmlib_set_thread_data()
20:00:51 ServerLWP 1 just did a rvmlib_set_thread_data()
20:00:51 ServerLWP 2 just did a rvmlib_set_thread_data()
20:00:51 ServerLWP 3 just did a rvmlib_set_thread_data()
20:00:51 ServerLWP 4 just did a rvmlib_set_thread_data()
20:00:51 ServerLWP 5 just did a rvmlib_set_thread_data()
20:00:51 ResLWP-0 just did a rvmlib_set_thread_data()
20:00:51 ResLWP-1 just did a rvmlib_set_thread_data()
20:00:51 VolUtilLWP 0 just did a rvmlib_set_thread_data()
20:00:51 VolUtilLWP 1 just did a rvmlib_set_thread_data()
20:00:51 Starting SmonDaemon timer
20:00:51 File Server started Tue Jun 12 20:00:51 2001
4an slo nos &ue%a un paso, &ue es crear el *olumen rai6. "sto lo !acemos con9
createvol_rep root E0000100 /vicepa
"l resulta%o es este9
prueba1:/home/vicente# createvol_rep root E0000100 /vicepa
Getting initial version of /vice/vol/BigVolumeList.
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
Servers are (prueba1 )
HexGroupId is 7f000000
creating volume root.0 on prueba1 (partition /vicepa)
V_BindToServer: binding to host prueba1.renr.es
V_BindToServer: binding to host prueba1.renr.es
setlogparms: Bad VolumeId root
Fetching volume lists from servers:
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
1G?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1.renr.es
GetVolumeList finished successfully
prueba1 - success
V_BindToServer: binding to host prueba1
VLDB completed.
<echo root 7f000000 1 1000001 0 0 0 0 0 0 0 E0000100 >>
/vice/db/VRList>
V_BindToServer: binding to host prueba1
VRDB completed.
Do you wish this volume to be Backed Up (y/n)? [n]
prueba1:/home/vicente#
7.4.2. El cliente CODA
/a instalacin %el cliente es m7s sencilla, (a &ue se inclu(e un programa R%ebiani6a%oS para
con'igurarlo9 na%a m7s instalar el pa&uete en el cliente, se nos *an presentan%o una serie %e pantallas
con las opciones %isponibles para ir con'iguran%o el cliente9
Debian Configuration
Configuring Coda-client

The Coda client needs to talk to servers in order to do anything
useful
The given default testserver.coda.cs.cmu.edu is a public server at
CMU which can be used for testing a successful installation.

If this is the first time you are setting up a Coda client it is
advised to connected to the testserver. However Coda's network
protocol
doesn't work through (masquerading) firewalls, and in that case you
need to set up your own Coda server and specify it's name or ip
address
here.

If you want to specify multiple servers, separate them with comma's,
like server1.mydomain.com,server2.mydomain.com.

<Ok>
1GC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces



5ulsamos R-HS.
Debian Configuration
Configuring Coda-client
Initial servers to connect to.

testserver.coda.cs.cmu.edu________

<Ok> <Cancel>



"sta es la %ireccin %el ser*i%or. "n nuestro caso, Rprueba1S.
Debian Configuration
Configuring Coda-client

Coda uses on disk caching of files. This reduces network traffic and
#
also allows the Coda client to provide cached files when there is no
network connectivity available.

This value is specified in the number of 1 kilobyte diskblocks, the
suggested default "100000" would allow Coda to cache 100 Megabytes of
data. The files are stored in /var/cache/coda. The smallest useable
cachesize is probably around 10-20MB. With large cachesizes (300MB+)
the Coda client is sometimes a bit slow when it scans through the
cache.

This limit is a oft-limit', Coda can use more space because it makes
backup copies of modified files before reintegration, and the kernel
protocol allows the cachemanager to only check the size of written

<Ok>

1GG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces


A&u) se nos e$plica el uso %e la cac! %e @-DA. "l siguiente paso ser7 %eci%ir cu7nto espacio
%e %isco %e%icaremos a esta cac!9
Debian Configuration
Configuring Coda-client
Amount of diskspace used for caching.

100000________________________________

<Ok> <Cancel>



Aceptamos el *alor por %e'ecto.
Debian Configuration
Configuring Coda-client

/dev/cfs0 missing

You do not yet have /dev/cfs0. After the installation is completed,
please run `cd /dev ; ./MAKEDEV cfs0' to create it.

<Ok>



A&u) se nos a*isa %e &ue no e$iste en nuestro sistema el %ispositi*o :%e*:c's0 &ue utili6an
algunos %e los %emonios %e @-DA para comunicarse entre s). As) &ue lo creamos tal ( como se nos
in%ica9
1GI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
cd /dev ; ./MAKEDEV cfs0
2na *e6 !ec!o esto, ( apo%emos lan6ar el cliente9
vjaguilar:~# /etc/init.d/coda-client start
Starting /usr/sbin/venus...
Detatching to start /usr/sbin/venus...done.
]a tenemos instala%o el cliente @-DA en nuestra m7&uina, con los %irectorios comparti%os ba#o
/coda en el rai6.
Realiamos las pruebas ob*ias %e crear 'ic!eros en el cliente, %esconectarlo %e la re%, crear
entonces 'ic!eros en el ser*i%or (:o el cliente ( *ol*er a conectar la re% ( las actuali6aciones se lle*aron
a cabo %e 'orma autom7tica ( completamente transparente. 5or a!ora, to%o !a 'unciona%o a la
per'eccin.
7.4.3. Pruebas de rendimiento
@on el cliente ( el ser*i%or (a instala%os ( 'uncionan%o, nos %ispusimos a reali6ar unas pruebas
%e ren%imiento. @omo no sab)amos mu( bien cmo poner a prueba un sistema %e 'ic!eros %istribui%o,
%eci%imos probar con el mismo programa &ue utili6amos para las pruebas %e RA=D9 el bonnieEE. 5ero
%urante las pruebas obtu*imos este error9
vjaguilar@vjaguilar:~$ cd /coda
vjaguilar@vjaguilar:/coda$ /usr/sbin/bonnie
Writing with putc()...done
Writing intelligently...done
Rewriting...done
Reading with getc()...done
Reading intelligently...done
start `em...done...done...done...
Create files in sequential order...Can't create file 0006143k5tJK4
Cleaning up test directory after error.
Bonnie: drastic I/O error (rmdir): Dispositivo no configurado
4ras esto, cual&uier intento %e acceso al %irectorio /coda tambin %aba un error. 4o%o el
sistema cliente @-DA se !ab)a *eni%o aba#o.
1GA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"n el log %el cliente en /var/log/coda/venus.err tenemos esto9
16:09:21 fatal error -- fsobj::dir_Create: (0006143k5tJK4,
7f000000.3088.466c) Create failed!
16:09:21 RecovTerminate: dirty shutdown (1 uncommitted transactions)
Assertion failed: 0, file fso_dir.cc, line 94
Sleeping forever. You may use gdb to attach to process
28521.
] el %el ser*i%or9
12:18:29 VAllocFid: volume disk uniquifier being extended
12:18:42 ****** WARNING entry at 0x8165b60 already has deqing set!
12:19:01 GrowVnodes: growing Small list from 6144 to 6400 for volume
0x1000001
12:19:18 ****** WARNING entry at 0x8165b60 already has deqing set!
12:19:18 Create returns 27 on 0006177JZlb2jqF9wJ
(0x1000001.0x3088.0x1865)
1a%a nos in%ica la posible causa %el problema.
4ras %etener los %emonios, %esmontar /coda ( reiniciar otra *e6 to%os los ser*icios, to%o *ol*i
a la normali%a%, pero el problema se *ol*)a a repetir tras cual&uier e#ecucin posterior %e bonnieEE.
Antes %e continuar %escribien%o las pruebas, &ueremos !acer !incapi en &ue esto no es un
error %e bonnieEE, si no un error %e @-DA, ( 0RAV". Si bien bonnieEE no es un programa para
testear sistemas %e 'ic!eros %istribui%os en re% si no sistemas %e 'ic!eros normales, asenta%os
%irectamente sobre el %isco %uro, ante cual&uier sobrecarga o intento %e acceso incorrecto o cual&uier
otro problema &ue !a(a po%i%o pro*ocar bonnie, @-DA %eber)a !aber %a%o un mensa#e %e error (
seguir 'uncionan%o, en lugar %e 'allar estrepitosamente como !a !ec!o a&u). "ste problema (a ser)a una
ra6n su'iciente para no emplear @-DA en un sistema %e alta %isponibili%a% serio, a3n &ue lo m7s
probable es &ue el error &ue !a pro*oca%o bonnie no se llegue nunca a pro*ocar me%iante un uso
normal %el sistema.
2na *e6 !ec!a esta aclaracin, continuamos %escribien%o el resto %e pruebas &ue reali6amos
con @-DA.
"n primer lugar, borramos los 'ic!eros &ue &ue%aron en /coda tras las pruebas con bonnieEE.
1uestra sorpresa 'u lo 2@M- &ue se tar% en reali6ar el borra%o.
1GL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l %irectorio conten)a GCIK 'ic!eros, &ue ocupaban un total %e 22LYb9
vjaguilar@vjaguilar:/coda$ ls Bonnie.212/ | wc -l
5469
vjaguilar@vjaguilar:/coda$ du -hsc Bonnie.212/
228k Bonnie.212
228k total
"sto, entre otras cosas, nos !i6o suponer &ue el 'allo se pro%u#o %urante las pruebas %e creacin
( borra%o masi*o %e 'ic!eros pe&ueQos. 5or lo tanto las pruebas anteriores %e accesos aleatorios a
'ic!eros gran%es se pasaron sin problemas.
"l borra%o %e este %irectorio, &ue no %eber)a tomar m7s &ue unos segun%os, nos lle* un cuarto
%e !ora9
vjaguilar@vjaguilar:/coda$ time rm -rf Bonnie.212/
real 15m14.909s
user 0m0.090s
sys 0m0.460s
vjaguilar@vjaguilar:/coda$
"sta lentitu% pue%e ser %ebi%a a las continuas actuali6aciones contra el ser*i%or. 4al *e6, @-DA
!a(a i%o a*isan%o al ser*i%or %el borra%o %e ca%a uno %e los GCIK 'ic!eros, uno a uno, en lugar %e
in%icar &ue se !a borra%o to%o el sub%irectorio. "n cual&uier caso, sea por lo &ue sea, esto in%ica otro
punto 'lo#o %e @-DA9 es mu( lento en operaciones con 'ic!eros pe&ueQos.
4ras esta prueba %e borra%o, !icimos la siguiente prueba %e lectura:escritura9 copiamos el
arc!i*o tar con los 'uentes %el n3cle %e linu$ a la particin %e @-DA, ( tras ello, comprobamos los
tiempos %e %escompresin %el arc!i*o %es%e el %irectorio remoto. "stos 'ueron los resulta%os9
@opiamos el 'ic!ero9
vicente@prueba2:/coda$ time cp /home/vicente/linux-2.4.5.tar.bz2 .
real 0m3.228s
user 0m0.010s
sys 0m0.210s
vjaguilar@vjaguilar:~$ ls -l /coda/
total 21004
-rw-r--r-- 1 vjaguila nogroup 21508430 jun 13 15:27 linux-
2.4.5.tar.bz2
1GK
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4res segun%os para copiar 21b por la re% no es un tiempo e$cesi*o, tenien%o en cuenta
a%em7s las sobrecargas %el protocolo ( las sincroni6aciones cliente:ser*i%or en @-DA.
Reali6amos las pruebas %e %escompresin repeti%as *eces9
vjaguilar@vjaguilar:~$ time tar xfI /coda/linux-2.4.5.tar.bz2 ; rm -rf
linux
; time tar xfI /coda/linux-2.4.5.tar.bz2
real 0m37.775s
user 0m29.430s
sys 0m1.440s
real 0m34.342s
user 0m29.420s
sys 0m2.160s
vjaguilar@vjaguilar:~$ time tar xfI /coda/linux-2.4.5.tar.bz2 ; rm -rf
linux
; time tar xfI /coda/linux-2.4.5.tar.bz2
real 0m47.812s
user 0m31.140s
sys 0m8.180s
real 0m44.378s
user 0m30.560s
sys 0m6.940s
vjaguilar@vjaguilar:~$
/os tiempos siempre est7n en torno a los C0s, con un m)nimo %e ?Cs ( un m7$imo %e CA. Si nos
'i#amos, el tiempo emplea%o en proceso se usuario es casi constante +2KB?0s,, mientras lo &ue relenti6a
el tiempo total es el emplea%o en tareas %el sistema. "sto pue%e ser %ebi%o al tiempo &ue necesite
@-DA para sincroni6ar sus %atos con el ser*i%or. /o e$traQo es &ue en las primeras pruebas slo se
emplee un segun%o en tiempo %el sistema, ( en las 3ltimas A ( L segun%os. "n cual&uier caso, C0s para
%escomprimir ese 'ic!ero no es un tiempo e$cesi*amente lento, tenien%o en cuenta &ue se est7 le(en%o
%es%e la re%.
5or 3ltimo, reali6amos pruebas %e ren%imiento con bonnie, el programa %el cual e*olucion
bonnieEE. Ambos programas son mu( similares, pero bonnie no reali6a la segun%a tan%a %e pruebas
con 'ic!eros pe&ueQos +la &ue nos %i los problemas con bonnieEE,.
1I0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
@on 'ic!eros %e 100, el resulta%o 'ue9
vicente@prueba2:/coda$ bonnie
File `./Bonnie.491`, size: 104857600
Writing with putc()...done
Rewriting...done
Writing intelligently...done
Reading with getc()...done
Reading intelligently...done
Seeker 1...Seeker 2...Seeker 3...start `em...done...done...done...
-------Sequential Output-------- ---Sequential Input--
--Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block---
--Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU
/sec
%CPU
100 5467 36.8 7019 3.0 6719 6.1 5007 30.4 6979 1.8
330.4
0.6
=gualan%o los 'ic!eros a los %e las pruebas con RA=D +CKI, obtu*imos9
vicente@prueba2:/coda$ bonnie -s 496
File `./Bonnie.509`, size: 520093696
Writing with putc()...done
Rewriting...done
Writing intelligently...done
Reading with getc()...done
Reading intelligently...done
Seeker 1...Seeker 2...Seeker 3...start `em...done...done...done...
-------Sequential Output-------- ---Sequential Input--
--Random--
-Per Char- --Block--- -Rewrite-- -Per Char- --Block---
--Seeks---
Machine MB K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU K/sec %CPU
/sec
%CPU
496 5053 34.6 6355 3.4 3861 4.1 4194 25.8 6429 2.1
45.8
0.1
Repetimos las pruebas con 'ic!eros %e G00b para po%er comparar el ren%imiento %e @-DA
con el %e un sistema %e 'ic!eros normal, proban%o con cac!s en el cliente @-DA %e 100b ( %e A00
+casos en los &ue el 'ic!ero no cabe en la cac! local ( en el &ue si cabe,. 4ambin !icimos las pruebas
sobre un %irectorio comparti%o con 1.S, para comparar @-DA con otro sistema %e 'ic!eros por re%.
1I1
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"stos 'ueron los resulta%os9
I+agen <6. #o+parativa5 (@S vs. #O.-
1I2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
@laramente, ambos sistemas %e 'ic!eros por re% son in'eriores en ren%imiento a un sistema
local, e$cepto en la reescritura &ue @-DA con una cac! pe&ueQa sorpren%entemente %i el mismo
ren%imiento &ue e$t2 ( reiser; la lectura secuencial %e caracteres &ue tanto @-DA como 1.S 'ueron
algo superiores a la mita% %el ren%imiento %e los sistemas normales; ( la b3s&ue%a aleatoria en la &ue
to%os los sistemas 'ueron igual %e lentos. 5ero estos resulta%os (a eran algo %e esperar, (a &ue el acceso
a %isco siempre es m7s r7pi%o &ue el acceso por re% a 100mbps.
/o &ue realmente !abr)a &ue anali6ar a&u) es el ren%imiento %e @-DA 'rente a 1.S9 en la
ma(or)a %e los casos @-DA es superior a 1.S. A%em7s, el ren%imiento %e @-DA siempre es me#or
con la cac! %e 100b en lugar %e con la %e A00, contrariamente a lo &ue cabr)a suponer (a &ue
estamos tratan%o con 'ic!eros %e G00b &ue no caben en la cac! pe&ueQa. "sto pue%e ser %ebi%o a un
ine'iciente uso %e la cac!, con muc!os retar%os pro*oca%os por la algoritmia &ue la controle.
"n resumen, tras estas pruebas @-DA !a pasa%o %e ser un sistema %e 'ic!eros &ue promet)a
muc!o para implantarlo en un cluster %e alta %isponibili%a% a ser un sistema &ue, si bien en muc!os
casos si &ue muestra un ren%imiento superior al %e 1.S, en otros es mu( lento. A%em7s, %urante una %e
las pruebas to%o el sistema %el cliente 'all ( !ubo &ue reiniciarlo, pu%ien%o repetir el error m7s
a%elante reali6an%o las mismas acciones. "sto es un 'allo importante en @-DA, ra6n %e m7s para no
utili6arlo en un sistema %e alta %isponibili%a%.
7.5. mon
/a instalacin %e +on 'ue mu( sencilla (a &ue *iene %e serie con la %istribucin Debian &ue
est7bamos usan%o. 4ras instalarlo, los scripts %e monitori6acin se encuentran en
/usr/lib/mon/mon.d ( los %e alertas en /usr/lib/mon/alert.d. 5or su parte, la con'iguracin se
encuentra en /etc/mon.
/a prueba &ue reali6amos 'ue mu( sencillas9 %eci%imos utili6ar mon para monitori6ar el
ser*i%or Apac!e %e la misma m7&uina local, programan%o un par %e alertas9 una &ue nos en*)e un a*iso
por correo, ( otra &ue trate %e reiniciar el ser*icio. "l monitor para el Apac!e (a lo ten)amos9 con el
propio +on *iene un monitor genrico para ser*i%ores M445 llama%o !ttp.monitor. /o mismo suce%e
con la alerta para en*iar un mensa#e por correo. /o 3nico &ue nos &ue%aba por !acer era probar a crear
una alerta &ue reiniciara el ser*icio.
"sto 'ue relati*amente '7cil. "l script %e la alerta, apache.alert, ser)a algo tan sencillo como
esto9
1I?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
#!/bin/bash
/etc/init.d/apache restart
"l 3nico problema es &ue +on se e#ecuta ba#o el usuario %aemon, &ue no tiene permisos para
reiniciar el Apac!e. 1o po%)amos %arle a %aemon permisos %e root acti*an%o el bit S2=D %el script %e
alerta, (a &ue esta me%i%a no est7 permiti%a para los 'ic!eros %e script. =gualmente, no po%)amos !acer
su a root por&ue nos pe%ir)a la contraseQa. /a solucin pas por utili6ar sudo con el siguiente 'ic!ero %e
con'iguracin sudoers9
# sudoers file.
#
# This file MUST be edited with the 'visudo' command as root.
#
# See the man page for details on how to write a sudoers file.
#
# Host alias specification
# User alias specification
# Cmnd alias specification
# User privilege specification
root ALL=(ALL) ALL
daemon ALL=NOPASSWD:/etc/init.d/apache restart
"n la 3ltima l)nea, le %amos permisos al usuario %aemon para e#ecutar con permisos %e root
me%iate su%o 1 sin necesidad de introducir ninguna contraseMa la or%en %e reinicio %el Apac!e.
2tili6an%o su%o, el 'ic!ero apache.alert &ue%ar)a as)9
#!/bin/bash
/usr/bin/sudo -u root /etc/init.d/apache restart
5or su parte, el 'ic!ero %e con'iguracin %el mon, :etc:mon:mon.c', ser)a as)9
#
# Very simple mon.cf file
#
# $Id: very-simple.cf,v 1.2 1999/08/16 00:25:06 trockij Exp $
#
1IC
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
alertdir = /usr/lib/mon/alert.d
mondir = /usr/lib/mon/mon.d
maxprocs = 20
histlength = 100
randstart = 60s
#
# define groups of hosts to monitor
#
hostgroup servers localhost
watch servers
service web
interval 1m
monitor http.monitor
period wd {Mon-Fri} hr {7am-10pm}
alertevery 1h
alertafter 2 30m
alert mail.alert vjaguilar@renr.es
alert apache.alert
De esta 'orma, estamos programan%o para el grupo %e ser*i%ores Rser*ersS compuesto por el
e&uipo local Rlocal!ostS una monitori6acin para el ser*icio 8eb ca%a minuto, lle*a%a a cabo por el
monitor http.monitor ( con las alertas %e en*iar un correo a *#aguilarerenr.es ( reiniciar el Apac!e.
4ras reiniciar mon para &ue la nue*a con'iguracin tomara e'ecto, %etu*imos el Apac!e con9
/etc/init.d/apache stop
Al cabo %e unos segun%os recibimos este correo en *#aguilarerenr.es9
Subject: ALERT servers/web: localhost (Mon Sep 3 09:38:52)
Summary output : localhost
Group : servers
Service : web
Time noticed : Mon Sep 3 09:38:52 2001
Secs until next alert :
Members : localhost
Detailed text (if any) follows:
-------------------------------
As) mismo, pu%imos comprobar &ue, e'ecti*amente, la alerta programa%a por nosotros !ab)a
reinicia%o el Apac!e con $ito.
1IG
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
7.6. iANS
A partir %e este punto (a %ispusimos %e me#ores e&uipos, en concreto %e enracables con c!asis
=ntel SRY2, consistentes ca%a uno en un %oble 5entium === a 10!6, G12b:10b %e memoria, %iscos
S@S= ( %os tar#etas %e re% =ntel 5R- 10:100, algunos con una tar#eta a%icional =ntel 5R- 1000.
/as primeras pruebas &ue reali6amos con estos e&uipos 'ueron las %el so't8are iA1S %e =ntel
para controlar el 'ailo*er autom7tico %e las tar#etas %e re%. "l primer paso es compiar e instalar los
%ri*ers para las tar#etas ( el ians. 2na *e6 !ec!o esto, pasamos a con'igurarlo to%o.
Deci%imos &ue et!0 +la tar#eta gigabit, sea el a%apta%or primario %el grupo, et!1 secun%ario (
et!2 tambin +por este or%en,. 5ara probar el correcto 'uncionamiento %el so't8are, conectamos un
3nico latiguillo %e re% en et!1 +tar#eta secun%aria, ( proce%emos a con'igurar iA1S en mo%o A.49
modprobe e1000
modprobe e100
modprobe ians
ianscfg -a -t team1 -M AFT
ianscfg -at team1 -m eth0 -p primary
ianscfg -at team1 -m eth1 -p secondary
ianscfg -at team1 -m eth2 -p secondary
ianscfg -at team1 -v veth0
ianscfg -c team1
ianscfg -s
4ras reali6ar estos pasos, (a po%emos con'igurar con ifconfig el nue*o %ispositi*o vet0K como si
se tratara %e una 3nica tar#eta %e re%. "n /var/log/syslog obtenemos9
Sep 4 09:39:33 prodweb01 kernel: Intel(R) PRO/1000 Network Driver -
version 3.0.16
Sep 4 09:39:33 prodweb01 kernel: Copyright (c) 1999-2001 Intel
Corporation.
Sep 4 09:39:33 prodweb01 kernel:
Sep 4 09:39:33 prodweb01 kernel: Intel(R) PRO/1000 Network Connection
Sep 4 09:39:33 prodweb01 kernel: eth0: Mem:0xfebc0000 IRQ:26
Speed:N/A Duplex:N/A
Sep 4 09:39:33 prodweb01 kernel: Intel(R) PRO/100 Fast Ethernet Adapter
- Loadable driver, ver 1.6.13
Sep 4 09:39:33 prodweb01 kernel: Copyright (c) 2001 Intel Corporation
Sep 4 09:39:33 prodweb01 kernel:
1II
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
Sep 4 09:39:33 prodweb01 kernel: eth1: Intel(R) 82559 Fast Ethernet LAN
on Motherboard
Sep 4 09:39:33 prodweb01 kernel: Mem:0xfe9fe000 IRQ:17 Speed:100
Mbps Dx:Full
Sep 4 09:39:33 prodweb01 kernel: Hardware receive checksums enabled
Sep 4 09:39:33 prodweb01 kernel: ucode was not loaded
Sep 4 09:39:33 prodweb01 kernel:
Sep 4 09:39:33 prodweb01 kernel: eth2: Intel(R) 82559 Fast Ethernet LAN
on Motherboard
Sep 4 09:39:33 prodweb01 kernel: Mem:0xfe9fd000 IRQ:16 Speed:0 Mbps
Dx:N/A
Sep 4 09:39:33 prodweb01 kernel: Failed to detect cable link.
Sep 4 09:39:33 prodweb01 kernel: Speed and duplex will be determined
at time of connection.
Sep 4 09:39:33 prodweb01 kernel: Hardware receive checksums enabled
Sep 4 09:39:33 prodweb01 kernel: ucode was not loaded
Sep 4 09:39:33 prodweb01 kernel: Intel(R) ANS Advanced Network Services
- Loadable module, ver. 1.3.34
Sep 4 09:39:33 prodweb01 kernel: Copyright (c) 2000 Intel Corporation
Sep 4 09:39:33 prodweb01 kernel: ttyS1: LSR safety check engaged!
Sep 4 09:39:33 prodweb01 kernel: ttyS1: LSR safety check engaged!
Sep 4 09:39:33 prodweb01 kernel: ANS: Adapter (eth1) does not sense
any probes. Possible reason: Adapter deactivated, Adapter isolated,
Partitioned team.
Sep 4 09:39:33 prodweb01 kernel: ANS: Current Primary Adapter (eth0)
is switching over.
Sep 4 09:39:33 prodweb01 kernel: ANS: Preferred secondary Adapter eth1
takes over.
5robamos a !acer un ping a alguna %ireccin %e la re% ( a !acer pings %es%e otras m7&uinas a la
%e pruebas, ( to%o 'unciona correctamente.
A!ora probamos &ue realmente el 'ailo*er se pro%u6ca, soltan%o el latiguillo %e et04 (
conect7n%olo a la tar#eta gigabit et0K. -btenemos estos mensa#es en s1slog9
Sep 4 09:42:57 prodweb01 kernel: e100: eth1 NIC Link is Down
Sep 4 09:42:57 prodweb01 kernel: ANS: Adapter (eth1) is deactivated.
Sep 4 09:42:57 prodweb01 kernel: ANS: Last Member in team was
disconnected. Team (team1) disabled.
Sep 4 09:43:01 prodweb01 kernel: e1000: eth0 NIC Link is Up 1000 Mbps
Full Duplex
Sep 4 09:43:01 prodweb01 kernel: ANS: A link was restored, Team
(team1) enabled.
Sep 4 09:43:02 prodweb01 kernel: ANS: Current Primary Adapter (eth1)
is switching over.
Sep 4 09:43:02 prodweb01 kernel: ANS: Preferred primary Adapter eth0
takes over.
1IA
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
"l c%igo %e iA1S %etecta en primer lugar &ue et!1 !a per%i%o el enlace, %e !ec!o &ue el
3ltimo miembro con cone$in !a per%i%o el enlace, ( %esacti*a el grupo. 4ras conectar el latiguillo en
et0K, lo %etecta ( *uel*e a acti*ar el grupo con et0K como tar#eta acti*a. De nue*o probamos a !acer
pings %es%e ( !acia la m7&uina %e pruebas, ( to%o 'unciona sin problemas. "s m7s, el le% %el s8itc! al
&ue est7 conecta%a la m7&uina !a cambia%o %e color para in%icar &ue la cone$in a!ora es %e gigabit en
lugar %e 10:100.
4an slo nos &ue%a preparar el sistema para &ue to%o esto se con'igure autom7ticamente %urante
el arran&ue. @on9
ianscfg -w
conseguimos &ue se guar%e la con'iguracin actual %e team1 en el 'ic!ero
/etc/ians/ians.conf, para no tener &ue reali6ar to%a la con'iguracin ca%a *e6. "ste es el 'ic!ero
genera%o9
TEAM team1
TEAMING_MODE AFT
VLAN_MODE off
PROBE_ENABLE enabled
PROBE_ADDR_MODE broadcast
PROBE_CHECK_TIMEOUT 2
PROBE_SEND_TIME 20
PROBE_MAX_RETRY_COUNT 10
PROBE_RECEIVE_TIMEOUT 2
PROBE_RX_BACK_CYCLES 0
PROBE_BURST_SIZE 3
MEMBER eth0
PRIORITY primary
MEMBER eth1
PRIORITY secondary
MEMBER eth2
PRIORITY secondary
VADAPTER veth0
A!ora ten%remos &ue 'or6ar a &ue %urante una %e las primeras 'ases %el arran&ue, se con'igure
iA1S utili6an%o este 'ic!ero. "sto lo conseguimos copian%o el siguiente 'ic!ero en :etc:rcS.%:SC0ans,
con lo &ue se e#ecutar7 #usto antes %e con'igurar la re% +%irecciones =5s, rutas, etc.,9
modprobe e1000
modprobe e100
modprobe ians
ianscfg -r
1IL
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
5or 3ltimo, slo nos &ue%a a#ustar los 'ic!eros %el sistema en los &ue se !aga re'erencia a alg3n
inter'a6 %e re% para utili6ar vet0K en lugar %e los et0N normales. "n concreto, al menos en la Debian
ten%remos &ue mo%i'icar la con'iguracin %e los %ispositi*os %e re% en /etc/network/interfaces.
1IK
8. Conclusiones
@omo se !a *isto a lo largo %e este traba#o, el mun%o %el so't8are libre, ( en concreto el %e
012:/inu$, nos o'rece to%as las !erramientas necesarias para po%er instalar un cluster %e ser*i%ores
con balanceo %e carga ( alta %isponibili%a%. "stas !erramientas *an %es%e las &ue asegurar)an la
proteccin %e los %atos almacena%os en ca%a e&uipo, como los sistemas /-I. ( los siste+as de
fic0eros transaccionales; pasan%o por las &ue nos permiten compartir %atos entre e&uipos %e 'orma
e'iciente como rs1nc, (@S ( Sa+ba, ( '@S; las &ue nos a(u%an a monitori6ar ser*icios ( recuperarnos
ante problemas, como dae+ontools, +on, 0eartbeat, fa8e 1 i-(S; las &ue nos permiten instalar (
a%ministrar el cluster en s) ( la %istribucin %e carga entre los e&uipos o mirrors geogr7'icos, como L7S
( Super Sparrow; ( to%a una serie %e utili%a%es para a(u%arnos a instalar ( mantener to%os los e&uipos,
entre las &ue cabr)a %estacar 7- S1ste+I+ager ( web+in.
@on to%o esto, &ue%a patente &ue el tamaQo o las posibili%a%es econmicas %e nuestra empresa
(a no son e$cusa para %isponer %e una ar&uitectura %e ser*i%ores potente, escalable ( robusta, basa%a
en clusters %e e&uipos con 012:/inu$ ( so't8are libre. /as opciones son muc!as, pasan%o %es%e las
m7s sencillas, como la &ue se muestra en el gr7'ico %e la siguiente p7gina, con 3nicamente I 5@s
clnicos ( %os e&uipos en ca%a ni*el +balancea%o %e carga : ser*i%ores 8eb : ser*i%ores %e 'ic!eros,
para o'recer re%un%ancia; !asta las m7s comple#as ( elabora%as, %on%e se po%r)a %isponer %e
in'raestructuras %e re% re%un%antes +*arios routers, *arias sali%as a =nternet, *arios cablea%os, *arias
tar#etas %e re% en ca%a e&uipo,; %ispositi*os RA=D por !ar%8are; tecnolog)a %e %iscos comparti%os
0.S ...
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
I+agen <;. #onclusin5 #luster sencillo
1A2
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
4o%as las tecnolog)as anali6a%as a lo largo %e este traba#o comparten un %enomina%or com3n9 el
coste %el so't8are ser7 siempre cero, con lo &ue po%remos in*ertir el coste &ue !abr)a supuesto
tecnolog)as so't8are propietarias en un me#or !ar%8are, m7s robusto ( potente.
5or otra parte, a lo largo %e este traba#o !emos %e#a%o en el tintero importantes me%i%as para
asegurar la estabili%a% %e los ser*i%ores, ( por tanto la alta %isponibili%a% %el cluster, me%i%as tales
como9
me%i%as %e seguri%a% %el sistema +uso %e 'ire8alls, =DSs, etc,
ma(or re%un%ancia a ni*el !ar%8are, utili6an%o e&uipos no Rstan%ar%S +'uentes %e
alimentacin re%un%antes, etc,
RA=D por !ar%8are
me%i%as e$ternas para pre*enir problemas, como el uso %e SA=s
-tro punto importante &ue !emos %e#a%o %e la%o es to%o lo relaciona%o con las bases %e %atos9
e'ecti*amente, la pr7ctica totali%a% %e las 8ebs actuales se generan %in7micamente me%iante ser*lets,
JS5, 5M5 o AS5 &ue atacan a una base %e %atos. "n este escenario, la base %e %atos se con*ierte as) en
un posible punto %e 'allo, algo &ue !abr7 &ue e*itar a to%a costa (a &ue si la base %e %atos 'alla, to%a
nuestra aplicacin se *en%r)a aba#o. /as bases %e %atos son un terreno su'icientemente comple#o %e por
si como para ser consi%era%as un Rmun%o aparteS ( !aber si%o %a%as %e la%o en este traba#o, (a &ue
ninguna %e las tcnicas a&u) *istas ser*ir)a por si sola para conseguir mantener en pie in%e'ini%amente
una base %e %atos. 5or e#emplo, la solucin &ue m7s '7cilmente nos *en%r)a a la cabe6a ser)a montar
%os ser*i%ores %e ED &ue lean los conteni%os %e sta %e un ser*i%or %e 'ic!eros, p.e#. en @-DA,
tambin replica%o en *arias m7&uinas, pero esta apro$imacin 'allar)a por el propio 'uncionamiento %e
los ser*i%ores %e ED &ue en muc!os casos acce%en a la in'ormacin %el %isco %irectamente, con cac!s
propias ( sistemas %e control %e interblo&ueos entre procesos, &ue al repartirlos entre %istintas
m7&uinas ( sobre una re% no !abr)a 'orma %e asegurar la integri%a% %e las transacciones reali6a%as. "s
por esto &ue !abr7 siempre &ue remitirse a las soluciones &ue nos % el propio so't8are %e la ED9
"n el terreno %el so't libre, tanto la ED relacional m(SN/ como el ser*i%or %e %irectorio
/DA5 -pen/DA5 *ienen con las !erramientas necesarias para establecer rplicas %el
ser*i%or. "stas rplicas son copias e$actas %e la ED original ( &ue el propio so't %e la ED se
encarga %e mantener ( actuali6ar, pero &ue 'uncionan en mo%o %e slo lectura
re%ireccionan%o las peticiones %e escritura al ser*i%or maestro. De esta 'orma, para una 8eb
%e noticias t)pica +un peri%ico, o un ser*i%or %e consulta con %atos %e usuarios +TG00 sobre
/DA5, %atos %e las cuentas %e un ser*i%or %e correo, en la &ue el KKP %e los accesos son %e
lectura, si &ue se po%r)an %istribuir las consultas a la ED entre to%as las rplicas &ue
instalemos, ( a%em7s si una rplica +o incluso el ser*i%or maestro, 'alla, el resto asumen la
carga %e 'orma transparente. "n cambio, para una 8eb con un 'oro %e %iscusin, esta
solucin no nos *al%r)a (a &ue el n3mero %e actuali6aciones sobre la ED ser)a ele*a%o ( este
tipo %e acceso no se po%r)a repartir entre las rplicas, crean%o un cuello %e botella en la ED
1A?
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
maestra.
5or su parte, el so't8are propietario en este terreno si &ue o'rece soluciones me#ores, a3n &ue
por regla general mu( caras ( mu( complica%as %e con'igurar ( mantener. "s el caso %el
-racle 5arallel Ser*er, &ue permite crear un cluster %e ser*i%ores %e bases %e %atos en los
&ue ca%a m7&uina traba#a %e igual a igual con las %em7s, pu%ien%o acce%er a to%as ellas tanto
en mo%o lectura como escritura ( sal*an%o as) el problema %el cuello %e botella &ue se
genera con la replicacin en mo%o slo lectura.
"n cual&uier caso, en estos campos en los &ue las soluciones libres no lle*an soporte para
clustering inclui%o ( por moti*os tcnicos ser)a mu( %i')cil lograrlo %e otra 'orma, si &ue ser)a posible
utili6ar la estrategia %e preparar un ser*i%or %e respal%o para el primario, &ue tomar7 su lugar
utili6an%o p.e#. fa8e en caso %e &ue ste 'alle9 las cone$iones ( transacciones en curso %urante el
momento %el 'allo se per%er)an, pero el cluster se repon%r)a %e este error %e 'orma inme%iata (
autom7tica ( seguir)a 'uncionan%o. "l ma(or problema a ni*el a%ministrati*o en estos casos pasa por
asegurar la per'ecta +tanto como po%amos, sincroni6acin entre el ser*i%or primario ( el %e respal%o,
para &ue las %i'erencias %e conteni%os entre ambos ser*i%ores en el momento %el cambio %e uno a otro
sean m)nimas.
"n resumen ( para 'inali6ar, utili6an%o so't8are libre ( 5@s clnicos como base es posible !o(
en %)a construir clusters %e ser*i%ores %e alta %isponibili%a% ( alto ren%imiento con balanceo %e carga,
si bien es cierto &ue po%r)amos obtener a3n me#ores resulta%os in*irtien%o parte %el %inero a!orra%o
por no utili6ar so't8are propietario en un !ar%8are me#or o elementos e$ternos &ue aseguren el buen
'uncionamiento %el con#unto, como por e#emplo un SA= &ue asegure el suministro elctrico al cluster.
5or otra parte, !a( ciertas 7reas en las &ue el so't8are libre to%a*)a no est7 a la altura %el so't8are
comercial, como po%r)a ser el terreno %e las Eases %e Datos con soporte integra%o para clustering. 5ero
a3n as), incluso en estos casos el a!orro por utili6ar so't8are libre en el resto %el cluster !ace %e
012:/inu$ una opcin mu( a tener en cuenta a la !ora %e plani'icar nuestra in'raestructura %e
ser*i%ores.
1AC
9. Bibliografa
9.1. Documentacin, HOWTOs y FAQs
/inu$ Mig! A*ailabilit( M-<4-
!ttp9::888.ibiblio.org:pub:/inu$:A/5MA:linu$B!a:Mig!BA*ailabilit(BM-<4-.!tml
T0e Beowulf Project
!ttp9::888.beo8ul'.org
So't8areBRA=D M-<4-
ttp9::linas.org:linu$:So't8areBRA=D:So't8areBRA=D.!tml
Siste+a de arc0ivos 2OT6
!ttp9::members.nbci.com:6is$Ho:"$t2.!tml
A%*ance% 'iles(stem implementor^s gui%e. Journalling an% Reiser's.
!ttp9::888B10I.ibm.com:%e*eloper8orHs:linu$:librar(:lB'sXopenhlbL0G,tbgrl,pbReiser.S
4!e rs(nc algorit!m
!ttp9::rs(nc.samba.org:rs(nc:tec!Oreport
/inu$ 1.SBM-<4-
!ttp9::888.linu$%oc.org:M-<4-:1.SBM-<4-
Samba9 An =ntro%uction
!ttp9::us1.samba.org:samba:%ocs:Samba=ntro.!tml
S-MB- Project .ocu+entation
!ttp9::us1.samba.org:samba:%ocs:SambaBM-<4-B@ollection.!tml
0.S M-<4-
!ttp9::888.sistina.com:g'sO!o8tos:g'sO!o8to:
=nteli 5R-:100 an% 5R-:1000 A%apters B =n'ormation on /inu$F A1S
!ttp9::support.intel.com:support:net8orH:a%apter:ans:linu$:linanso*er*ie8.!tm
4!e /inu$ Virtual Ser*er M-<4-
!ttp9::888.linu$*irtualser*er.org:Josep!.acH:M-<4-:/VSBM-<4-.!tml
Mig! a*ailabilt( o' /VS
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
!ttp9::888.linu$*irtualser*er.org:Mig!A*ailabilit(.!tml
Super Sparrow5 B'P
0ttp5**supersparrow.sourceforge.net*ss>K.K.K*bgp.0t+l
'loball1 .istributed #ontent !)sing B'P to Ta8e Over t0e Horld"
0ttp5**supersparrow.sourceforge.net*ssDpaper*inde$.0t+l
Hide>area load balancing
0ttp5**www.nwfusion.co+*newsletters*linu$*6KK4*KK<K%=;?.0t+l
.ocu+entacin de L)I !incluida con en el paFuete software"
ftp5**www>46&.ib+.co+*pub*lui*lui>4.46.4.tar.gC
@-I 'uide !@ull1 -uto+atic Installation"
0ttp5**www.infor+ati8.uni>8oeln.de*fai*fai>guide.0t+l*
@aracter)sticas %e VA S(stem=mager +%atas!eet,
!ttp9::s(stemimager.org:%ocumentation:s(stemimagerB%atas!eetB1.G.0.p%'
VA S(stem=mager Documentation
!ttp9::s(stemimager.org:manual:!tml:in%e$.!tml
9.2. RFCs
R.@ AK19 =nternet 5rotocol9 DAR5A =nternet 5rogram 5rotocol Speci'ication
!ttp9::888.'a&s.org:r'cs:r'cAK1.!tml
R.@ L2I9 An "t!ernet A%%ress Resolution 5rotocol
!ttp9::888.'a&s.org:r'cs:r'cL2I.!tml
R.@ L2A9 "$terior 0ate8a( 5rotocol +"05,
!ttp9::888.'a&s.org:r'cs:r'cL2A.!tml
R.@ 10KC9 1.S, 1et8orH .ile S(stem 5rotocol Speci'ication
!ttp9::888.'a&s.org:r'cs:r'c10KC.!tml
R.@ 1G1K9 @lassless =nterBDomain Routing +@=DR,9
an A%%ress Assignment an% Aggregation Strateg(
!ttp9::supersparro8.source'orge.net:ssB0.0.0:re'erence:r'c:r'c1G1K.t$t
1AI
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
R.@ 1I?19 4!e =5 1et8orH A%%ress 4ranslator +1A4,
!ttp9::888.sa'et(.net:r'c1I?1.t$t
R.@ 1AA19 A Eor%er 0ate8a( 5rotocol C +E05BC,
!ttp9::supersparro8.source'orge.net:ssB0.0.0:re'erence:r'c:r'c1AA1.t$t
R.@ 1L1?9 1.S Version ? 5rotocol Speci'ication
!ttp9::888.'a&s.org:r'cs:r'c1L1?.!tml
R.@ 1LG?9 =5 in =5 tunneling
!ttp9::888.'a&s.org:r'cs:r'c1LG?.!tml
R.@ 2I2G9 =5 an% AR5 o*er .ibre @!annel
!ttp9::888.lan%'iel%.com:r'cs:r'c2I2G.!tml
R.@ ?0109 1.S Version C 5rotocol
!ttp9::888.'a&s.org:r'cs:r'c?010.!tml
9.3. Licencias
012 0eneral 5ublic /icense +05/,
!ttp9::888.gnu.org:cop(le't:gpl.!tml
012 /esser 0eneral 5ublic /icense +/05/,
!ttp9::888.gnu.org:cop(le't:lesser.!tml
012 .ree Documentation /icense +.D/,
!ttp9::888.gnu.org:cop(le't:'%l.!tml
4!e C.CESD @op(rig!t
!ttp9::888.'reebs%.org:cop(rig!t:license.!tml
4!e .reeESD @op(rig!t
!ttp9::888.'reebs%.org:cop(rig!t:'reebs%Blicense.!tml
Sistina 5ublic /icense +S5/,
!ttp9::888.sistina.com:SistinaP205ublicP20/icenseP201.0.p%'
4!e Apac!e So't8are /icense
!ttp9::888.apac!e.org:licenses:/=@"1S"
1AA
10. Enlaces
5roporcionamos a&u) las %irecciones %e =nternet %e las p7ginas %e los programas &ue se !an
comenta%o a lo largo %e este traba#o, las %e las empresas &ue los !an %esarrolla%o o &ue %e alguna
'orma colaboran con la comuni%a% /inu$, ( otras %irecciones %e inters sobre el Sistema -perati*o
/inu$ ( clustering en general.
/inu$BMA 5ro#ect <eb Site
!ttp9::linu$B!a.org
4!e /inu$ Yernel Arc!i*es
!ttp9::888.Hernel.org
Linu$ at IBM
!ttp9::888.ibm.com:linu$
Sistina +/V ( 0.S,
!ttp9::888.sistina.com
1A"S]S +Reiser.S,
!ttp9::888.names(s.com
/inu$ T.S
!ttp9::linu$B$'s.sgi.com:pro#ects:$'s:
rs(nc
!ttp9::rs(nc.samba.org:
Samba
!ttp9::888.samba.org
@o%a .ile S(stem
!ttp9::888.co%a.cs.cmu.e%u
-pen0.S
!ttp9::888.openg's.org
/inu$ Virtual Ser*er
!ttp9::888.linu$*irtualser*er.org
)ltra Mon8e(
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
!ttp9::888.nl.ultramonHe(.org
VAnessa9 VA 1et8orH "n!ance% Scalable Ser*er Arc!itecture
!ttp9::*anessa.source'orge.net
Super Sparro8
!ttp9::supersparro8.source'orge.net
012 gebra
!ttp9::888.6ebra.org:
0ate%
!ttp9::888.gate%.org:
@isco S(stems, =nc.
!ttp9::888.cisco.com:
Dents
!ttp9::888.%ents.org:
4!e /inu$ 2tilit( 'or cluster =nstallation +/2=,
!ttp9::oss.so't8are.ibm.com:%e*eloper8orHs:pro#ects:lui
@-I !@ull1 -uto+atic Installation" for .ebian '()*Linu$
0ttp5**www.infor+ati8.uni>8oeln.de*fai*
4!e Apac!e M445 Ser*er 5ro#ect
!ttp9::!ttp%.apac!e.org
012Ws 1ot 2ni$j B t!e 012 5ro#ect an% t!e .ree So't8are .oun%ation +.S.,
!ttp9::888.gnu.org
Debian 012:/inu$
!ttp9::888.%ebian.org
VA /inu$ S(stems
!ttp9::888.*alinu$.com
VA S(stem =mager
!ttp9::s(stemimager.source'orge.net
Re*erseBpro$(
!ttp9::888.engelsc!all.com:p8:8t:loa%balance:
1L0
#lustering de -lta .isponibilidad bajo '()*Linu$ 10. "nlaces
p<"E
!ttp9::888.nsrc.nus.sg:S4A..:e%8ar%:
8ebmin
!ttp9::888.8ebmin.com:8ebmin:
l*sBgui
!ttp9::888.au.*ergenet.net:linu$:l*sBgui:
/VS
!ttp9::l*sm.t!eor(.org:
%ulo 8ebmin para /VS
!ttp9::888.t!ir%part(mo%ules.com:8ebmin:mo%ules:l*s.8bm
5iran!a
!ttp9::888.re%!at.com:support:8papers:piran!a
Dri*ers ( %ocumentacin %e =nteli.
!ttp9::support.intel.com
.A= +.ull( Automatic =nstallation, 'or Debian 012:/inu$
!ttp9::888.in'ormatiH.uniBHoeln.%e:'ai:
=nternet .AN Arc!i*e +R.@s,
!ttp9::888.'a&s.org
1L1

Das könnte Ihnen auch gefallen