You are on page 1of 5

Cluster JBoss con Session Replication

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

You might also like