Administración de Jboss - Cursos del Gul
Administrando Jboss
Javier Turégano MolinaCursos GULUniversidad Carlos III01 Feb 2010
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
Administración de Jboss - Cursos del Gul
Introducción
Administración de Jboss - Cursos del Gul
Presentando Jboss
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
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.
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)
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
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
Administración de Jboss - Cursos del Gul
Versiones de Jboss
Administración de Jboss - Cursos del Gul
Primera toma de contacto
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.
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 !!!
Administración de Jboss - Cursos del Gul
Accediendo a nuestro jboss
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
Administración de Jboss - Cursos del Gul
Estructura de directorios
jboss//bin/client/docs/lib/server
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
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
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
Administración de Jboss - Cursos del Gul
Desplegando aplicaciones
Administración de Jboss - Cursos del Gul
Tipos de aplicaciones
- myapp.jar- myapp.war- myapp.ear
- myapp-ds.xml
Modos de despliegue:
ComprimidoDesplegado
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
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?
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.
Administración de Jboss - Cursos del Gul
Accediendo
http://localhost:8080/hudson
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.
Administración de Jboss - Cursos del Gul
Gestionando nuestro servidor
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
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
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" />
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
Administración de Jboss - Cursos del Gul
jmx-console
Administración de Jboss - Cursos del Gul
web-console
Administración de Jboss - Cursos del Gul
jconsole
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"
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
Administración de Jboss - Cursos del Gul
Ajuste de rendimiento
Administración de Jboss - Cursos del Gul
Gestión de memoria
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
Administración de Jboss - Cursos del Gul
Recolección de basura
Tipos de recolecciones:GC
Full-GC
Política por defecto:STOP THE WORLD!!!!
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
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.
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
Administración de Jboss - Cursos del Gul
Clustering
Administración de Jboss - Cursos del Gul
Balanceo de carga con Apache
Apachemod_jk
Jboss Jboss
JbossCluster
HTTP HTTPS
AJP
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
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
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>
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
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/>
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...
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>
Administración de Jboss - Cursos del Gul
Seguridad
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.
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
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
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>
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
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>
Administración de Jboss - Cursos del Gul
Dudas
Administración de Jboss - Cursos del Gul
www.turegano.net
www.twitter.com/setoide
Licencia Creative Commons Reconocimiento 2.5 de España
Contacto
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
Top Related