You are on page 1of 77

Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Manual de instalacion de Jboss AS7


en modo Standalone y en modo
Domain

Documentación

Copia nº 00/00
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

1 Instalación JBOSS AS 7 ............................................................................................................................... 4


2 Modo Domain vs. Modo Standalone ........................................................................................................... 6
2.1.1 Decidiendo entre el modo Domain y Standalone. ...................................................................... 6
3 Contenido de la distribución AS 7. ............................................................................................................. 8
3.1.1 Contenido del directorio "domain" .............................................................................................. 9
3.1.2 Contenido del directorio "standalone" ...................................................................................... 10
4 Conceptos Generales ................................................................................................................................. 12
4.1.1 Extensiones .............................................................................................................................. 12
4.1.2 Paths ......................................................................................................................................... 12
4.1.3 Interface de Administración ...................................................................................................... 13
4.1.4 Profiles ...................................................................................................................................... 13
4.1.5 Interfaces .................................................................................................................................. 14
4.1.6 Socket binding groups .............................................................................................................. 15
5 Configurando JBoss AS7 en modo Standalone ...................................................................................... 16
5.1.1 Introduccion: ............................................................................................................................. 16
5.1.2 Configuración de un solo nodo: ................................................................................................ 16
5.1.2.1 Crear la estructura de directorios: ............................................................................................ 16
5.1.2.2 Crear el usuario administrador: ................................................................................................ 16
5.1.2.3 El directorio instalación: ............................................................................................................ 17
5.1.2.4 El scrip de arranque es como siguiente: .................................................................................. 18
5.1.2.5 Utilizar el parámetro offset: ....................................................................................................... 19
5.1.2.6 Arrancar de la instancia del jboss:............................................................................................ 20
5.1.2.7 La consola de administración: .................................................................................................. 20
5.1.2.8 Despliegue del driver oracle: .................................................................................................... 21
5.1.2.9 Configuración del JDBC: .......................................................................................................... 26
5.1.3 Configuration en modo cluster.................................................................................................. 31
5.1.3.1 En la misma máquina: .............................................................................................................. 31
5.1.3.2 En maquinas diferentes: ........................................................................................................... 32
6 Configurando JBoss AS 7 en modo Domain ........................................................................................... 34
6.1.1 Introducción. ............................................................................................................................. 34
6.1.2 Configurando el dominio ........................................................................................................... 35
6.1.2.1 Configuración del fichero domain.xml ...................................................................................... 36
7 Configuración del fichero host.xml .......................................................................................................... 38
7.1.1.1 Configuración de la interface de administración ...................................................................... 39
7.1.1.2 Configuración de la interface de red ........................................................................................ 39
7.1.1.3 Configuración del Controlador de Dominio .............................................................................. 40
7.1.1.4 Configuración de la JVM .......................................................................................................... 40
7.1.1.5 Añadir opciones nuevas a la JVM para un servidor ................................................................. 41
7.1.1.6 Configuración instancias (server nodes) .................................................................................. 41
8 Clusterización ............................................................................................................................................. 42
8.1.1 Cluster de servidores en modo domain .................................................................................... 42
8.1.1.1 Configuración del Dominio ....................................................................................................... 44
8.1.1.1.1 Configuración de interfaces en el servidor AS7 maestro ................................................... 44
8.1.1.1.2 Configuración de interfaces en el servidor AS7 esclavos .................................................. 45
8.1.1.1.3 Configurar la seguridad ....................................................................................................... 46
8.1.1.2 Arrancar Hosts .......................................................................................................................... 48
8.1.1.3 Despliegue Aplicación .............................................................................................................. 49
8.1.2 Configuración en cluster ........................................................................................................... 57

JBoss AS7: Modo domain 2/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Índice

JBoss AS7: Modo domain 3/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

1 Instalación JBOSS AS 7
Una vez descomprimida la distribución de JBOSS AS7, se deberá decidir si se
quiere trabajar en “modo domain” ó en “modo standalone”. Ver la sección “Modo
Domain vs Modo Standalone”.

Para trabajar en modo domain, situarse en el directorio bin de $JBOSS_HOME y


ejecutar el script “domain”:

Sobre Unix:

$ cd bin
$ ./domain.sh

Sobre Windows:

> cd bin
> domain.bat

La ejecución de este script creará un total de 5 procesos en total: Tres instancias


JBOSS AS7; un proceso Controlador de Dominio que actúa como administrador
central para el resto de servidores que configurarán el “dominio”; y un Controlador de
Proceso que se responsabilizará del crecimiento de los otros 4 procesos y la
monitorización de su ciclo de vida.

Para trabajar en “modo standalone”, situarse en el directorio bin de $JBOSS_HOME


y ejecutar el script “standalone”:

En Unix

$ cd bin

$ ./standalone.sh

Sobre Windows:

> cd bin

> standalone.bat

La ejecución de este script creará un único proceso: una única instancia JBOSS AS7

Parando una instancia en modo standalone.

JBoss AS7: Modo domain 4/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Una instancia arrancada en “modo standalone” puede ser parada de las siguientes
maneras:

 Si el servidor fue arrancado desde una consola dos, mediante Ctrl + C


parará “limpiamente” el servidor.
 Desde una nueva consola dos ejecutar el siguiente comando:

$ cd bin
$ ./jboss-cli.sh --connect command=:shutdown

"--connect" por defecto se conecta a localhost en el puerto 9999 y lanza el


“shutdown”. Si el servidor no usa el puerto por defecto ó no está conectado a
“localhost”, entonces se puede especificar explícitamente el host y el puerto de la
siguiente manera:

$ ./jboss-cli.sh --connect controller=<IP>:<port> command=:shutdown

Notice that the command was renamed in AS7.1 in AS7.0 replace the script name
jboss-cli by jboss-admin.

JBoss AS7: Modo domain 5/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

2 Modo Domain vs. Modo Standalone


Una de las nuevas características de JBoss Application Server 7 es la posibilidad de
controlar múltiples instancias JBoss AS 7 desde un único punto de control. La idea
es tener un grupo de instancias JBoss AS 7 formando parte de un “dominio” con un
único proceso Controlador de Dominio actuando como un centro de control central.
Todas las instancias comparten la misma política de control y el Controlador de
Dominio asegura que cada instancia está configurada de acuerdo a esa política.
Los “dominios” pueden estar compuestos por múltiples máquinas físicas ó virtuales
con todas las instancias sobre un host dado bajo el control de un proceso
Controlador de Host. El Controlador de Host de cada host interactúa con el
Controlador de Dominio para controlar el ciclo de vida las instancias ejecutándose
sobre su host y para asistir al Controlador de Dominios a manejarlas.

Cuando se arranca un JBoss AS en modo "domain" (ejecutando scripts domain.sh o


domain.bat) se crea un Controlador de Dominio, un Controlador de Host y como
mínimo una instancia JBoss AS 7.

En algunos casos, no es necesario tener centralizado una granja de servidores que


configuran un “dominio”. Par estos casos, el JBOSS AS 7 puede ser ejecutado en
“modo standalone”.

Una instancia arrancada en modo standalone es un proceso independiente,


semejante a las instancias de JBoss 3,4,5, o 6. Las instancias en modo standalone
pueden ser arrancadas vía los scripts standalone.sh o standalone.bat.
Es perfectamente posible construir un entorno multiservidor utilizando instancias
arrancadas en modo “standalone” formando todas ellas un cluster HA, al igual que
se hacía con instancias de JBoss 3,4,5 y 6.

Si se tienen varias instancias arrancadas en” modo standalone” y se quiere que


formen un entorno multiservidor, es responsabilidad del usuario su administración y
coordinación.

La permutualidad entre modos una vez arrancada una instancia no es posible. Por
ejemplo, no se puede ejecutar el script domain.sh, parar el proceso, y ejecutar el
script standalone.sh

2.1.1 Decidiendo entre el modo Domain y Standalone.

La diferencia entre los modos domain y standalone radica en la manera en que los
servidores serán manejados, no en las capacidades que tienen para servir
requerimientos de usuario. Esta diferencia es particularmente importante cuando se
va a trabajar con clústeres configurados en alta disponibidad. Es muy importante
esta observación porque un grupo de servidores ejecutándose en modo standalone
JBoss AS7: Modo domain 6/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

podrían ser configurados para formar un cluster HA. Los modos domain y standalone
determinan como los servidores serán administrados, no las capacidades que
pueden proporcionar.

JBoss AS7: Modo domain 7/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

3 Contenido de la distribución AS 7.
Lo primero que se observa es que el sistema de ficheros está dividido en dos partes
principales: servidores standalone y servidores domain.

La distribución JBOSS AS 7 incluye los siguientes directorios:

bin – localización de los scripts del servidor. Arranque,…

docs – Este directorio no contiene documentación sobre el servidor. Tiene dos


subdirectorios: el primero llamado licenses contiene las licencias para el servidor y
todas sus dependencias. Un vistazo rápido al fichero licenses.xml puede reportarnos
que versiones forman parte de las librerías del servidor. Por ejemplo, JBoss AS 7
incluye la versión 4.0.0.CR2 de Hibernate en su núcleo de librerías.

