administrando-jboss-100302093304-phpapp01

62
Administración de Jboss - Cursos del Gul Administrando Jboss Javier Turégano Molina Cursos GUL Universidad Carlos III 01 Feb 2010

Transcript of administrando-jboss-100302093304-phpapp01

Page 1: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Administrando Jboss

Javier Turégano MolinaCursos GULUniversidad Carlos III01 Feb 2010

Page 2: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Índice

● Introducción● Presentando Jboss● Primera toma de contacto● Desplegando aplicaciones● Gestionando nuestro servidor● Ajuste de rendimiento● Clustering● Seguridad● Dudas

Page 3: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Introducción

Page 4: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Presentando Jboss

Page 5: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

¿Qué es Jboss?

Servidor de aplicaciones JAVA programado en JAVA.

●Licencia: GPL/LGPL●Confiable a nivel de empresa●Altamente Modular●Línea de Comandos + XML●Cumple los estandares

Page 6: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Requisitos

Requisitos Hardware • 512 MB RAM • 100 MB hard disk space • 400 MHz CPU

JDKs soportadas • Sun JDK 1.6 • OpenJDK 1.6 • IBM JDK 1.6

Sistema Operativo

Cualquiera capaz de ejecutar una JDK: Linux y UNIX así cómo Windows.

Page 7: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Características

● Clustering● Failover (including sessions)● Load balancing● Distributed caching (using JBoss Cache, a

standalone product)● Distributed deployment (farming)● Deployment API● Management API● Aspect-Oriented Programming (AOP) support● JSP/Servlet 2.1/2.5 (Tomcat)● JavaServer Faces 1.2 (Mojarra)● Enterprise Java Beans versions 3 and 2.1● JNDI (Java Naming and Directory Interface)● Hibernate-integration (for persistence

programming; JPA)

Page 8: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Características

● JDBC● JTA (Java Transaction API)● Support for Java EE-Web Services like JAX-

WS● SAAJ (SOAP with Attachments API for Java)● JMS (Java Message Service) integration● JavaMail● RMI-IIOP (JacORB, alias Java and CORBA)● JAAS (Java Authentication and Authorization

Service)● JCA (Java Connector Architecture)-integration● JACC (Java Authorization Contract for

Containers)-integration● Java Management Extensions

Page 9: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Comparativa servidores de aplicaciones

¿Es Tomcat un servidor de aplicaciones?

Podemos ver una comparativa de Servidores de Aplicaciones en:

http://en.wikipedia.org/wiki/Comparison_of_application_servers

Page 10: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Versiones de Jboss

Page 11: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Primera toma de contacto

Page 12: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Instalando la máquina virtual Java

En primer lugar debemos de instalar la máquina virtual JAVA:

Desde la web del proveedor.Usando paquetes de nuestra distribución.

Page 13: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Instalando Jboss

● Descargamos Jboss● Lo descomprimimos:

tar zxvf jboss-xxxx.tar.gz

● Lo arrancamos:

cd jboss-xxxx/bin./run.sh

¡¡¡ ROCK and ROLL !!!

Page 14: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Accediendo a nuestro jboss

Page 15: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Escuchando en red

Por defecto Jboss sólo escucha en localhost, pero podemos modificarlo:

./run.sh -b 0.0.0.0

Page 16: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Estructura de directorios

jboss//bin/client/docs/lib/server

Page 17: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Tipos de configuraciones

Distintos tipos de configuraciones predefinidas:

jboss/server//all/default/minimal/production

Seleccionamos la que queremos arrancar:

./run.sh -c default

Page 18: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Directorios en cadaconfiguración

jboss/server/default//conf/data/deploy/lib/log/tmp/work

/jboss/server/all/deploy-hasingleton/farm

Page 19: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Componentes

bsh-deployer.xmlcache-invalidation-service.xml

client-deployer-service.xmlear-deployer.xml

ejb3.deployerejb3-interceptors-aop.xml

ejb-deployer.xmlhsqldb-ds.xml

http-invoker.sarjboss-aop-jdk50.deployer

jboss-bean.deployerjboss-ha-local-jdbc.rarjboss-ha-xa-jdbc.rarjbossjca-service.xmljboss-local-jdbc.rar

jboss-web.deployer

jbossws.sarjboss-xa-jdbc.rar

jmsjmx-console.war

jmx-invoker-service.xmljsr88-service.xml

mail-ra.rarmail-service.xml

managementmonitoring-service.xmlproperties-service.xml

quartz-ra.rarschedule-manager-service.xml

scheduler-service.xmlsqlexception-service.xmluuid-key-generator.sar

jboss/server/default/deploy

Page 20: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Desplegando aplicaciones

Page 21: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Tipos de aplicaciones

- myapp.jar- myapp.war- myapp.ear

- myapp-ds.xml

Modos de despliegue:

ComprimidoDesplegado

Page 22: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Configuración de aplicaciones

myapp.war//WEB-INF

web.xmljboss-web.xml

myapp.ear/META-INF

application.xml

Page 23: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Gestión de clases en Jboss

¿Por qué tenemos que tener cuidado con la gestión de clases en Jboss?

