Professional Documents
Culture Documents
En esta entrega os explicare como armar un cluster de servidores de aplicaciones Java con replicacion
de sesion. He elegido JBoss porque me place (?).
Elementos
*1 aplicacion desarrollada en Java
*2 o mas servidores JBoss ya instalados. En mi caso son dos y los voy a llamar
application1(12.1!".#$.2%) y application2 (12.1!".#$.2&$)
*1 o mas servidores 'pac(e (en mi caso son dos) con mod)*+ instalado
,e asume que se parte desde una instalacion -uncionando (standalone) y una aplicacion tam.ien
-uncionando. /a idea es pasar de un servidor a un cluster de servidores... 0e todas maneras en la
practica es .astante complicado y tedioso (acer este tipo de migraciones1 pero me parece que vale la
pena compartirlo.
2ara que JBoss -uncione en modo cluster se de.en colocar los ar(ivos a desplegar en el directorio
$JBOSS_HOME/server/all/deploy en cada servidor del cluster. 3am.ien se podria poner en el
directorio $JBOSS_HOME/server/all/farm que (ace el deploy automatico entre todos los nodos del
cluster.
/uego1 (ay que modi-icar el script de inicio1 que seria asi1 por e*emplo para el servidor 1
456.in6.as(
6usr6local6*.oss6.in6run.s( 7. 12.1!".#$.2% 7c all 86dev6null 2891 9
ec(o servicio *.oss iniciado...
y modi-icar el ar(ivo de con-iguracion $JBOSS_HOME/bin/runconf. En negrita esta el parametro a
agregar en cada nodo del cluster:
if [ "x$JAVA_OPTS" = "x" ]; then
JAVA_OPTS="-Xms512m -Xmx3000m -XXPe!mSi"e=25#m -XX$%xPe!mSi"e=512m
-&s'n(!mi()*+(+,ient(*+-nte!.%,=3#00000 -Djboss,partition.name=cluster
70sun.rmi.dgc.server.gc;nterval<=!$$$$$ 70user.time>one<?@37$=:$$A
/uego1 en cada instancia de *.oss modi-icar el arc(ivo $JBOSS_HOME/server/all/deploy/!boss"
#ebdeployer/server$ml y agregar en la siguiente linea lo que se muestra en negrita:
/ 0n*ine n%me="123ss(4e2" )ef%',t53st=",3+%,h3st" jvmRoute="worker1" 6
En mi caso Bor+er1 es el servidor application1.
'(ora se le de.e indicar a JBoss que vamos a usar un .alanceador (mod)*+). 2ara esto editar el arc(ivo
$JBOSS_HOME/server/all/deploy/!boss"#ebdeployer/ME%&"'()/!boss"service$ml y agregar en
la siguiente linea lo que se muestra en negrita:
/ %tt!i2'te n%me="7seJ8" 6true/ 9%tt!i2'te 6
'(ora1 descomprimir el arc(ivo ear a (acer deploy y editar el arc(ivo /*EB"'()/#eb$ml. 'gregar
lo que esta en negrita:
el parameto se de.e agregar dentro del contexto y CD 0EC3ED 0E D3ED1 sino CD FGCH;DC'.
/ 4e2-%::
.e!si3n="2(5"
xm,ns="htt:991%.%(s'n(+3m9xm,9ns91%.%ee"
xm,nsxsi="htt:99444(43(3!*920019X$;S+hem%-inst%n+e"
xsis+hem%;3+%ti3n="htt:991%.%(s'n(+3m9xm,9ns91%.%ee
htt:991%.%(s'n(+3m9xm,9ns91%.%ee94e2-%::_2_5(xs)" 6
< distributable/ >
/uego1 editar el arc(ivo /*EB"'()/!boss"#eb$ml1 y agregar lo siguiente:
/ 123ss-4e2 6
< replication-coni! >
< replication-tri!!er >"#$%&'D%'('%)R*+*$*,#%-#$< /replication-tri!!er >
< replication-!ranularit. >"#""*('< /replication-!ranularit. >
< replication-ield-batc/-mode >true< /replication-ield-batc/-mode >
< /replication-coni! >
/ 9123ss-4e2 6
Io utilice ,E,,;DC replication que es lo que necesita.a1 para mas
in-o... (ttp:66docs.*.oss.org6*.ossas6docs6,erver)Hon-iguration)?uide6.eta&$$6(tml6clustering7(ttp7
app.(tml
Se+uri,ando la consola !m$
Homo la replicacion entre los servidores esta (ec(a por medio de *ms1 se precisa de la consola de *.oss
para monitorear la replicacion se de.e seguri>ar1 de lo contrario cualquier usuario sin autenticar puede
reiniciar el servidor1 editar con-iguraciones1 etc.
Editar el arc(ivo $JBOSS_HOME/server/all/conf/lo+in"confi+$ml y agregar:
/ %::,i+%ti3n-:3,i+< n%me = "1mx-+3ns3,e" 6
/ %'thenti+%ti3n 6
/ ,3*in-m3)',e +3)e="3!*(123ss(se+'!it<(%'th(s:i(7se!s=3,es;3*in$3)',e"
f,%* = "s'ffi+ient" 6
/ m3)',e-3:ti3n n%me="'se!sP!3:e!ties" 6:!3:s91mx-+3ns3,e-'se!s(:!3:e!ties/
9m3)',e-3:ti3n 6
/ m3)',e-3:ti3n n%me="!3,esP!3:e!ties" 6:!3:s91mx-+3ns3,e-!3,es(:!3:e!ties/
9m3)',e-3:ti3n 6
/ 9,3*in-m3)',e 6
/ 9%'thenti+%ti3n 6
/ 9%::,i+%ti3n-:3,i+< 6
/ %::,i+%ti3n-:3,i+<
n%me="3the!" 6
/ %'thenti+%ti3n 6
/ ,3*in-m3)',e
+3)e="3!*(123ss(se+'!it<(%'th(s:i(7se!s=3,es;3*in$3)',e"
f,%*="!e>'i!e)" 96
/ 9%'thenti+%ti3n 6
/ 9%::,i+%ti3n-:3,i+< 6
'(ora1 se de.e editar el arc(ivo $JBOSS_HOME/server/all/conf/props/!m$"console"
usersproperties (en el caso que no exista crearlo)
? A s%m:,e 'se!s(:!3:e!ties fi,e f3! 'se 4ith the 7se!s=3,es;3*in$3)',e
%)min=:%ss43!)_)e,_%)min
I tam.ien el arc(ivo $JBOSS_HOME/server/all/conf/props/!m$"console"rolesproperties
? A s%m:,e !3,es(:!3:e!ties fi,e f3! 'se 4ith the 7se!s=3,es;3*in$3)',e
%)min=J@3ssA)minA5tt:-n.3Be!
En el caso de utili>ar otro usuario que no sea admin1 cam.iarlo.
Confi+uracion de &pac-e.
2ara (acer el .alanceo de carga se utili>a 'pac(e con el modulo mod)*+.
/a instalacion de mod)*+ requiere los siguientes paquetes (y sus dependencias que se instalaran
automaticamente). Esto para HentD, 6 EedHat 6 Fedora
<'m inst%,, -< htt:)-)e.e, *++
,e .a*a el modulo a compilar
4*et htt:99%:%+he()%tt%te+(+3m99t3m+%t9t3m+%t-+3nne+t3!s91B9t3m+%t-+3nne+t3!s-1(2(32-
s!+(t%!(*"
se descomprime1 se compila y se instala en cada servidor apac(e.
t%! -x".f t3m+%t-+3nne+t3!s-1(2(32-s!+(t%!(*"
+) t3m+%t-C
(9+3nfi*'!e --4ith-%:xs=9's!9s2in9%:xs
(9m%Be
(9m%Be inst%,,
a(ora editar el arc(ivo /etc/-ttpd/confd/#or/ersproperties. Este arc(ivo es el de con-iguracion del
.alanceador de carga1 aqui se van a de-inir los nodos del cluster1 el peso para distri.uir el tra.a*o1 etc
0esta es la ruta de $JBOSS_HOME
Bor+ers.tomcat)(ome<6usr6local6*.oss
0ruta a la !d/ de la aplicacion
Bor+ers.*ava)(ome<6usr6local6*ava
0slas- 1en el caso de linu$ / en el caso de #indo#s 23
ps<6
0lista de #or/ers4 router seria el cluster4 status es para c-e5uear estado de los
servidores
Bor+er.list<router1status
0defino nodo 6
Bor+er.Bor+er1.port<"$$
Bor+er.Bor+er1.(ost<12.1!".#$.2%
Bor+er.Bor+er1.soc+et)timeout<=$$
Bor+er.Bor+er1.type<a*p1=
0defino el nodo 7
Bor+er.Bor+er2.port<"$$
Bor+er.Bor+er2.(ost<12.1!".#$.2&$
Bor+er.Bor+er2.soc+et)timeout<=$$
Bor+er.Bor+er2.type<a*p1=
0defino la car+a 1este parametro es relacional4 es decir 5ue si a cada nodo le pon+o 64
distribuira la car+a 6 a 64 si el nodo 6 tiene 68 y el nodo 7 tiene 64 la relacion de
traba!o es 68 a 63
Bor+er.Bor+er1.l.-actor<1
Bor+er.Bor+er2.l.-actor<1
0defino tipo de balanceo 1lb9loadbalancin+3
Bor+er.router.type<l.
Bor+er.router..alance)Bor+ers<Bor+er11Bor+er2
0defino 5ue la sesion persista en cada #or/er
Bor+er.router.stic+y)session<1
Bor+er.inprocess.type<*ni
Bor+er.status.type<status
2or ultimo1 se de-ine el virtual (ost y como sera montado por apac(e1 en 6etc6(ttpd6con-.d6v(osts.con-
0Car+o el modulo compilado anteriormente
/oad@odule *+)module modules6mod)*+.so
CameJirtualHost *
,erverCame nom.redelservidor
,erver,ignature D--
0llamo a #or/ersproperties
J+Kor+ersFile 6etc6(ttpd6con-.d6Bor+ers.properties
0 :efino los lo+s
J+/ogFile 6var6log6(ttpd6mod)*+.log
0 lo+ level ;debu+/error/info<
J+/og/evel de.ug
0 )ormato de lo+
J+/og,tampFormat ALMa M. Md MH:M@:M, MIN A
J+Dptions OForBardPey,i>e OForBardGE;Hompat 7ForBard0irectories
+Eequest/ogFormat AMB MJ M3A
J+,(mFile 6var6log6(ttpd6*+.s(m
JB$3'nt C !3'te!
Esto es todo por (oy amiguitos1 cualquier duda1 puteada o lo que quieran me avisan.
Gn saludo a todos los que me conocen