<dependency>
<groupId>org.hibernate</groupId>
<artifactId>hibernate-core</artifactId>
<version>4.0.0.CR2</version>
<licenses>
<license>
<name>GNU Lesser General Public License</name>
JBoss AS7: Modo domain 8/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<url>http://www.gnu.org/licenses/lgpl-2.1.html</url>
<distribution>repo</distribution>
<comments>See discussion at http://hibernate.org/license for more details.</comments>
</license>
</licenses>
</dependency>

El otro subdirectorio llamado schema contiene ficheros .xsd los cuales son usados
como patrones de configuración.

modules -- AS 7 está basado en la arquitectura de Carga de Clases modular. Este


directorio alberga el conjunto de librerías del servidor, las cuales forman parte de la
distribución del servidor.

domain – Contiene la estructura para el modo “domain”.


standalone - Contiene la estructura el modo “standalone”. Su estructura es
bastante similar al directorio “domain” con la excepción de un directorio de
despliegue.
welcome-content – Contiene la página por defecto la cuál será cargada cuando
desde un visor se invoca al servidor JBoss AS7 (http://localhost:8080). Es el Web root
context.

3.1.1 Contenido del directorio "domain"

Relevante solamente en modo domain.

configuration – Contiene ficheros de configuración. El principal es domain.xml el


cuál contiene los servicios los cuales son usados por los nodos que forman el
dominio. También contiene la configuración de las interfaces socket-binding para
todos los servicios.

Otro fichero importante es host.xml el cuál es usado para definir aspectos de


administración del dominio..

El ultimo fichero es logging.properties el cuál es usado para definir el formato de


logging del proceso bootstrap (arranque del servidor).

content – Es usado como repositorio para almacenar módulos desplegados..

lib- Alberga el subdirectorio ext, el cual es creado para almacenar las extensiones
Java SE/EE. Algunas de las aplicaciones desplegadas pueden acceder a este
directorio para incluir librerías las cuales pueden ser accedidas por el cargador local
de clases, no obstante esta práctica no es recomendable y es mantenido

JBoss AS7: Modo domain 9/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

únicamente por conformidad con las especificaciones del lenguaje. El directorio


modules debería ser único y el único para albergar librerías de usuario.

log – en él se albergan el log de salida del dominio. El fichero, por defecto, es


truncado cada vez que el servidor es reiniciado.

servers – su contenido es actualizado por cada instancia AS 7. Cada instancia AS 7


tiene su propio subdirectorio, que es creado cuando el servidor es arrancado por
primera vez. Cada subdirectorio a su vez contienen los siguientes subdirectorios:

data -- información escrita por el servidor para almacenar sus datos en tiempo
de ejecución (por ejemplo, transaction logging).

tmp – ficheros temporales escritos por el servidor.

3.1.2 Contenido del directorio "standalone"

Relevante solamente en modo standalone.

configuration -- El fichero principal es standalone.xml el cuál es usado cuando AS


7 es arrancado en modo “standalone”

Además del fichero standalone.xml, el directorio contiene el fichero


logging.properties, el cual es usado para controlar la traza del proceso de arranque.
Otro fichero importante es mgmt-users.properties, usado para securizar la interface
de administración.

data – información escrita por el servidor para almacenar sus datos en tiempo de
ejecución, por ejemplo transaction logging.

deployments – en esta carpeta es donde se ubica el contenido de usuario a


desplegar y que será desplegado una vez detectado automáticamente. El “modo
domain” no soporta el despliegue de contenido basado en el escaneado de un
sistema de ficheros.

Directorio en el cual los usuarios pueden almacenar su contenido desplegable (por


ejemplo, ficheros WAR, EAR, JAR, SAR ) para que sean desplegados
automáticamente por el servidor en tiempo de ejecución. Los usuarios,
particularmente en entornos de producción, pueden usar la API de administración
del JBoss AS7 para actualizar y desplegar el contenido desplegable en vez de
esperar a que el subsistema de despliegue escanee periódicamente el directorio de
despliegue.

JBoss AS7: Modo domain 10/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

lib – Contiene el subdirectorio ext, el cuál es usado para definer extensions del
servidor. Las mismas consideraciones hechas para el subdirectorio domain.lib son
válidas aquí.

log – Contiene los logs para la instancia standalone del servidor. El fichero de log
por defecto llamado server.log, es truncado cada vez que el servidor es arrancado.

tmp – usado por Virtual File System del JBOSS como almacenamiento temporal.

JBoss AS7: Modo domain 11/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

4 Conceptos Generales
A continuación se estudian conceptos comunes a los modos “Domain” y
“Standalone”

4.1.1 Extensiones
El servidor contiene una lista de módulos básicos llamados extensiones, los cuales
son compartidos por todos los servicios. Las extensiones pueden ser vistas como un
tipo especial de módulo los cuales son usados para ampliar las funcionalidades del
servidor. Como los módulos estándar, son almacenadas en el directorio
JBOSS_HOME/modules. Cada extensión es detectada por el cargador de clases
del servidor en tiempo de arranque antes de realizar cualquier despliegue.
<extensions>
<extension module="org.jboss.as.clustering.infinispan"/>
<extension module="org.jboss.as.messaging"/>
</extensions>

El servidor detecta que un módulo es una extension escaneando el


directorio META_INF/services de la librería. Tiene una Modules that
are qualified as Extensions contain in the META_INF/services folder a
placeholder file named org.jboss.as.controller.Extension. Este fichero
declara simplemente el nombre de la extensión. Por ejemplo. Para el
subsistema EJB3, contendrá org.jboss.as.ejb3.subsystem.
EJB3Extension.

4.1.2 Paths
Un <path name> es un nombre lógico para los paths del sistema de ficheros. El
siguiente ejemplo, define una path relativo para el directorio log del servidor AS
llamado log.dir, el cuál es traducido por servidores standalone en
JBOSS_HOME/standalone/log/mylogdir.
<paths>
<path name="log.dir" path="mylogdir" relative-to= "jboss.server.log.dir"/>
</paths>

Este path puede ser referenciado en otras secciones del fichero de configuración.
Por ejemplo, podemos usarlo como directorio para el almacenamiento del “logging
rotating file handler”:
<periodic-rotating-file-handler name="FILE" autoflush="true">
<file relative-to="log.dir" path="myserver.log"/>
</periodic-rotating-file-handler>

NOTA: la propiedad relative-to no es un mandato. Si no es incluido en la


configuración de path, el path es tratado como un path absoluto.

JBoss AS7: Modo domain 12/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Path Meaning
jboss.home Directorio raíz de la distribución
JBoss AS
user.home Directorio base de usuario.
user.dir Directorio de trabajo para el
usuario en curso
java.home Directorio instalación del Java
jboss.server.base.dir Directorio raíz para una instancia
individual del servidor
jboss.server.data.dir Directorio usado por el servidor
para almacenar ficheros de datos
persistentes
jboss.server.log.dir Directorio de almacenamiento de
ficheros de log
jboss.server.tmp.dir Directorio de almacenamiento de
ficheros temporales
jboss.domain.servers.dir Directorio bajo el cual un
Controlador de Host creará el área
de trabajo para instancias
individuales del servidor

4.1.3 Interface de Administración


Una característica nueva es su potente (sobretodo si se compara con versiones
anteriores, no con weblogic) consola de administración. La nativa interface CLI se
ejecuta en el puerto 9999, mientras que la consola escucha en el puerto 9990.
<socket-binding-group name="standard-sockets" default-interface="public">
.......
<socket-binding name="management-native" interface="management" port="9999"/>
<socket-binding name="management-http" interface="management" port="9990"/>
.......

</socket-binding-group>

4.1.4 Profiles
Es uno de los conceptos principales nuevos en JBoss AS 7. Un profile puede
considerarse como un conjunto de subsistemas: cada subsistema en si mismo tiene
un subconjunto de funcionalidades usadas por el servidor de aplicaciones. Por
ejemplo, el subsistema Web contiene la definición del conjunto de conectores usado

JBoss AS7: Modo domain 13/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

por el contenedor, el subsistema de mensajería define la configuración JMS y


módulos usados por los servidores de mensajes,…..
Una diferencia importante entre los ficheros de configuración estándar “standalone” y
“domain” es el número de profiles que contienen. Una configuración “standalone”
tiene un único profile que contiene la configuración de un conjunto de subsistemas.
La configuración “domain” puede proporcionar múltiples profiles.

4.1.5 Interfaces

La sección de interfaces contiene las interfaces de red / Direcciones IP ó nombres


de Host a las cuales una aplicación puede ser “asociada”.

Por defecto, el servidor en modo “standalone” define dos interfaces de red:


management y public:
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address. management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
</interfaces>

-----------------------------------------------------------------------------------------------------------------

La “public network interface” usa los servicios del servidor de aplicaciones:


<socket-binding-group name="standard-sockets" default-interface="public">
......
</socket-binding-group>
.
Ambas, por defecto, resuelven la dirección 127.0.0.1. Esto significa que, por defecto,
los servicios public y los servicios management están accesibles solamente desde la
máquina local.
Cambiando el valor de “inet-address value”, se puede ligar la network interface a otra
dirección IP, la cual está disponible en la máquina.
<interface name="public">
<inet-address value="192.168.1.1"/>
</interface>

Si se quiere asociar la network interface a todo el conjunto de direcciones IP


disponibles, se puede usar el elemento <any-address /> :
<interface name="public">
<any-address />
</interface>

JBoss AS7: Modo domain 14/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Otra variación muy usada de la network interface es el elemento Network Interface


Card (NIC), el cual gathers la información de la dirección desde la network card
name:
<interface name="public">
<nic name="eth0" />
</interface>

4.1.6 Socket binding groups


Un socket binding es el nombre dado a un socket. Dentro de esta sección se pueden
configurar los puertos de red, los cuales serán abiertos y preparados para aceptar
conexiones entrantes. Cada socket binding group referencia una network interface a
través del atributo default-interface:
<socket-binding-group name="standard-sockets" default-interface="public">
<socket-binding name="jndi" port="1099"/>
<socket-binding name="jmx-connector-registry" port="1090"/>
<socket-binding name="jmx-connector-server" port="1091"/>
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8447"/>
<socket-binding name="osgi-http" port="8090"/>
<socket-binding name="remoting" port="4447"/>
<socket-binding name="txn-recovery-environment" port="4712"/>
<socket-binding name="txn-status-manager" port="4713"/>
<socket-binding name="txn-socket-process-idr" port="4714"/>
<socket-binding name="messaging" port="5445"/>
<socket-binding name=" messaging-throughput" port="5455"/>
</socket-binding-group>

Se pueden cambiar los puertos a los cuales los servicios están asociados mediante
su atributo “port”. Es mejor usar las interfaces de administración que realizan de
manera inmediata el cambio.
En el siguiente ejemplo, se cambia el Puerto por defecto para el conector http
usando el CLI:
[standalone@localhost:9999 /] /socket-binding-group= standard-sockets/socket-
binding=http:write-attribute(name="port", value="8090")
{
"outcome" => "success",
"response-headers" => {
"operation-requires-reload" => true,
"process-state" => "reload-required"

JBoss AS7: Modo domain 15/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5 Configurando JBoss AS7 en modo Standalone


5.1.1 Introduccion:
En esta sección veremos como hay que instalar y configurar el Jboss, tanto a nivel se un solo nodo
como a nivel de Cluster.

5.1.2 Configuración de un solo nodo:

5.1.2.1 Crear la estructura de directorios:


La instalacion del software base de Jboss se hace dercomprimiendo el zip jboss-eap-6.1.0.zip en el
home del usuario /home/jboss, se puede descargar el zip de http://www.jboss.org.
Para separar el software base de la instalacion creamos la estructura de directorios siguiente.

Crear el directorio de instalacion: mkdir –p /home/jboss/dominios/TCORP

5.1.2.2 Crear el usuario administrador:


Ir a /home/jboss/jboss-eap-6.1/bin/ y ejecutar el script ./add-user.sh

What type of user do you wish to add?


a) Management User (mgmt-users.properties)
b) Application User (application-users.properties)
(a): a  seleccionar “a”

Enter the details of the new user to add.

JBoss AS7: Modo domain 16/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Realm (ManagementRealm) : ManagementRealm  Muy impottante Poner “ManagementRealm”


sino, no funciona la clave.
Username : administrador  nombre del administrador
User 'administrador' already exits, would you like to update the existing user password and roles
Is this correct yes/no? yes
Password :  poner la clave al final meter un “;” por ejemplo “admonMAQUINA1;”
Re-enter Password :
Updated user 'administrador' to file '/homejb/jboss-eap-6.1/standalone/configuration/mgmt-
users.properties'
Updated user 'administrador' to file '/homejb/jboss-eap-6.1/domain/configuration/mgmt-
users.properties'
Is this new user going to be used for one AS process to connect to another AS process?
e.g. for a slave host controller connecting to the master or for a Remoting connection for server to
server EJB calls.
yes/no? yes
To represent the user add the following to the server-identities definition <secret
value="YWRtb24xMTE7" />

Nota: el fichero donde se escribe el usuario en el fichero mgmt-users.properties en


/home/jboss/jboss-eap-6.1/standalone/configuration, cada vez que se crea un usuario nuevo o se
modifique la clave hay que copiar este fichero al directorio correspondiente de la instalacion y
reiniciar, nuestro caso es /home/jboss/ dominios/TCORP/TCORP-MAQUINA1-A/standalone/configuration

5.1.2.3 El directorio instalación:


Copier el directorio standalone al directorio de la instalación.
cp -R /home/jboss/jboss-eap-6.1/standalone /home/jboss/dominios/TCORP
Los scripde arranque estan: /home/jboss/Scripts_sistemas

JBoss AS7: Modo domain 17/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.2.4 El scrip de arranque es como siguiente:


vi start-TCORP-MAQUINA1-A.sh
export JAVA_HOME=/usr/java/jre1.7.0_45 #El home de la VM java
export JBOSS_HOME=/home/jboss/jboss-eap-6.1 #El home del Jboss

# Se comprueba si la intancia ya esta arrancada, si esta no la arranca y saca un mensaje de


que ha esta arrancara, si no esta arrancada la arranca.

APPJAVA="TCORP-MAQUINA1-A"
PORTSAG=9990 # Puerto de la consola http://maquina1.maq.es:9990/console
PID=$(netstat -tuanp | grep -m $PORTSAG | gawk '{ print $7 }' | cut -d "/" -f1)
COINCID=$(ps -ef | grep PID|grep -wo "$APPJAVA")
COINCID1=$(ps -fu `whoami` | grep java | grep -wo "$APPJAVA"|head -1)
export JAVA_OPTS="-Djava.util.Locale=es_ES -Duser.Region=ES -Duser.language=es
-Dfile.encoding=iso-8859-1 -Duser.timezone=UTC
-Dorg.apache.el.parser.COERCE_TO_ZERO=false"

if [ "$COINCID" != "" ] && [ "$COINCID1" = "$APPJAVA" ]; then


echo "Se encuentra una instancia activa de $APPJAVA con PID = $COINCID"
echo "Primero debe parar esta instancia para arrancar una nueva"
exit
fi
if [ "$COINCID1" = "$APPJAVA" ]; then
echo "Se encuentra una instancia activa de $APPJAVA"
echo "Primero debe parar esta instancia para arrancar una nueva"
exit
fi

echo
echo "-La de la consolaes --> http://maquina1.maq.es:9990/console" # La consola de
#administración del jboss
echo "-La URL de servicio --> http://maquina1.maq.es:8080/" la url de servicio
echo "-El log es --> /home/jboss/dominios/TCORP/TCORP-MAQUINA1-A/standalone/log/server.log"
echo

$JBOSS_HOME/bin/standalone.sh --server-config=standalone.xml -Djboss.bind.address=89.1.5.49


-Djboss.bind.address.management=89.1.5.49
-Djboss.server.base.dir=/home/jboss/dominios/TCORP/TCORP-MAQUINA1-A/standalone
-Djboss.node.name=TCORP-MAQUINA1-A >> /home/jboss/dominios/TCORP/TCORP-MAQUINA1-
A/standalone/log/server.log 2>&1 &

$JBOSS_HOME/bin/standalone.sh: El script utilizado para arrancar el jboss.


--server-config: Aquí se esoecifica el modo de arranque si en solo standaline, ha, full o full-ha.
-Djboss.bind.address: Aquí se pone la interfaz de servicio es la IP de la maquina, en este caso el
puerto de servicio es 8080.
-Djboss.bind.address.management: Aquí se pone la interfaz de la administración, es para acceder
a la consola de admistracion del Jboss, el puerto en este caso es 9990.

JBoss AS7: Modo domain 18/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

-Djboss.server.base.dir: Directorio donde de la instalacion de la instancia Jboss, en esta caso es:


/home/jboss/dominios/TCORP/TCORP-MAQUINA1-A/standalone
-Djboss.node.name: Nombre de la instancia Jboss.
Nota: todos esto parámetros tienen que estar en la misma línea.
El scrip de parada es como siguiente:
vi stopTCORP-MAQUINA1-A.sh

export JBOSS_HOME=/home/jboss/jboss-eap-6.1
echo
echo "------ PARANDO TCORP-MAQUINA1-A ----"
echo
$JBOSS_HOME/bin/jboss-cli.sh --connect controller=89.1.5.49:9999 command=:shutdown

controller: se pone la IP de la maquina.

5.1.2.5 Utilizar el parámetro offset:


Para tener más de una instancia de jobos en la misma máquina en las anteriores había que
configurar varios ficheros, lo que lo ponía un poco tedioso, en esta versión ya no hace falta configurar
tanto ficheros, solo hay que configurar el parámetro offset le ponemos un número y este se irá
añadiendo a los puertos por defecto por ejemplo al 8080 y al 9090, como se muestra en el script de
arranque siguiente:

.
.
.
.
echo
echo "-La de la consolaes --> http://maquina1.maq.es:10190/console"
echo "-La URL de servicio --> http://maquina1.maq.es:8280/"
echo "-El log es --> /home/jboss/dominios/TCORP2/TCORP2-MAQUINA1-A/standalone/log/server.log"
echo
$JBOSS_HOME/bin/standalone.sh --server-config=standalone-ha.xml
-Djboss.bind.address=89.1.5.49 -Djboss.bind.address.management=89.1.5.49
-Djboss.server.base.dir=/home/jboss/dominios/TCORP2/TCORP2-MAQUINA1-A/standalone
-Djboss.node.name=TCORP2-MAQUINA1-A -Djboss.socket.binding.port-offset=200
>> /home/jboss/dominios/TCORP2/TCORP2-MAQUINA1-A/standalone/log/server.log 2>&1 &

-Djboss.socket.binding.port-offset=200 en este caso:


 Se añade 200 al 8080  el puesto de servicio pasaría a 8280
 Al 9090 se añade 200  el puerto de la interface de administración pasaría a 9290

JBoss AS7: Modo domain 19/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.2.6 Arrancar de la instancia del jboss:


Para arrancar el Jboss se ejecuta el script ./start-TCORP-MAQUINA1-A.sh

5.1.2.7 La consola de administración:


Sale un ventana donde pide usuario y clave (admin/admin001;)

JBoss AS7: Modo domain 20/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.2.8 Despliegue del driver oracle:


Como el driver de oracle no se detecta automáticamente se realiza como un despliegue normal de
una aplicación.

JBoss AS7: Modo domain 21/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Seleccionamos modo Runtime-> Manage Deployment y pulsamos Add, no sale la ventana de


Create Deployment

JBoss AS7: Modo domain 22/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Pulsamos Examinar luego seleccionamos el fichero a desplegar conde lo hayamos dejado en nuestro
PC y pusamos Abrir.

Pulsar Next

JBoss AS7: Modo domain 23/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Pulsar Save

En principio el despliegue esta desabilitado ha y qu abilitarlo: Pulsar En/Disable

JBoss AS7: Modo domain 24/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Pulsamos Confirm

El resultado final

JBoss AS7: Modo domain 25/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.2.9 Configuración del JDBC:


Ir a Profile -> Subsystems -> Datasources y pulsar Add

Meter el nombre del Datasource, el JNDI y Pulsar Next

JBoss AS7: Modo domain 26/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Seleccionar el driver

Meter los datos la URL, usuario y clave, aquí hay un ejemlpo de una url:
jdbc:oracle:thin:@tcorpdes3.maquina2.maq.es:1524:TCORPDS3

JBoss AS7: Modo domain 27/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Activar el Datasource seleccionar el datasouce y pulsar Enable

Situacion final

Testear el Datasource: Connector -> Test Connection

JBoss AS7: Modo domain 28/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

JBoss AS7: Modo domain 29/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Borrar el Datasource: Seleccionar el Datasource y Pulsar Confirm

JBoss AS7: Modo domain 30/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.3 Configuration en modo cluster


Tanto en la misma máquina como en dos maquinas independientes el cada nodo se configure
independiente como en el apartado anterior, ósea en modo standalone, la principal diferencia están
en el modo de arranque ya que el fichero que se utiliza en modo cluster es el standalone-ha.xml.
Crear la estructura de dominios:

5.1.3.1 En la misma máquina:

jboss@MAQUINA1:~> mkdir -p dominios/TCORP/TCORP-MAQUINA1-A


jboss@MAQUINA1:~> mkdir -p dominios/TCORP/TCORP-MAQUINA1-B

jboss@MAQUINA1:~> cp -R jboss-eap-6.1/standalone dominios/TCORP/TCORP-MAQUINA1-A


jboss@MAQUINA1:~> cp -R jboss-eap-6.1/standalone dominios/TCORP/TCORP-MAQUINA1-B

JBoss AS7: Modo domain 31/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

5.1.3.2 En maquinas diferentes:

jboss@sc1108:~> mkdir -p dominios/GSV/GSV-SC1108-A/


jboss@sc1108:~> cp -R jboss-eap-6.1/standalone/ dominios/GSV/GSV-SC1108-A/

start-GSV-SC1108-A.sh

export JAVA_HOME=/usr/java/jre1.6.0_25
export JBOSS_HOME=/home/jboss/jboss-eap-6.1
APPJAVA="GSV-SC1108-A"
# Comprobar si el proceso esta arrancado.
PORTSAG=9990 # Puerto de la consola http://sc1108.sscc.ae.aena.es:9990/console
PID=$(netstat -tuanp | grep $PORTSAG | gawk '{ print $7 }' | cut -d "/" -f1)
COINCID=$(ps -ef | grep PID|grep -wo "$APPJAVA")
COINCID1=$(ps -fu `whoami` | grep java | grep -wo "$APPJAVA"|head -1)
if [ "$COINCID" != "" ] && [ "$COINCID1" = "$APPJAVA" ]; then
echo ""
echo " Se encuentra una instancia activa de $APPJAVA con PID = $COINCID"
echo ""
echo " !!! Primero debe parar esta instancia para arrancar una nueva !!!"
echo ""
exit
fi
if [ "$COINCID1" = "$APPJAVA" ]; then
echo ""
echo " Se encuentra una instancia activa de $APPJAVA"
echo ""
echo " !!! Primero debe parar esta instancia para arrancar una nueva !!!"
echo ""
exit
fi

JBoss AS7: Modo domain 32/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

echo
echo "-La de la consolaes --> http://sc1108.sscc.ae.aena.es:9990/console"
echo "-La URL de servicio --> http://sc1108.sscc.ae.aena.es:8080/"
echo "-El log es --> /home/jboss/dominios/GSV/GSV-SC1108-A/standalone/log/server.log"
echo
$JBOSS_HOME/bin/standalone.sh --server-config=standalone-ha.xml
-Djboss.bind.address=89.1.6.197 -Djboss.bind.address.management=89.1.6.197
-Djboss.server.base.dir=/home/jboss/dominios/GSV/GSV-SC1108-A/standalone
-Djboss.node.name=GSV-SC1108-A -Djboss.default.multicast.address=230.0.0.70 >>
/home/jboss/dominios/GSV/GSV-SC1108-A/standalone/log/server.log 2>&1 &

--server-config=standalone-ha.xml donde se especifica el fichero con el que hay que arrancar,


standalone-ha.xml ya que es en modo cluster.
-Djboss.default.multicast.address=230.0.0.70 donde se especifica el la IP multicast, esta ip tiene
que ser unica en toda la red, por ejemplo la red 89.

JBoss AS7: Modo domain 33/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

6 Configurando JBoss AS 7 en modo Domain


6.1.1 Introducción.
Básicamente un dominio es una unidad administrativa. En términos muy generales
es un perímetro dentro del cual todos los servidores JBoss AS son administrados por
un Controlador de Dominio.
El concepto de dominio no debe interferir con las capacidades proporcionadas por
los servidores. Por ejemplo, se podría configurar un dominio de servidores
ejecutándose en cluster, proporcionado balanceo de carga, y alta disponibilidad.
Pero también podríamos tener los mismos servicios con un grupo de servidores
configurados en modo “standalone”.
La diferencia entre estos dos escenarios es que en modo “dominio” podemos
administrar el grupo de servidores desde un único servidor, un punto centralizado.
Por el contrario, en modo “standalone” la administración de los servidores a menudo
requiere de técnicas muy sofisticadas de administración multi-servidor las cuales no
siempre son asumibles por las compañías ó una administración dirigida a cada
servidor.
Un dominio está formado por cuatro elementos:
1. Domain controller: El Controlador de Dominio es el punto de administración
del dominio. Una instancia AS ejecutándose en modo dominio tendrá como
máximo un proceso de la instancia actuando como Controlador de Dominio.
El Controlador de Dominio mantiene una configuración centralizada, la cual es
compartida por los nodos pertenecientes al dominio.
2. Host controller: El Controlador de Host está estrechamente relacionado con
la administración del servidor (Controlador de Dominio); por sí mismo no
controla la carga de trabajo del servidor de aplicaciones. El Controlador de
Host es responsable del arranque y parada de los procesos individuales de
las aplicaciones que corren sobre su host, e interactúa con el Controlador de
Dominio para manejarlos.
3. Process controller: son procesos ligeros cuya función principal es crear
procesos de servidor y procesos de controlador de host, y manejar sus
canales de entrada/salida.
4. Application server nodes: Son procesos regulares Java que mapean las
instancias del servidor de aplicaciones.
La configuración de dominio incluye básicamente the domain configuration includes
a basic configuration made up of the following elements:
 Un Controlador de Proceso arranca el resto de procesos JVM.
 Un Controlador de Host que actúa sobre el Controlador de Dominio.
 Tres nodos de servidor. Los dos primeros componen el main server group, y
el tercero (inactivo) es parte de other server group.
JBoss AS7: Modo domain 34/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Una vez que el servidor en modo dominio esta arrancado (domain.sh o domain.bat),
se crean algunos ficheros de log. La actividad (traza) del Controlador de Host será
almacenada JBOSS_HOME\domain\log\host-controller, mientras los logs del Control
de Proceso será almacenado JBOSS_HOME\domain\log\process-controller.

6.1.2 Configurando el dominio


La configuración del modo “domain” lo configuran principalmente dos ficheros que
están localizados por defecto en el directorio JBOSS_HOME\domain\configuration:
1. El fichero domain.xml describe las características de los servidores de
dominio y definen los server groups que son parte del domino.
2. El fichero host.xml está presente en cada host donde el dominio está
instalado y especifica los elementos que son específicos a los servidores
ejecutándose sobre el host..
Sobrescribiendo los ficheros de configuración
Es posible cambiar el nombre de los ficheros de configuración y su path:
domain.bat --domain-config=custom_domain.xml
domain.bat --host-config=custom_host.xml
El equivalente en Linux será:
./domain.sh --domain-config=custom_domain.xml

JBoss AS7: Modo domain 35/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

./domain.sh --host-config=custom_host.xml

Nota- si no se proporciona un path, se asume relative al directorio


jboss.server.config.dir. En otro caso, se toma como un path absoluto.

6.1.2.1 Configuración del fichero domain.xml


El fichero domain.xml contiene la configuración de todos los subsistemas que son
compartidos por todos los servidores del dominio. El contenido de este fichero sigue
la misma estructura del fichero standalone, con una lógica e importante diferencia:
un dominio puede tener varios profiles. Por defecto, son definidos dos profiles:
default profile y ha profile (utlizado en la configuración de cluster en modo
dominio). No obstante, es posible definir un profile propio en el fichero del mismo
modo que el web profile ó el profile de mensajería.

Cada dominio de servidores puede ser dividido en server groups, cada uno asociado
a profiles diferentes. El concepto de server groups puede ser entendido como un
grupo de servidores pertenecientes a un dominio administrados como una simple
unidad.
Los server groups pueden ser utilizados para optimizar la configuración de nodos,
por ejemplo, cada server group puede definir sus propias características, tales como
ajustes para la JVM, interfaces socket bindings , o aplicaciones desplegadas..
La siguiente figura muestra algunos atributos comunes, los cuales pueden ser
aplicados a un server group:

JBoss AS7: Modo domain 36/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

A continuación se muestra una definición de server group asociado a un profile tipo


default en el cual puede observarse una aplicación desplegada llamada simple.war,
una optimización para la JVM, algunas properties (las cuales son cargadas en
tiempo de arranque) y asocia sus servicios a standard-sockets.
<server-group name="custom-server-group" profile="default">
<deployments>
<deployment name="sample.war_v1" runtime-name="sample.war"
hash="ABCDEFG1234567890ABC"/>
</deployments>
<jvm name="default">
<heap size="512m" max-size="1g"/>
</jvm>
<socket-binding-group ref="standard-sockets"/>
<system-properties>
<property name="foo" value="bar" boot-time="true"/>
<property name="key" value="value" boot-time="true"/>
</system-properties>
</server-group>

JBoss AS7: Modo domain 37/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

7 Configuración del fichero host.xml


Esta localizado en el directorio JBOSS_HOME\domain\configuration. Básicamente
define y configura las instancias de servidor (server nodes) que están ejecutándose
en un host que forma parte de un dominio.
El termino host aquí se refiere a una estructura física que forma parte de un dominio
el cual está contenido de una misma distribución AS.

JBoss AS7: Modo domain 38/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Según la figura, un dominio puede contener varios hosts (host1, host2) y también
varios grupos. (main server group, other server group). Sin embargo, mientras un
server group es simplemente una asociación lógica de varios nodos que pueden
estar ubicados en cualquier sitio, un host se refiere a un conjunto de nodos
(instancias) que son parte de la misma distribución AS.
El termino host puede tomarse como máquina, si se instala una distribución de AS
por máquina. Esto no siempre es verdad, se pueden instalar varias distribuciones AS
en la misma máquina de tal manera que tendríamos múltiples host en la misma
máquina.
Para completar la definición de hosts, se deben añadir los siguientes grupos de
elementos de dominio:
 Las interfaces de administración usadas para administrar el dominio.
 Definición del Controlador de Dominio
 Las Interfaces de Red donde los services son asociados.
 Configuraciones para JVM.
 Los servidores que forman parte del dominio.

7.1.1.1 Configuración de la interface de administración


La interface de administración incluye la definición de la Command Line Interface
(CLI) y la interface http usada para administrar el dominio:
<management-interfaces>
<native-interface security-realm="ManagementRealm">
<socket interface="management" port="9999"/>
</native-interface>
<http-interface security-realm="ManagementRealm">
<socket interface="management" port="9990"/>
</http-interface>
</management-interfaces>

7.1.1.2 Configuración de la interface de red


Una network interface se refiere a una o un grupo de direcciones. Por defecto el
servidor tiene definidas dos interfaces de red: management y public
respectivamente, y ambas asociadas la dirección (127.0.0.1).
Cambiado este valor de la interface de red, se puede configurar la dirección de
escucha para el servidor. Por ejemplo, si se quiere asociar la interface de
administración a la dirección 127.0.0.1 y la interface pública a la dirección
192.168.1.1, simplemente se usa la siguiente configuración:
<interfaces>
<interface name="management">
<inet-address value="127.0.0.1"/>
</interface>
<interface name="public">
<inet-address value="192.168.1.1"/>

JBoss AS7: Modo domain 39/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

</interface>
</interfaces>

Lo que esto significa en la práctica es que las interfaces de administración (la


consola de administración http y la CLI) serán asociadas a la dirección 127.0.0.1,
mientras que los servicios relacionados de aplicación (asociados a la interface
publica) serán ligados la dirección IP 192.168.1.1.
<socket-binding-group name="standard-sockets" default-interface="public">
<socket-binding name="http" port="8080"/>
<socket-binding name="https" port="8443"/>
.....
</socket-binding-group>

7.1.1.3 Configuración del Controlador de Dominio


Por defecto, el controlador de dominio está ubicado en la misma máquina donde se
arrancó el dominio.
<domain-controller>
<local/>
</domain-controller>

No obstante, se puede configurar un host para usar un Controlador de Dominio


ubicado en un host remoto:
<domain-controller>
<remote host="192.168.100.1" port="9999"/>
</domain-controller>

Configurar el Controlador de Dominio en un host remoto significa que la


configuración local (domain.xml) no será usada y todos los servidores usarán la
configuración centralizada almacenada en el host remoto.

7.1.1.4 Configuración de la JVM


Los atributos de la JVM están en el fichero host.xml donde pueden ser configurados
y asociarlos a un nombre:
<jvms>
<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
</jvms>

Esta definición de la JVM puede se usada (y sobrescrita) como parte de la


configuración de un server group. Por ejemplo, el server group other-server-group
(domain.xml) usará los atributos de la JVM default para todas las instancias de
servidor, redefiniendo el atributo heap max-size:
<server-group name="other-server-group" profile="default">
<jvm name="default">
<heap max-size="512m"/>
</jvm>
JBoss AS7: Modo domain 40/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<socket-binding-group ref="standard-sockets"/>
</server-group>

La definición de una JVM también puede ser asociada a una instancia en particular,
de tal manera que se sobrescriba la definición del server group. Por ejemplo, server-
one (definido en host.xml) hereda la configuración default JVM, actualizando los
atributos custom min (512 MB) y max heap size (1 GB):
<server name="server-one" group="main-server-group" auto-start="true">
<jvm name="default">
<heap size="512m" max-size="1G"/>
</jvm>
</server>

7.1.1.5 Añadir opciones nuevas a la JVM para un servidor


Si se quiere añadir opciones especiales (no-estándar) a la configuración de la JVM,
se realiza utilizando el elemento jvm-options. Por ejemplo, añadimos a la
configuración default JVM la opción low-pause garbage collector:
<jvm name="default">
<heap size="64m" max-size="128m"/>
<jvm-options>
<jvm-option value="-XX:+UseConcMarkSweepGC"/>
</jvm>

7.1.1.6 Configuración instancias (server nodes)


El último elemento en la configuración del host incluye la lista de servidores que
forman parte del dominio. La configuración de un servidor requiere, como mínimo, el
nombre del servidor y el grupo al cual el servidor pertenece:
<!-- host.xml configuration file -->
<servers>
<server name="server-one" group="main-server-group" />
</servers>

La configuración de un servidor está compuesta por un amplio conjunto de atributos


estándar. No obstante, se pueden optimizar los servidores añadiendo paths
específicos, socket binding interfaces, system properties, o JVMs.
<server auto-start="true" name="sample" group="sample-group" >
<paths>
<path name="example" path="example" relative-to="jboss.server.log.dir"/>
</paths>
<socket-binding-group port-offset="250" ref="standard-sockets"/>
<system-properties>
<property boot-time="true" name="envVar" value="12345"/>
</system-properties>
<jvm name="default">
<heap size="256m" max-size="512m"/>
</jvm>
</server>

JBoss AS7: Modo domain 41/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

8 Clusterización
En versiones anteriores de JBoss las librerías características del cluster estaban
empaquetadas dentro de la configuración all del servidor, la cual estaba separada
del resto de configuraciones por defecto.
En AS 7 no existen diferentes configuraciones (librerías + ficheros de configuración)
de servidor. Todo lo que hay que hacer para crear un nuevo profile es crear un
nuevo fichero XML de configuración asociado.
El modo standalone usa un único profile, definido en el fichero de configuración
(standalone-ha.xml), el cual contiene todos los subsistemas para la clusterización.
El modo domain puede usar múltiples profiles definidos en el fichero domain.xml, los
cuales pueden ser usados por servidores en modo domain clusterizados y no
clusterizados.
Un error muy común de concepto es equiparar el concepto de domain a un cluster
de nodos, de tal manera que podría ser usado para aportar importantes
características como el balanceo de carga o la alta disponibilidad.
El modo dominio no tiene nada que ver con las funcionalidades que una aplicación
necesite. Está orientado al concepto de administración del servidor de tal manera
que puede ser usado con aplicaciones preparadas para funcionar en cluster y con
aplicaciones que no lo estén.
El modo domain y el Cluster no son mutuamenete excluyentes y a menudo forman
parte del mismo escenario.
En esta sección se van a describir las diferentes maneras de montar y arrancar un
cluster de servidores en modo standalone y en dominio.

8.1.1 Cluster de servidores en modo domain


Vamos a configurar servidores JBoss AS7 en modo dominio trabajando en cluster de
tal manera que se tenga HA y replicación de sesión entre los nodos.
El AS7 en modo domain (fichero domain.xml) contempla dos profiles uno de ellos
para la clusterización:
 Profile default, puede ser usado para entornos no-clusterizados.
 Profile ha para entornos clusterizados.
Preparación
 Se necesitan tres host (o virtual host ): master,slave1,slave2
El maestro actuará como Controlador de Dominio: Consola de Administración.
Los esclavos serán administrados por el maestro.
 Asegurarse de que están en la misma red local.

JBoss AS7: Modo domain 42/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

 Pueden ser accedidos cada uno via TCP/UDP. Habilitar puertos.


Escenario
Se desplegará la aplicación demo en el dominio, y se verificará que es desplegada
por el AS7 maestro (Controlador de Dominio) en los AS7 esclavos: slave1 y slave2.
De esta manera comprobaremos que el Controlador de Dominio proporciona un
único punto para manejar los despliegues a través de los múltiples AS7 que forman
parte del dominio.
Se realizarán peticiones URL al cluster y comprobaremos que httpd distribuye las
peticiones a uno de los AS7 esclavos del cluster. Con esto comprobamos que el
cluster está trabajando correctamente.
Realizar una petición al cluster, y si el requerimiento es direccionado al AS7 slave1,
entonces “pararemos” el AS7 slave1. Después de esto continuaremos peticionando
al cluster y deberíamos ver que los requerimientos son direccionados al AS7
slave2, pero sin pérdida de sesión. La idea es verificar que la HA está trabajando y
las sesiones son replicadas.
Por último, “arrancamos” de nuevo el AS7 slave1. Deberíamos ver que el AS7
slave1 se reintegra al cluster y que el Controlador de Dominio lo detecta
incorporándolo.

JBoss AS7: Modo domain 43/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Se tienen dos server groups: main-server-group y other-server-group. Se pueden


cambiar los profiles asociados de cada server group y asociarlos a un profile
diferente.
La configuración por defecto incluye cuatro profiles preconfigurados:

 default - Java EE Web-Profile mas algunas extensions como RESTFul Web


Services o soporte para invocación remota EJB3.
 full - Java EE Full-Profile y todas las capacidades del servidor sin
clusterización.
 ha - default profile con capacidades de clusterización.
 full-ha - full profile con capacidades de clusterización.

8.1.1.1 Configuración del Dominio

8.1.1.1.1 Configuración de interfaces en el servidor AS7 maestro

En esta sección se procede a configurar los AS7 maestro y esclavos para que todos
se ejecuten en modo dominio. También se configurará el AS7 maestror como
Controlador de Dominio.

Editar el fichero host.xml en el servidor AS7 master:

La configuración por defecto para el elemento interface en el fichero es la siguiente:

<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:127.0.0.1}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address:127.0.0.1}"/>
</interface>
<interface name="unsecured">
<inet-address value="127.0.0.1" />
</interface>
</interfaces>