¿Cómo se comporta por defecto el cargador de clases?

¿Podemos modificar ese comportamiento?

Page 24: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Desplegando

Ejemplo: HUDSON - http://hudson-ci.org/

mkdir /opt/hudsonexport HUDSON_HOME=/opt/hudson

cp hudson.war jobss/server/default/deploy

Iniciamos servidor de aplicaciones.

Page 25: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Accediendo

http://localhost:8080/hudson

Page 26: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Accediendo a bases de datos

Depende de cada aplicación pero es posible que necesitemos añadir uno de estos dos:

● Driver JDBC de la BD.● Un data source con la conexión.

Page 27: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Gestionando nuestro servidor

Page 28: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Logs

¿Dónde están los logs en jboss?

Configuración principal de log4j en:

/server/default/conf/jboss-log4j.xml

Page 29: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Reducir el nivel de log

<category name="org">

<priority value="INFO"/> </category>

<category name="javax"> <priority value="INFO"/>

</category>

<category name="fr"> <priority value="INFO"/>

</category>

<category name="uk"> <priority value="INFO"/>

</category>

<category name="net"> <priority value="INFO"/> </category> <category name="httpclient"> <priority value="INFO"/> </category> <category name="com"> <priority value="INFO"/> </category>

/server/default/conf/jboss-log4j.xml

Page 30: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Logs estilo Apache

jboss/server/all/deploy/jboss-web.deployer/server.xml

<Valve className="org.apache.catalina.valves.AccessLogValve" prefix="myserver_access." suffix=".log" pattern="common" directory="${jboss.server.log.dir}" resolveHosts="false" />

Page 31: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Herramientas de administración

A través de web:● jmx-console● web-console

En el escritorio:● jconsole

En línea de comando:● jps + jmap● twiddle

Plataformas de administración:● Jboss-on● RHQ/jopr

Page 32: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

jmx-console

Page 33: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

web-console

Page 34: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

jconsole

Page 35: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

jconsole

Para usarlo activamos la depuración remota en /jboss/bin/run.conf

JAVA_OPTS=” $JAVA_OPTS -Dcom.sun.management.jmxremote -Dcom.sun.management.jmxremote.port=8004

-Dcom.sun.management.jmxremote.authenticate=false -Dcom.sun.management.jmxremote.ssl=false"

Page 36: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Línea de comandos

También disponemos de herramientas útiles en línea de comandos:

- jps- jmap

- twiddle

jboss/bin/twiddle.sh -s 127.0.0.1:1099 invoke jboss.system:type=ServerInfo listThreadCpuUtilization

Page 37: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Ajuste de rendimiento

Page 38: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Gestión de memoria

Page 39: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Configurando la memoria

Límite de memoria con 32 bits: ~ 2Gb

Configuración en jboss/bin/run.conf

-Xms1000m -Xmx3000m

-XX:PermSize=256m -XX:MaxPermSize=384m

Page 40: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Recolección de basura

Tipos de recolecciones:GC

Full-GC

Política por defecto:STOP THE WORLD!!!!

Page 41: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Recolección de basura

Depurando el recolector de basura:

-verbose:gc -XX:+PrintGCTimeStamps

-XX:+PrintGCDetails

Configuraciones alternativas del Garbace Colector:

Recolector paralelo:+UseParallelGC

Page 42: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Conector nativo

Podemos mejorar el rendimiento como servidor web usando el conector nativo:

http://labs.jboss.com/jbossweb/downloads/jboss-native.html

Evita cuelgues en la versión open source entre Apache y Jboss.

Page 43: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Otros parámetros a tener en cuenta

●Eliminar servicios innecesarios●Reducir nivel de log●Precompilar los JSPs●Delegar el contenido estático (apache, ngynx)●Desactivar hot-deploy en producción●Tuning del sistema operativo●Tuning acceso a Bases de Datos●Tuning acceso a la red

Page 44: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Clustering

Page 45: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Balanceo de carga con Apache

Apachemod_jk

Jboss Jboss

JbossCluster

HTTP HTTPS

AJP

Page 46: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Configuración de Apache

Balanceamos a través del módulo mod_jk de Apache:

apt-get install libapache2-mod-jk

Page 47: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Worker.properties

/etc/libapache2-mod-jk/workers.propertiesworkers.tomcat_home=/opt/jbossworkers.java_home=/usr/lib/jvm/java-1.5.0-sunps=/

worker.list=node1,node2,lb

node1.ajp13_worker.port=8009node1.ajp13_worker.host=node1.mydomain.connode1r.ajp13_worker.type=ajp13node1.ajp13_worker.lbfactor=1

node2.ajp13_worker.port=8009node2.ajp13_worker.host=node2.mydomain.connode2r.ajp13_worker.type=ajp13node2.ajp13_worker.lbfactor=1

worker.loadbalancer.type=lbworker.loadbalancer.balance_workers=node1,node2worker.loadbalancer.sticky_session=0

Page 48: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Virtual Host

/etc/apache2/sites-available/site.mydomain.comJkWorkersFile /etc/libapache2-mod-jk/workers.propertiesJkShmFile /var/log/apache2/jk.shm

