Administración de Servidor
JBoss EAP 7.0
Por: Carlos Carreño
JBoss Red Hat Certified JBoss Administrator
email: ccarrenovi@[Link]
[Link]@[Link]
© Carlos Carreno, 2008
Unit 1
Arquitectura del Servidor de
Aplicaciones
© Carlos Carreno, 2008
Arquitectura de Componentes
• Cada componente de la suite JEMS ofrece una funcionalidad especifica
sin ser fuertemente dependientes.
• Cada componente se puede desconectar o conectar al microkernel de
una manera muy sencilla
3
Arquitectura de servicios
• JBoss AS es un contenedor de
aplicaciones J2EE
EJB 2.1/3.0 y componentes Web
• Soporte de Clustering en aplicaciones
tradicionales y en EJB 3.0 (pojos)
Balanceo de carga y tolerancia a fallos en
JNDI, RMI y todos los tipos de EJB
Replicacion del estado en Stateful EJB
sessions
Replicacion de la sesion HTTP
Descubrimiento automatico de nodos
Alta disponibilidad en JMS
4
...
• Hibernate es una herramienta de
Mapeo objeto-relacional
• Facilita el mapeo de atributos entre
una base de datos relacional
tradicional y el modelo de objetos de
una aplicación, mediante archivos
declarativos (XML)
• Hibernate es software libre,
distribuido bajo los términos de la
licencia GNU LGPL.
5
...
• JBoss Transactions es un estandar
para la administracion de
transacciones en ambientes
distribuidos.
6
Características del Servidor
• JBoss Messaging presenta un servicio de
mensajería robusto y de alta performance,
diseñado para soportar esquemas de
integración que van desde simple mecanismos
entre aplicaciones hasta grandes Arquitecturas
de Servicios (SOAs) y Canales de Servicios
Empresariales (ESBs).
• La integración vía mensajes ha sido una
tecnología clave para la integración e
interoperabilidad en grandes infraestructuras
de IT desde hace varios años.
Desgraciadamente, esta tecnología ha sido
siempre demasiado cara y compleja para su
implementación en cualquier empresa salvo las
de mayor tamaño.
7
Unit 2
Instalación del servidor
© Carlos Carreno, 2008
Instalación del JDK
9
Instalación del servidor Jboss
• Ejecutar el instalador *.jar en un
directorio
• Ejecutar: [Link] depende del
Sistema operativo
Ejemplo: #./[Link]
En este caso el servicio de Jboss se enlazara
a todas la interfaces de red disponibles
Ejemplo: #./[Link] –b [Link]
Se enlazara a la nic con direccion IP
[Link]
10
Opciones de instalación avanzada
• Configurar el servidor como servicio
• #systemctl start jboss-eap
11
Lab 1
• Instalacion del Servidor
• Inicio y parada del servidor
• Configuracion del servidor como un servicio
Linux
[Link]
12
Unit 3
Modos de Operacion y Perfiles
© Carlos Carreno, 2008
Directorios de JBoss
14
Bin,client,docs,lib
Directorio Descripcion
bin • Contiene los archivos de scripts necesarios para realizar el inicio y parada del servidor
asi como los archivos *.jar de soporte al proceso de inicio del servidor.
client • Almacena los archivos *.jar que debes usar en una aplicacion cliente o web container
que se ejecuta fuera de jboss. Puedes seleccionar los archivos necesarios o puedes
seleccionar el archivo [Link]
docs • Contiene los archivos XML DTD’s usados en Jboss como referencia, ejemplos de JCA y
archivos de ejemplo de configuraciones de datasources para diferentes bases de datos
como Oracle, MySQL, Postgres.
lib • Contiene los archivos *.jar usados por Jboss. No colocar aqui tus propias librerias
scripts • Contiene scripts en XML para el soporte a clientes de Web services
server • Contiene diferentes configuraciones del servidor Jboss podrian haber aqui los
directorios: minimal, default, production y all.
uninstaller • Almacena un archivo *.jar para realizar la desinstalacion del Jboss
15
Modos de operacion
• Modo Standalone, instancia unica, compatible con
versiones previas.
• Modo Dominio, establece un dominio para despliegues
distribuidos.
16
Modos de Operacion
17
Modulos, Subsistemas
18
Extensiones y Subsistemas
19
Perfiles
20
Unit 4
Inicio y parada del Servidor
© Carlos Carreno, 2008
Inicio por linea de comandos
• ./[Link]
• ./[Link]
22
Parada del Servidor
23
Parada del Servidor
• Presiona Ctrl + C
• #systemctl stop jboss-eap
24
JBoss como Servicio
• #systemctl start jboss-eap
• #systemctl status jboss-eap
25
Lab 2
• Iniciar una instancia con el perfil default y otra
instancia con el perfil full en el mismo host
• Modificar los datos de las interfaces de red, del
acceso publico y del de administracion en el
archivo de configuracion del perfil.
26
Unit 5
Despliegue de Aplicaciones
© Carlos Carreno, 2008
Directorio de despliegue
28
Desplegando aplicaciones
1. Configurar los recursos
2. Crear el descriptor de despliegue de
Jboss que la aplicacion requiere
3. Colocar el archivo de la aplicaciones en
el directorio
JBOSS_HOME/standalone/deployments
29
Deployment Scanner
• El DeployementScanner es responsable de
monitorear el directorio deploy por componentes
desplegables (archivos sar, archivos war, archivos
ear, etc) y notificar al MainDeployer para que
realice el trabajo de despliegue.
30
Despliegue y Web Console
31
Lab 3
Desplegar la aplicacion [Link], descargarla
desde:
[Link]
JDK 1.7
PERMAMENT
HEAD
AREA
32
Unit 6
Administración del Contenedor Web
© Carlos Carreno, 2008
Capacidades
• Web sockets: brindan una comunicación de
dúplex completo entre dos pares a través de
TCP, y es una nueva tecnología definida por W3C.
• JSON-P: soporta solicitudes entre dominios, lo
que evita las restricciones impuestas por los
navegadores.
• HTTP/2: mejora el rendimiento y la carga útil, en
comparación con el protocolo HTTP
anterior.
34
Mejoras en Undertow
• Contenedor web NIO: Undertow es más rápido y admite soporte
de E/S sin bloqueo,
provisto por la API XNIO, un marco basado en la nueva API de E/S
(NIO) de Java.
• Balanceo de carga: el servidor HTTPD Apache ya no se necesita,
porque ahora es posible
distribuir las solicitudes entre otras instancias de JBoss EAP con la
tecnología mod_cluster.
• Reducción de puerto: soporta la actualización de HTTP, la cual
reduce la cantidad de
puertos usados por EAP a dos. El puerto 9990 se usa para la
administración y el puerto 8080
se usa para aplicaciones.
• Ubicación web raíz: define la aplicación web predeterminada que
se debe implementar
cuando el servidor recibe una solicitud.
• Gestión de sesiones: personaliza la administración de sesiones
para las sesiones HTTP.
35
Componentes de Undertow
1. Cachés de búfer
2. Servidor
3. Contenedor de Servlet
4. Manejadores
5. Filtros
36
Servidor - Listeners
Un listener maneja una solicitud según el
protocolo de solicitudes. Se dispone de tres tipos
de listener para cada servidor:
• HTTP: este tipo de listener es responsable de
manejar las solicitudes de HTTP.
• HTTPS: este tipo de listener es responsable de
manejar las solicitudes de HTTPS.
• A JP: este tipo de listener es responsable de
manejar las solicitudes de A JP. El protocolo A JP
es responsable de la comunicación entre la
instancia EAP y el balanceador de carga.
37
Lab
• Activar SSL en JBoss EAP 7, desplegar una
aplicacion y probar la comunicacion segura.}
• Habilitar el protocolo ajp, para poder comunicar
el server jboss con el balanceador.
• Cambiar la aplicacion [Link], la aplicacion
de bienvenidad.
38
Unit 7
Administración de Servicios de
Mensajeria JMS
© Carlos Carreno, 2008
Servicio de Mensajeria
• El middleware de mensajería, también
conocido como Middleware orientado a los
mensajes (MOM) es responsable de administrar
los mensajes de aplicaciones y entregarlos al
destinatario indicado
• El middleware MOM se puede insertar dentro
de otros productos, de manera similar a cómo
EAP 7 integra un MOM basado en ActiveMQ
Artemis.
40
Tipos de Recursos
• ConnectionFactory
Encapsula la conexión a un MOM. JEE 7 indica que el servidor
de aplicaciones proporciona una ConnectionFactory
predeterminada, para que las aplicaciones que requieren
mensajería se puedan implementar de inmediato, sin el
conocimiento de los parámetros de conexión. El administrador
puede configurar ConnectionFactories
adicionales según las necesidades de las aplicaciones
específicas del servidor, o puede apuntar a MOM externos de
diferentes proveedores.
• Queue
Los mensajes se recuperan de acuerdo con el método
"primero en entrar, primero en salir". Un productor coloca un
mensaje en la cola y un solo consumidor quita el mensaje.
• Topic
Implementa un método publish-subscribe donde los mensajes
publicados en el tema se entregan a múltiples receptores suscritos al
tema. Si un consumidor está sin conexión, el MOM conserva los
messages para entregarlos más tarde a ese consumidor en particular.
41
Estructura del Mensaje
• Encabezados: generalmente creados y procesados por
el MOM. La API de JMS define algunos encabezados que
las aplicaciones pueden usar, pero generalmente se los
trata como parte de la infraestructura MOM y, en la
mayoría de los casos, la lógica de las aplicaciones no
debe confiar en ellos.
• Propiedades: las define el productor para enviar los
metadatos al MOM y a los consumidores. Un ejemplo es
enrutar un mensaje a diferentes consumidorers en
función del valor de una propiedad. El ejemplo anterior
de una tienda web puede usar propiedades para
entregar órdenes a diferentes sistemas de
procesamiento de pagos.
• Cuerpo: contiene los datos específicos de aplicaciones
que un MOM no debe intentar manejar, sino pasar.
42
Configuracion de ActiveMQ
•
43
Objetos Secundarios
• jms-bridge: contiene puentes para transferir
mensajes automáticamente entre el servidor
JMS integrado y cualquier otro servidor JMS
conocido por el dominio EAP 7, incluidos los
servidores de otros proveedores. Ningún
puente viene predefinido en los archivos de
configuración estándares.
• server=default: el servidor JMS integrado.
Cuenta con un número de atributos y objetos
secundarios que configuran todos los aspectos
de MOM, de los recursos JMS a las redes, el
almacenamiento y la agrupación en clústeres.
En lo que resta de este capítulo, abordaremos
las configuraciones más comunes.
44
Conectores y Aceptores de
Active MQ
• Aceptadores: definen los protocolos y
parámetros de red para aceptar conexiones de
clientes de mensajería.
• Conectores: definen los protocolos y
parámetros de red para conectarse a
servidores ActiveMQ.
45
Tipos de Conectores
Se brindan dos tipos de aceptores y conectores
ActiveMQ:
• http: usa el protocolo ActiveMQ nativo al que se
puede acceder a través de una conexión
HTTP. La conexión HTTP es aceptada por el
subsistema undertow, que es el tema de
un capítulo dedicado en este libro. De esta
manera, una instancia de servidor EAP 7 NO
requiere la apertura de puertos de firewall
adicionales para aceptar conexiones de clientes
de mensajería remotos.
• in-vm: permite clientes de mensajería que se
ejecutan en la misma JVM como el servidor
ActiveMQ para conectarse sin sobrecarga de red.
46
Topic
Los atributos del recurso jms-topic son:
• name: el nombre del objeto gestionado. Este
nombre solo es útil para la administración, y
las aplicaciones que usan la API de JMS NO lo
utilizan.
• entries: brinda uno o más nombres de JNDI para
el recurso. Estos son los nombres
visibles para las aplicaciones.
• legacy-entries: permite que este destino sea
utilizado por los clientes remotos EAP 6 y
HornetQ.
47
Queue
Un recurso jms-queue también puede tener todos
los atributos agregando un recurso jms-
topic:
• durable: de ser verdaderos, los mensajes en esta
cola se guardan en un disco y no
se pierden al reiniciar MOM. De ser falsos, los
mensajes se mantienen únicamente en
memoria y se los puede eliminar en situaciones de
agotamiento de memoria.
• selector: ofrece un filtro para mensajes
aceptados por esta cola. Para obtener más
información, consulte la especificación de JMS.
48
Monitoreo de Destinos
Los destinos de JMS en ActiveMQ integrado de EAP
7 se pueden monitorear usando
algunos atributos y operaciones de runtime de
objetos. Use las operaciones de CLI read-
resource-description y read-resource-operations
para conocer todos los atributos
y las operaciones que EAP 7 ofrece para
monitorear los destinos de JMS.
[standalone@localhost:9990 /] cd /subsystem=messaging-
activemq/server=default
[standalone@localhost:9990 server=default] ./jms-
queue=MyQueue:read-attribute(\
name=message-count)
49
Lab
• Configuracion del ConnectionFactory y Queues
50
Configuracion de journals
Normalmente, las implementaciones de JMS
utilizan una base de datos para implementar
persistencia. Sin embargo, ActiveMQ adopta el
enfoque único de usar el sistema de archivos, y
los archivos que almacenan los mensajes se
conocen como diarios (journal file).
51
Journal Type
• NIO: utiliza la API de Java NIO estándar para
interactuar con el sistema de archivos. Esta
implementación proporciona un rendimiento
sumamente bueno y funciona en cualquier
plataforma con runtime de Java 6+. EAP 7
requiere al menos Java 8.
• ASYNCIO: usa la librería de E/S asíncrona Linux
nativa (AIO). Normalmente, el uso de AIO
ofrecerá un mejor rendimiento que el uso de
Java NIO.
52
Address Settings
• text
53
Security Settings
Un security-setting tiene objetos secundarios del
tipo rol, cuyos atributos definen los
permisos que tiene el rol con nombre. La
configuración de EAP estándar define un único
security-setting=# que contiene un único
elemento secundario role=guest que
permite que cualquier usuario publique y consuma
mensajes en cualquier destino.
[standalone@localhost:9990 /] cd /subsystem=messaging-activemq/server=default
[standalone@localhost:9990 server=default] ./security-setting=#:read-resource
[standalone@localhost:9990 server=default] ./security-setting=#/role=guest:read-
resource
54
Ejemplo 1
Por ejemplo, para tener un intervalo de caducidad
predeterminado de 20 minutos
(20 minutos x 60 segundos x 1000 ms =
1200000ms) para mensajes del destino jms-
queue=MyQueue y mover mensajes que
demoraron más tiempo en ser consumidos a jms-
queue=MyExpiry, use el siguiente comando:
55
Solucion:
[standalone@localhost:9990 server=default]
./address-setting=[Link]:add(\
expiry-delay=1200000, expiry-
address=[Link])
56
Ejemplo 2
Por ejemplo, para tener un retraso de 5 segundos
entre intentos de entrega del destino jms-
queue=MyQueue y mover mensajes a jms-
queue=MyDLQ después de tres intentos, use el
siguiente comando:
[standalone@localhost:9990 server=default] ./address-
setting=[Link]:add(\
redelivery-delay=5000, dead-letter-address=[Link], max-
delivery-attempts=3)
57
Lab
• Configurar los journals y politicas para el
manejo de los mensajes fallidos.
58
Unit 8
Administración de Datasources
© Carlos Carreno, 2008
Configuracion de Datasources
Las fuentes de datos se configuran a través del
subsistema de fuente de datos. A fin de
establecer una base de datos nueva, se deben
seguir dos pasos por separado:
1. Instalar el controlador JDBC para un servidor de
base de datos particular.
2. Definir una fuente de datos dentro del
subsistema datasource del archivo de
configuración.
60
Validación de la conexión
• Validate on match
• Validate in background
Pool de Conexiones
61
Controlador JDBC
Un controlador JDBC es un componente que las
aplicaciones Java utilizan para comunicarse
con una base de datos. Un controlador JDBC se
coloca en paquete en un archivo JAR (archivo
Java), que contiene un archivo de clase con la
definición del controlador. Los controladores
JDBC están disponibles en los proveedores de
bases de datos, como MySQL o PostgreSQL.
Para usar un controlador JDBC en EAP 7, primero
se lo debe instalar como un módulo en el
Servidor.
Nota: Un modulo es una estructura de directorio
que incluye el driver (*.jar) y un descriptor
[Link]
62
Definicion de Controladores
Después de agregar el controlador como un
módulo, el próximo paso es crear una definición
<driver> en la sección <drivers> del subsistema
de la fuente de datos en el archivo de
configuración de EAP.
/subsystem=datasources/jdbc-driver=<driver_name>:add\
(driver-module-name=<module_name>,driver-
name=<unique_driver_name>)
63
Lab
• Desplegar el driver postgresql como modulo
• Desplegar el driver oracle como modulo
64
Pool de Conexiones
• Min-pool-size
• max-pool-size
65
Tipos de Datasources
• Non-XA Datasources
• XA Datasource
Una fuente de datos XA puede participar de
una transacción que abarca múltiples recursos
(como una base de datos, una cola de
mensajes o sistemas heredados) y revertir
los cambios realizados si se detecta una falla
en uno de los recursos.
[connected /] xa-data-source add --name=<internal_datasource_name> \
–jndi-name=<jndi_name> --driver-name=<driver_name> --user-name=<login> \
--password=<password>--xa-datasource-properties={"ServerName"=>"<server>"
"DatabaseName"=>"<db_name>"}
66
Ejemplo:XA Datasource
• XA Datasoruce for MySQL
[connected /]
/subsystem=datasources/jdbc-driver=mysql:add\
(driver-name=mysql,driver-module-name\
=[Link],driver-xa-datasource-class-
name=[Link])
67
Datasources y la Consola
68
Lab
• Desplegar el driver para postgres como modulo
• Crear un datasource para postgres
• Probar el datasource creado
• Crear un datasource para Oracle
• Crear un datasource XA para postgresql
69
Unit 9
Administración de Logs
© Carlos Carreno, 2008
Sub sistema de logs
El subsistema de registro EAP consta de tres
componentes principales:
1. Manejadores: un manejador determina "dónde" y "cómo" se
registrará un evento. EAP viene de fábrica con varios manejadores
que se pueden utilizar para registrar mensajes de aplicaciones.
2. Loggers (loggers): un logger (también denominado categoría
de registro) organiza eventos en categorías relacionadas de
manera lógica. Una categoría generalmente se asigna a un espacio
de nombres de paquete determinado, que se ejecuta dentro de la
máquina virtual Java (puede ser EAP, así como también nombres
del paquete de aplicaciones personalizado) y define uno o más
manejadores que procesarán y registrarán los mensajes.
3. Root Logger (logger raíz): los loggers se organizan en una
jerarquía de elemento principal-secundario y el logger raíz reside
en la parte superior de la jerarquía de loggers.
71
Manejadores
De manera predeterminada, el nivel de registro de
EAP es INFO y están habilitados dos manejadores:
• CONSOLE: un manejador que registra eventos
en la ventana de la consola.
• FILE: un manejador que registra eventos en un
archivo con el nombre [Link].
72
Ubicacion de los logs files
$BASE_DIR/standalone/log
[Link]: para el registro de los
indicadores de la máquina virtual Java con los
que EAP se inició y los eventos de administración
de la memoria mientras el servidor se
está ejecutando.
[Link]: para eventos de registro del servidor.
Los eventos de registro se anexan a
este archivo; por lo tanto, normalmente el servidor
necesitará sustituir este archivo en
función del tamaño del archivo y del tiempo (por
ejemplo, por hora o por día).
73
Manejadores Incorporados
• Manejador de consola: define un manejador
que escribe en la consola. Se configura
mediante el uso del elemento <console-handler>.
• Manejador de archivo: define un manejador
que escribe en un archivo. Se configura
mediante el uso del elemento <file-handler>.
• Manejador de archivo de rotación
periódica: define un manejador que escribe en
un archivo y rota el registro después de un período
derivado del sufijo determinado. Se
configura mediante el uso del elemento <periodic-
rotating-file-handler>.
74
...
• Manejador de archivo que rota en función del
tamaño: define un manejador que escribe en un archivo y
rota el registro una vez que el tamaño del archivo aumenta y
supera un determinado punto, y mantiene una cantidad fija
de respaldos. Se configura mediante el uso del elemento
<size-rotating-file-handler>.
• Manejador asíncrono: define un manejador que escribe
en submanejadores en un hilo asíncrono. Esto es útil en
escenarios en los que la aplicación genera un gran número
de mensajes de registro en hilos paralelos y donde la
productividad de E/S del sistema de archivos se vuelve un
cuello de botella. Se configura mediante el uso del elemento
<async-handler>.
• Manejador syslog: define un manejador que envía
eventos a un servidor syslog remoto. Se configura mediante
el uso del elemento <syslog-handler>.
75
Subsistema de log y consola
76
Handler periodico - rotacion
El valor del sufijo es un formato de fecha y hora, y
el patrón especifica la frecuencia con que
rota el archivo de registro. Por ejemplo, si un
archivo de registro debe rotar una vez por hora,
establezca el sufijo en:
[Link]
De manera similar, la rotación mensual puede
lograrse si se establece el sufijo en:
yyyy-MM
77
Registro Asincrono
<async-handler name="ASYNC">
<level name="INFO"/>
<queue-length value="1024"/>
<overflow-action value="BLOCK"/>
<subhandlers>
<handler name="FILE"/>
</subhandlers>
</async-handler>
78
Manejador de syslog
<syslog-handler name="SYSLOG">
<level name="INFO"/>
<server-address value="[Link]"/>
<hostname
value="[Link]"/>
<port value="514"/>
<app-name value="MY_APP"/>
</syslog-handler
79
Lab
• Crear un manejador de registro para la
aplicacion numerico
80
Configuracion de Loggers
La categoría (category) logger define la fuente
del evento. Es una convención estándar para
usar un nombre de clase de Java completamente
calificado como la categoría de registro
en el código fuente de Java, pero el nombre de la
categoría puede ser cualquier cadena que
tenga sentido para el desarrollador.
El nivel (level) de logger define la gravedad del
evento. Por ejemplo, representa un error
fatal del que la aplicación no se puede recuperar,
o solo ofrece información de depuración al
desarrollador.
81
Logger Tag
<logger category="java_class_and/or_package_name">
<level name="log_level"/>
</logger>
82
Ejemplo: Logger
<logger category="[Link]">
<level name="WARN"/>
</logger>
83
Jerarquia de Loggers
Los loggers se organizan en una jerarquía en
forma de árbol, según su valor de categoría.
El punto (.) se utiliza como separador entre los
niveles de jerarquía, siguiendo las
reglas de nombres del paquete de Java. Si un
logger se define para un subpaquete
de otro registrador, se convierte en elemento
secundario de ese logger.
84
Jerarquia de Loggers
<logger category="[Link]">
<level name="WARN"/>
</logger>
<logger category="[Link]">
<level name="INFO"/>
</logger>
85
Loggers y handlers
<logger
category="[Link]">
<level name="INFO"/>
<handlers>
<handler name="STORE_APP_HANDLER"/>
</handlers>
</logger>
86
Logger Raiz
Los loggers tienen una jerarquía de acuerdo con la
cual los loggers secundarios heredan
los valores de los loggers principales. En la parte
superior de la jerarquía de loggers, hay un
registrador único que se llama root logger (looger
raíz).
87
Logger Raiz
<root-logger>
<level name="INFO"/>
<handlers>
<handler name="CONSOLE"/>
<handler name="FILE"/>
</handlers>
</root-logger>
88
Niveles de Logger
89
Lab
Controla el nivel de log para el registro de eventos
de la aplicacion [Link]
90
Unit 10
Administración de Dominios
© Carlos Carreno, 2008
Modo Dominio de JBoss EAP
92
Domain Controller
• [Link] ([Link])
• [Link]
93
Host Controller Slave
• [Link] ([Link])
94
Consola de Administracion
95
Lab
• Iniciar un domain controller master
• Iniciar dos host controller slave
96
Topologia
Machine 2
SLAVE
Native Port
Machine1 29999 server-A qa-group(default)
MASTER
server-B
Native Port
9999
Content Machine 3
repository
SLAVE
server-C
Native Port
39999
production-group(ha)
[Link]
97
Creacion de Grupos
• Creacion de Grupos
• Perfiles y Grupos
98
Creacion de Servidores
• Creacion de Servidores
• Asignacion a Grupos
99
Lab
• Crea el grupo produccion y asignar
dos servidores en cluster
• Crear el grupo qa y asignar un
servidor en alguno de los host slave
• Deplegar la aplicacion [Link]
en el grupo production-group
100
Unit 11
Administración de la Seguridad
© Carlos Carreno, 2008
Seguridad del Servidor de Aplicaciones
102
Impl. Seguridad Mediante JAAS
103
Dominios de Seguridad
104
Autenticacion y autorización
105
Lab
Crear un dominio de seguridad enlazado a un
repositorio de base de datos.
106