Se debe cambiar la dirección de management interface de tal manera que los AS7
esclavos puedan conectar con el AS7 maestro. La public interface permite que la
aplicación pueda ser accedida vía HTTP no local, y la unsecured interface permite
acceso remoto RMI. La IP del AS7 maestro es 89.1.4.241:

<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management: 0.0.0.0}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address: 89.1.4.241}"/>
</interface>
JBoss AS7: Modo domain 44/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<interface name="unsecured">
<inet-address value="89.1.4.241" />
</interface>
</interfaces>

8.1.1.1.2 Configuración de interfaces en el servidor AS7 esclavos


Se procede a configurar las interfaces en los AS7 esclavos. Lo primero es borrar el
fichero domain.xml de los AS7 esclavos, porque los AS7 esclavos no actuarán
como Controlador de Dominio y serán administrados por el AS7 maestro.
Editar el fichero host.xml de los AS7 esclavos.
Se necesita que los AS7 esclavos conecten con el AS7 maestro. Lo primero
configuramos el hostname. Para ello cambiamos la propiedad name:

<host name="slave1" xmlns="urn:jboss:domain:1.2">

<host name="slave2" xmlns="urn:jboss:domain:1.2">

Ahora se modifica la sección domain-controller de tal manera que los AS7 esclavos
puedan conectar AS7 maestro cuya IP es 89.1.4.241 :
<domain-controller>
<remote host="89.1.4.241" port="9999"/>
</domain-controller>
Finalmente, también es necesario configurar la sección de interfaces y hacer visibles
las direcciones de los AS7 esclavos:
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:89.1.5.17}"/>
</interface>
<interface name="public">
<inet-address value="${jboss.bind.address: 89.1.5.17}"/>
</interface>
<interface name="unsecured">
<inet-address value="89.1.5.17" />
</interface>
</interfaces>
<interfaces>
<interface name="management">
<inet-address value="${jboss.bind.address.management:89.1.4.237}"/>
</interface>