<VirtualHost *:80> ServerName site.mydomain.com

CustomLog /var/log/apache2/site.mydomain.com.access.log combined ErrorLog /var/log/apache2/site.mydomain.com.error.log

DocumentRoot /var/www/

JkMount /app-solo-nodo1 node1 JKMount /* lb JKMount /images lb</VirtualHost>

Page 49: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Jboss Cluster

Nos permite compartir sesiones entre distinos nodos de Jboss.

Utiliza comunicación multicast basada en JGroups.

Para activarlo debemos arrancar así:

./run.sh -c all -b 192.168.1.1 -g MiCluster -Djgroups.bind_addr=192.168.1.1

Page 50: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Configuraciónde las aplicaciones

Requisito: No tener objetos no serializables en sesión

Activación: En el web.xml de la aplicación añadimos la siguiente opción:

<distributable/>

Page 51: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Sticky Sessions

En caso de no poder realizar la compartición de sesiones aún podremos recurrir a las sesiones pegajosas.

En Apache en /etc/libapache2-mod-jk/workers.properties...worker.loadbalancer.sticky_session=1...

Page 52: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Sticky Sessions

En cada uno de los Jboss ● En jboss/server/all/deploy/jboss-web.deployer/server.xml

<Engine name="jboss.web" defaultHost="localhost" jvmRoute="node1">... ...</Engine>

● En /server/all/deploy/jboss-web.deploy/META-INF/jboss-service.xml

<attribute name="UseJK">true</attribute>

Page 53: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Seguridad

Page 54: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Correr jbosscómo usuario no privilegiado

Podemos correr jboss con cualquier usuario del sistema.

Por tanto no lo lanzaremos cómo root.

Page 55: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

SSL – Crear almacénde certificados

Creamos un certificado y lo metemos en su almacen:

keytool -genkey -alias tomcat -keyalg RSA

Lo copiamos dentro de la instalación de jboss:

cp .keystore jboss/server/default/conf/mykeystore

Page 56: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

SSL - Configuración

jboss/server/default/deploy/jboss-web.deployer/server.xml

<Connector port="8443" protocol="HTTP/1.1" SSLEnabled="true" address="${jboss.bind.address}" redirectPort="8443" maxThreads="150" scheme="https" secure="true" clientAuth="false" sslProtocol="TLS" keystoreFile="${jboss.server.home.dir}/conf/mykeystore" keystorePass="changeit" />

Accedemos a través de localhost:8443

Page 57: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Asegurando jmx-consoleDescomentamos en jboss/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml<security-domain>java:/jaas/jmx-console</security-domain>

Descomentamos en jboss/server/default/deploy/jmx-console.war/WEB-INF/web.xml<security-constraint> <web-resource-collection> <web-resource-name>HtmlAdaptor</web-resource-name> <description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application </description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>JBossAdmin</role-name> </auth-constraint> </security-constraint>

Page 58: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Asegurando jmx-consoleDescomentamos en jboss/server/default/conf/login-config.xm<application-policy name = "jmx-console"> <authentication> <login-module code="org.jboss.security.auth.spi.UsersRolesLoginModule" flag = "required"> <module-option name="usersProperties">props/jmx-console-users.properties</module-option> <module-option name="rolesProperties">props/jmx-console-roles.properties</module-option> </login-module> </authentication> </application-policy>

Creamos el fichero jboss/server/default/conf/props/jmx-console-users.properties admin=contrasena

Y añadimos el usuario al grupo admin jboss/server/default/conf/props/jmx-console-roles.propertiesjmx-admin=JBossAdmin,HttpInvoker

Page 59: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Aseguramos web-console

Usaremos los mismos credenciales que la jmx-console.

jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/web.xml

<security-constraint> <web-resource-collection> <web-resource-name>HtmlAdaptor</web-resource-name> <description>An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application </description> <url-pattern>/*</url-pattern> <http-method>GET</http-method> <http-method>POST</http-method> </web-resource-collection> <auth-constraint> <role-name>JBossAdmin</role-name> </auth-constraint> </security-constraint>

jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml

<security-domain>java:/jaas/jmx-console</security-domain>

Page 60: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Dudas

Page 61: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

www.turegano.net

www.twitter.com/setoide

Licencia Creative Commons Reconocimiento 2.5 de España

Contacto

Page 62: administrando-jboss-100302093304-phpapp01

Administración de Jboss - Cursos del Gul

Ilustraciones

Titulo Autor LicenciaJboss Logo Red hat All right reserved

The game v@lentina Attribution-Noncommercial-No Derivative Works 2.0 Generic

Tux Tie adpowers Attribution 2.0 Generic

I wanna hold your hand batega Attribution 2.0 Generic

Legospective Guillermo Attribution-No Derivative Works 2.0 Generic

Cats love linux photohiro Attribution 2.0 Generic

Day 10/366 – my muscle building supplements

size8jeans Attribution-Noncommercial 2.0 Generic

DSC00179 blatch Attribution-Share Alike 2.0 Generic

Handcuffed wlodi Attribution-Share Alike 2.0 Generic

Masarwa ma jonrawlinson Attribution 2.0 Generic