JBoss AS7: Modo domain 45/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<interface name="public">
<inet-address value="${jboss.bind.address: 89.1.4.237}"/>
</interface>
<interface name="unsecured">
<inet-address value="89.1.4.237" />
</interface>
</interfaces>

8.1.1.1.3 Configurar la seguridad


Si se arrancan los AS7 maestro y esclavos, se verá que el AS7 no puede arrancar
dando el siguiente error:

[Host Controller] 20:31:24,575 ERROR [org.jboss.remoting.remote] (Remoting "endpoint" read-1)


JBREM000200: Remote connection failed: javax.security.sasl.SaslException: Authentication failed:
all available authentication mechanisms failed
[Host Controller] 20:31:24,579 WARN [org.jboss.as.host.controller] (Controller Boot Thread)
JBAS010900: Could not connect to remote domain controller 89.1.4.241:9999
[Host Controller] 20:31:24,582 ERROR [org.jboss.as.host.controller] (Controller Boot Thread)
JBAS010901: Could not connect to master. Abort

Esto es debido a que no está configurada la “autentificación” entre los AS7 maestro
y esclavos.
Maestro
En el directorio bin hay un script llamado add-user.sh el cual se usará para añadir
nuevos usuarios al fichero de properties usado para la autentificación del domino:

./add-user.sh

Enter the details of the new user to add.


Realm (ManagementRealm):
Username: admin
Password: 123123
Re-enter Password: 123123
The username 'admin' is easy to guess
Are you sure you want to add user 'admin' yes/no? yes
About to add user 'admin' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'admin' to file ' /home/dssanz/jboss-as-7.1.1.Final/standalone/configuration/mgmt-
users.properties'

JBoss AS7: Modo domain 46/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Added user 'admin' to file '/home/dssanz/jboss-as-7.1.1.Final/domain/configuration/mgmt-


users.properties'
Acabamos de crear un usuario llamado 'admin' y su password es '123123'. Ahora
añadimos otro usuario para los esclavos.
./add-user.sh

Enter the details of the new user to add.


Realm (ManagementRealm):
Username: slave1
Password: 123123
Re-enter Password: 123123
About to add user 'slave1' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'slave1' to file ‘/home/dssanz/jboss-as-7.1.1.Final/standalone/configuration/mgmt-
users.properties'
Added user 'slave1' to file '/home/dssanz/jboss-as-7.1.1.Final/domain/configuration/mgmt-
users.properties'
./add-user.sh

Enter the details of the new user to add.


Realm (ManagementRealm):
Username: slave2
Password: 123123
Re-enter Password: 123123
About to add user 'slave2' for realm 'ManagementRealm'
Is this correct yes/no? yes
Added user 'slave2' to file ‘/home/dssanz/jboss-as-7.1.1.Final/standalone/configuration/mgmt-
users.properties'
Added user 'slave2' to file '/home/dssanz/jboss-as-7.1.1.Final/domain/configuration/mgmt-
users.properties'
Cada AS7 esclavo usará este usuario para conectarse al AS7 maestro.
NOTA: el username debe ser el mismo que el dado a los esclavos en sus
respectivos elemento host. Esto significa que para cada adicional host se necesitará
un usuario.
En la últimas versiones de JBoss AS7, el script add-usr.sh permite elegir el tipo de
usuario. En el resto se usa “Management User” para ambas cuentas: maestro y
esclavos.

./add-user.sh
What type of user do you wish to add?
a) Management User (mgmt-users.properties)
b) Application User (application-user.properties)
(a):

JBoss AS7: Modo domain 47/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Esclavos

En los esclavos es necesario configurar la “autentificación” en el fichero host.xml:

<security-realms>
<security-realm name="ManagementRealm">
<server-identities>
<secret value="MTIzMTIz="/>
</server-identities>
<authentication>
<properties path="mgmt-users.properties" relative-to="jboss.domain.config.dir"/>
</authentication>
</security-realm>
</security-realms>

Se ha añadido la sección <server-identities> dentro de la sección <security-realm> la


cual es usada en la autentificación del host cuando un esclavo trata de conectarse
con el maestro.

Los nombres de los host esclavos fueron definidos anteriormente como slave1 y
slave2, y estos mismos nombres deben ser utilizados para acceder al host maestro.
El valor de la propiedad <secret value> es 'MTIzMTIz=', lo cual es la codificación en
base64 para '123123'. Este valor se puede generar usando un generador base64.

También es necesario añadir la propiedad <security-realm>:

<domain-controller>
<remote host="89.1.4.241" port="9999" security-realm="ManagementRealm"/>
</domain-controller>

8.1.1.2 Arrancar Hosts


Ahora es el momento de arrancar todos los hosts AS7 maestro + esclavos. Si todo
ha ido bien en el log del maestro deberíamos de ver la siguiente información:
[Host Controller] 16:48:19,308 INFO [org.jboss.as.domain] (domain-mgmt-handler-thread - 5)
JBAS010918: Registered remote slave host "slave1", JBoss AS 7. 1.1.Final "Brontes"
[Host Controller] 16:48:22,371 INFO [org.jboss.as.domain] (domain-mgmt-handler-thread - 6)
JBAS010918: Registered remote slave host "slave2", JBoss AS 7. 1.1.Final "Brontes"

Esto significa que todo está configurado bien y que además tenemos dos host
esclavos + un host maestro corriendo en modo dominio.
JBoss AS7: Modo domain 48/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

8.1.1.3 Despliegue Aplicación


Hasta este momento se tienen configurados tres hosts AS7: 1 maestro + 2 esclavos
en modo domain. Falta configurar la HA y la replicación de sesión.
Para ello se ha programado un aplicación cluster-demo.war la cual se va a desplegar
en el entorno domain previamente configurado.
En el fichero web.xml se abilita la replicación de sesión:
<web-app>
<display-name>Archetype Created Web Application</display-name>
<distributable/>
</web-app>

La página put.jsp muestra fecha y hora actual y la asigna a la sesión llamada


currenttime.
<%
System.out.println( "Putting date now" );
session.setAttribute("current.time", new java.util.Date());
%>
Ysemuestraelvalordelasiguientemanera:

The time is set to <%= session.getAttribute("current.time") %>

La aplicación es muy simple pero va permitir testear el cluster:


1) Realizaremos un requerimiento (put.jsp) al cluster (IIS7) y comprobaremos
que es servido por un esclavo (supongamos que es el slave2).
2) Desconectamos (parar la instancia) el slave2 y lanzamos un requerimiento
(get.jsp) al cluster (IIS7).
3) Deberíamos ver que el requerimiento es servido por el otro esclavo (slave1)
pero el valor del “current time” debe ser mantenido por la replicación de
sesión.

Para desplegar la aplicación en el dominio se realizará vía consola.


http://sc1034.sscc.ae.aena.es:9990/console

JBoss AS7: Modo domain 49/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Por defecto (en la figura hay una cuarta) hay tres instancias AS7:
server-one (inactiva)
server-two (inactiva)
server-three (inactiva)

server-one y server-two pertenecen a main-server-group; server-three pertenece a


other-server-group.
Todos estos servers y server groups están configurados en el fichero domain.xml en
la distribución AS7.
Nos interesa other-server-group:

JBoss AS7: Modo domain 50/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<server-group name="other-server-group" profile="ha">


<jvm name="default">
<heap size="64m" max-size="512m"/>
</jvm>
<socket-binding-group ref="ha-sockets"/>
</server-group>
En las últimas versiones de JBSS AS7, el profile se ha cambiado a full-ha.
<server-group name="other-server-group" profile="full-ha>
Se ha creado una nueva instancia AS7 “clusterdemo” la cual va a servir de ejemplo
a lo largo de este apartado. Esta nueva instancia es semejante a la instancia AS7
“server-three”.
También se ha creado un nuevo server-group: “clusterdemo-server-group”. Un
server-group especifica un conjunto de políticas que serán aplicadas a un grupo de
servidores. En otras palabras son profiles.
Esta instancia AS7 “clusterdemo” debe crearse en los servidores Maestro +
Esclavos. Partimos de que esta arrancada en todos los servidores.

JBoss AS7: Modo domain 51/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

JBoss AS7: Modo domain 52/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Una vez arrancada la instancia clusterdemo en los AS7 maestro y esclavos el


siguiente paso es desplegar la aplicación cluster-demo.war. Para lo cual cliquear en
la opción MangeDeployments:

JBoss AS7: Modo domain 53/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Una vez en la página 'Manage Deployments, cliqueamos en Add Content.


Seleccionamos la aplicación cluster-demo.war, y seguimos las instrucciones para
añadirla al repositorio. Por último cliqueamos en Add to Groups para añadirla al
profile clusterdemo-server-group. Finalmente cliqueamos Save.

JBoss AS7: Modo domain 54/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Hay tres hosts constituyendo este server group de tal manera que la aplicación debe
ser desplegada en todos: maestro y esclavos que son los que configuran el dominio.

Maestro http://89.1.4.241:8380

Esclavo 1 http://89.1.4.237:8380

JBoss AS7: Modo domain 55/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Esclavo 2 http://89.1.4.237:8380

¿Por qué el puerto de escucha de la aplicación es el 8380 en lugar de 8080? La


respuesta está en el fichero host.xml de cada host (maestro + esclavos) que
configura el dominio:

<servers>
<server name="clusterdemo" group="clusterdemo-server-group" auto-start="true">
<socket-bindings socket-binding-group="ha-sockets" port-offset="300"/>
</server>
</servers>

El port-offset = 300 luego 8080 + 300 = 8380

Hasta aquí tenemos los JBOSS AS7 (master + slave1 + slave2) en modo Domain
operativos.
Lo siguiente es la configuración del cluster y por último las pruebas de replicación de
sesión.

JBoss AS7: Modo domain 56/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

8.1.2 Configuración en cluster


Normalmente el IIS no puede ejecutar Servlets y Java Server Pages (JSPs).
JK ISAPI permitirá enviar requerimientos Servlets and JSP al JBOSS y de esta
manera resolver las peticiones cliente.

Filtro ISAPI. Redirección hacia el JBOSS AS.


1) El redirector IIS-JBOSS AS es un programa que corre bajo IIS, el IIS carga el
redirector y lo llama cada vez que tenga que resolver un requerimiento
entrante.
2) El redirector analiza (filtra) el requerimiento URL y lo chequea contra una lista
de patrones almacenada en el fichero uriworkermap.properties:
Si el requerimiento coincide con una de la entradas almacenadas en el
fichero, el filtro transfiere el requerimiento al JBOSS AS7 usando el protocolo
ajp13.
El redirector recibe la respuesta y la muestra en el browser.

1. Descargar el isapi redirector: jk 1.2.x


2. Instalar IIS7.
3. Configurar IIS7.
4. Crear una entrada en regedit para el redirector isapi.
5. Configurar el fichero jk workers.
6. Configurar las IIS7 URLs servidas por el redirector (las aplicaciones servidas
por el JBoss AS7)
7. Configurar los JBoss AS7 (asignar a cada nodo JBoss una jvmRoute)
8. Reiniar JBoss AS7.
9. Reiniar IIS7.
10. Test.

Paso 1: Descargar isapi redirector isapi_redirect.dll


Descargar la última versión dll http://www.apache.org/dist/tomcat/tomcat-
connectors/jk/binaries/windows/

NOTA: No usar versiones anteriores a jk 1.2.26.Versiones anteriores tiene


problemas con el IIS7.

JBoss AS7: Modo domain 57/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

El directorio de descarga (=trabajo) para el ejemplo es


D:\AENA\JBOSS\Cluster_Aena\laboratorio\isapi

Paso 2: Instalar IIS 7.0. Se supone Windows Vista instalado.

Panel de control->Programas y características

JBoss AS7: Modo domain 58/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Asegurarse de que IIS tiene los siguientes componentes instalados:


 .NET Extensibility
 CGI
 ISAPI Extensions
 ISAPI Filters
 Windows Authentication
JBoss AS7: Modo domain 59/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Se puede testear si el IIS7 trabaja poniendo en un browser http://localhost

El IIS7 escucha en el puerto 80. Comprobar que ningún proceso está escuchando en
él. De estar ocupado habría que cambiarlo vía consola de administración del IIS7.

Para este ejemplo el IIS7está escuchando en el puerto 8090 y asociado a la ip


189.89.103.85

JBoss AS7: Modo domain 60/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Paso 3: Configurar IIS 7.0 & ISAPI

Es necesario configurar el filtro ispai-redirector en el IIS7. Para ello lo hacemos vía


consola de administración del IIS7.

Ejecutar Programas -> inetmgr.exe

JBoss AS7: Modo domain 61/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Se debe crear un directorio virtual cuyo alias es “Jakarta” y que apunte al directorio
donde residen los fichero de configuración del filtro ISAPI ( paso 1).

JBoss AS7: Modo domain 62/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

El siguiente paso es darle permisos de ejecución. Doble click en “Asignaciones de


Controlador”

JBoss AS7: Modo domain 63/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Dentro de “Asignaciones de Controlador” cliquear en “Modificar permisos de


características” y cliquear “OK” en el cuadro de dialogo que aparece.

En “Asignaciones de Controlador” ahora deberían estar activas las llamadas ISAPI-


dll.

JBoss AS7: Modo domain 64/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Lo siguiente es añadir el filtro ISAP al “Default Web Site” y cliquear en “Filters


ISAPI”.

Cliquear “Agregar”:

JBoss AS7: Modo domain 65/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

En el cuadro de dialogo “Add ISAPI Filter” cumplimentar el nombre y el path donde


resida isapi_redirect.dll y cliquear OK.

El filtro debería aparecer en “ISAPI Filters”

JBoss AS7: Modo domain 66/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Por último se necesita configurar la característica “ISAPI and CGI Restrictions”.

In the ISAPI and CGI Restrictions cliquear Agregar en el panel de Acciones.

JBoss AS7: Modo domain 67/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

La extension ISAPI debería aparecer en la lista con estado Restricción permitido.

Paso 4: Configurar registro REGEDIT.

Ejecutar Regedit como Administrator.


Encontrar la entrada [HKEY_LOCAL_MACHINE\SOFTWARE\Apache Software
Foundation\

Crear una nueva entrada “Jakarta Isapi Redirector” y debajo de esta otra nueva
llamada “1.0” y debajo incluir 6 nuevos valores

JBoss AS7: Modo domain 68/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Este punto es crítico. Hay tres maneras de hacerlo:

1. Manual según lo indicado.


2. Instalando el Apache. La propia instalación crea esta entrada en regedit.
Simplemente complementaríamos con nuestros valores.
3. Situarnos en el directorio de trabajo donde hemos descargado el filtro isapi y
abrir con (Editor del Registro) el fichero ISAPI (previamente cumplimentado
con los valores deseados)

JBoss AS7: Modo domain 69/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Paso 5 y 6: Configurar los ficheros workers


Configuración del fichero workers
Es el fichero donde se describe el host y el puerto donde están los “workers”. Estos
workers son los distintos JBoss AS7 que están atendiendo las peticiones.
Hay 3 partes en este fichero:
La primera define la lista de workers:

worker.list = loadbalancerA,status

La segunda sección define los servidores físicos que componen el worker


balanceador de carga.
En el siguiente ejemplo se muestra el fragmento de código (extraído de los ficheros
reales) necesario para programar el balanceo entre dos instancias pertenecientes a
dos JBoss físicamente diferentes:

# Define list of workers that will be used


# Definte default worker settings
worker.default.type=ajp13
worker.default.lbfactor=1

worker.default.fail_on_status=404

# Define Slave1
worker.slave1.reference=worker.default
worker.slave1.host = 89.1.5.17
worker.slave1.port = 8309
worker.slave1.redirect=slave2

# Define Slave2
worker.slave2.reference=worker.default
worker.slave2.host = 89.1.4.237
worker.slave2.port = 8309
worker.slave2.redirect=1

# Load-balancing behaviour
worker.loadbalancerA.type=lb
worker.loadbalancerA.balance_workers=slave1,slave2
worker.loadbalancerA.sticky_session=1

Básicamente, el archivo anterior configura el filtro ISAPI para realizar el balanceo de


carga round robin con sesiones enganchadas (sticky sessions) entre dos instancias
JBoss slave1 y slave2 escuchando en puerto 8309.
JBoss AS7: Modo domain 70/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Los workers son definidos secuencialmente (o pueden definirse con cualquier


nombre que sea reconocido por los otros, secuencialmente trabajan mejor)

worker.slave1 es el nombre de la instancia para el servidor JBoss AS7 1


worker.slave2 es el nombre de la instancia para el servidor JBoss AS7 2
worker.nodeN es el nombre de la instancia para el servidor JBoss AS7 N

.host es el nombre del host (o dirección IP)


.port número del puerto del conector AJP13 ejecutando en el contenedor del Servlet.
.type puede ser ajp12, ajp13, etc—dependiendo del tipo de conector sobre el que
JBoss esté escuchando.
.lbfactor es el factor para balancear carga para este worker específico. Se utiliza
para definir la prioridad (o peso) que debe tener un nodo sobre los otros nodos.
Entre más grande sea el número, más pedidos HTTP recibirá. La configuración se
puede utilizar para diferenciar los servidores con diferente poder de procesamiento

Finalmente, en la última sección del fichero, debe definirse la política de balanceo


para el worker “loadbalancerA”.

# Load-balancing behaviour
worker.loadbalancerA.type=lb
worker.loadbalancerA.balance_workers=slave1,slave2
worker.loadbalancerA.sticky_session=1

.type Puesto que se está hablando de balancear servidores app, deberá ser siempre
“lb”
.balance_workers define los workers a ser balanceados que forman parte del worker
" loadbalancerA".
. sticky_. Esta propiedad especifica el comportamiento para la sesiones HTTP.
Si se especifica worker.loadbalancer.sticky_session=0, cada requerimiento será
dirigido (balanceado) entre slave1 y slave2; por ejemplo diferentes requerimientos
para la misma sesión irán a servidores diferentes. Pero cuando un usuario abre una
sesión sobre un servidor, todos sus requerimientos serán dirigidos al mismo
servidor, siempre y cuando esté disponible. Este tipo de comportamiento es
conocido como “sticky session”, cada cliente es siempre redirigido al servidor que se

JBoss AS7: Modo domain 71/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

le asigno en su primer requerimiento. Para habilitar “sticky session”, se necesita


colocar worker.loadbalancer.sticky_session to 1.
Configuración del fichero uriworkermap
El fichero donde se define la relación entre los requerimientos URL y el worker que
tiene que atender la petición.

/cluster-demo=loadbalancerA
/cluster-demo/*=loadbalancerA

Paso 7: Configurar los JBoss AS7


Se trata de cumplimenta el atributo jvmRoute en cada JBoss AS7.

En la máquina 89.1.4.237 (slave2):


Fichero /home/dssanz/jboss-as-7.1.1.Final/domain/configuration/domain.xml

<system-properties>
<property name="java.net.preferIPv4Stack" value="true"/>
<property name="jvmRoute" value="slave2"/>
<property name="UseJK" value="true"/>
</system-properties>
…………
<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host"
native="false" instance-id="${jvmRoute}">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

En la máquina 89.1.5.17 (slave1):


Fichero /home/dssanz/jboss-as-7.1.1.Final/domain/configuration/domain.xml

<system-properties>
<property name="java.net.preferIPv4Stack" value="true"/>
<property name="jvmRoute" value="slave1"/>
<property name="UseJK" value="true"/>
</system-properties>
…………

JBoss AS7: Modo domain 72/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

<subsystem xmlns="urn:jboss:domain:web:1.1" default-virtual-server="default-host"


native="false" instance-id="${jvmRoute}">
<connector name="http" protocol="HTTP/1.1" scheme="http" socket-binding="http"/>

Paso 8: Reiniciar los JBoss AS7

Para ello utilizar los scripts de arranque / parada del servidor del que se trate:

Paso 9: Reiniciar el IIS7

Paso 10: Test.


El siguiente esquema muestra una posible configuración de la cual forma parte la
configuración actual de los servidores en AENA (encapsulado en rojo) y sobre la
que se van a realizar las pruebas.
JBoss AS7: Modo domain 73/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Accedemos al cluster:

http://ssccptpresta13:8090/cluster-demo/put.jsp

JBoss AS7: Modo domain 74/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

El requerimiento debería ser despachado por uno de los dos host esclavos (slave1 o
slave2). En este caso el requerimiento fue enviado al host slave2 (sc1032):

Ahora desconectamos, vía consola, el host slave2:

Arrancamos de Nuevo el host slave2 inmediatamente

JBoss AS7: Modo domain 75/77


Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

Esperamos unos pocos segundos y accedemos al cluster:

http://ssccptpresta13:8090/cluster-demo/get.jsp

Ahora el requerimiento debería ser servido por el host slave1 (sc1038):


JBoss AS7: Modo domain 76/77
Sistemas

Error! Reference source not found.


Versión: 1.0
25/01/2013

El requerimiento get.jsp debería proporcionar la misma hora que puso vía put.jsp.
Esto verifica que la sesión es correctamente replicada en el otro host (slave1)

JBoss AS7: Modo domain 77/77

You might also like