administrando jboss
TRANSCRIPT
Administrando Jboss
Javier Turgano Molina
Cursos GULUniversidad Carlos III01 Feb 2010
ndice
Introduccin
Presentando Jboss
Primera toma de contacto
Desplegando aplicaciones
Gestionando nuestro servidor
Ajuste de rendimiento
Clustering
Seguridad
Dudas
Introduccin
Presentando Jboss
Qu es Jboss?
Servidor de aplicaciones JAVA programado en JAVA.
Licencia: GPL/LGPL
Confiable a nivel de empresa
Altamente Modular
Lnea de Comandos + XML
Cumple los estandares
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 cmo Windows.
Caractersticas
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)
Caractersticas
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
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
Versiones de Jboss
Primera toma de contacto
Instalando
la mquina virtual Java
En primer lugar debemos de instalar la mquina virtual JAVA:
Desde la web del proveedor.Usando paquetes de nuestra distribucin.
Instalando Jboss
Descargamos Jboss
Lo descomprimimos:
tar zxvf jboss-xxxx.tar.gz
Lo arrancamos:
cd jboss-xxxx/bin./run.sh
ROCK and ROLL !!!
Accediendo a nuestro jboss
Escuchando en red
Por defecto Jboss slo escucha en localhost, pero podemos modificarlo:
./run.sh -b 0.0.0.0
Estructura de directorios
jboss//bin/client/docs/lib/server
Tipos de configuraciones
Distintos tipos de configuraciones predefinidas:
jboss/server//all/default/minimal/production
Seleccionamos la que queremos arrancar:
./run.sh -c default
Directorios en cada
configuracin
jboss/server/default//conf/data/deploy/lib/log/tmp/work
/jboss/server/all/deploy-hasingleton/farm
Componentes
bsh-deployer.xmlcache-invalidation-service.xmlclient-deployer-service.xmlear-deployer.xmlejb3.deployerejb3-interceptors-aop.xmlejb-deployer.xmlhsqldb-ds.xmlhttp-invoker.sarjboss-aop-jdk50.deployerjboss-bean.deployerjboss-ha-local-jdbc.rarjboss-ha-xa-jdbc.rarjbossjca-service.xmljboss-local-jdbc.rarjboss-web.deployer
jbossws.sarjboss-xa-jdbc.rarjmsjmx-console.warjmx-invoker-service.xmljsr88-service.xmlmail-ra.rarmail-service.xmlmanagementmonitoring-service.xmlproperties-service.xmlquartz-ra.rarschedule-manager-service.xmlscheduler-service.xmlsqlexception-service.xmluuid-key-generator.sar
jboss/server/default/deploy
Desplegando aplicaciones
Tipos de aplicaciones
- myapp.jar- myapp.war- myapp.ear- myapp-ds.xml
Modos de despliegue:
ComprimidoDesplegado
Configuracin de aplicaciones
myapp.war//WEB-INFweb.xmljboss-web.xml
myapp.ear/META-INFapplication.xml
Gestin de clases en Jboss
Por qu tenemos que tener cuidado con la gestin de clases en Jboss?
Cmo se comporta por defecto el cargador de clases?
Podemos modificar ese comportamiento?
Desplegando
Ejemplo: HUDSON - http://hudson-ci.org/
mkdir /opt/hudsonexport HUDSON_HOME=/opt/hudsoncp hudson.war jobss/server/default/deploy
Iniciamos servidor de aplicaciones.
Accediendo
http://localhost:8080/hudson
Accediendo a bases de datos
Depende de cada aplicacin pero es posible que necesitemos aadir uno de estos dos:
Driver JDBC de la BD.
Un data source con la conexin.
Gestionando nuestro servidor
Logs
Dnde estn los logs en jboss?
Configuracin principal de log4j en:
/server/default/conf/jboss-log4j.xml
Reducir el nivel de log
/server/default/conf/jboss-log4j.xml
Logs estilo Apache
jboss/server/all/deploy/jboss-web.deployer/server.xml
Herramientas de administracin
A travs de web: jmx-console
web-console
En el escritorio: jconsole
En lnea de comando: jps + jmap
twiddle
Plataformas de administracin: Jboss-on
RHQ/jopr
jmx-console
web-console
jconsole
jconsole
Para usarlo activamos la depuracin 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"
Lnea de comandos
Tambin disponemos de herramientas tiles en lnea de comandos:
- jps- jmap- twiddle
jboss/bin/twiddle.sh -s 127.0.0.1:1099 invoke jboss.system:type=ServerInfo listThreadCpuUtilization
Ajuste de rendimiento
Gestin de memoria
Configurando la memoria
Lmite de memoria con 32 bits: ~ 2Gb
Configuracin en jboss/bin/run.conf
-Xms1000m -Xmx3000m -XX:PermSize=256m -XX:MaxPermSize=384m
Recoleccin de basura
Tipos de recolecciones:GCFull-GC
Poltica por defecto:STOP THE WORLD!!!!
Recoleccin de basura
Depurando el recolector de basura:
-verbose:gc -XX:+PrintGCTimeStamps-XX:+PrintGCDetails
Configuraciones alternativas del Garbace Colector:
Recolector paralelo:+UseParallelGC
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 versin open source entre Apache y Jboss.
Otros parmetros
a tener en cuenta
Eliminar servicios innecesarios
Reducir nivel de log
Precompilar los JSPs
Delegar el contenido esttico (apache, ngynx)
Desactivar hot-deploy en produccin
Tuning del sistema operativo
Tuning acceso a Bases de Datos
Tuning acceso a la red
Clustering
Balanceo de carga con Apache
Apachemod_jk
Jboss
Jboss
JbossCluster
HTTP
HTTPS
AJP
Configuracin de Apache
Balanceamos a travs del mdulo mod_jk de Apache:
apt-get install libapache2-mod-jk
Worker.properties
/etc/libapache2-mod-jk/workers.properties
workers.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
Virtual Host
/etc/apache2/sites-available/site.mydomain.com
JkWorkersFile /etc/libapache2-mod-jk/workers.propertiesJkShmFile /var/log/apache2/jk.shm
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
Jboss Cluster
Nos permite compartir sesiones entre distinos nodos de Jboss.
Utiliza comunicacin 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
Configuracin
de las aplicaciones
Requisito: No tener objetos no serializables en sesin
Activacin: En el web.xml de la aplicacin aadimos la siguiente opcin:
Sticky Sessions
En caso de no poder realizar la comparticin de sesiones an podremos recurrir a las sesiones pegajosas.
En Apache en /etc/libapache2-mod-jk/workers.properties...worker.loadbalancer.sticky_session=1...
Sticky Sessions
En cada uno de los Jboss
En jboss/server/all/deploy/jboss-web.deployer/server.xml
... ...
En /server/all/deploy/jboss-web.deploy/META-INF/jboss-service.xml
true
Seguridad
Correr jboss
cmo usuario no privilegiado
Podemos correr jboss con cualquier usuario del sistema.
Por tanto no lo lanzaremos cmo root.
SSL Crear almacn
de certificados
Creamos un certificado y lo metemos en su almacen:
keytool -genkey -alias tomcat -keyalg RSA
Lo copiamos dentro de la instalacin de jboss:
cp .keystore jboss/server/default/conf/mykeystore
SSL - Configuracin
jboss/server/default/deploy/jboss-web.deployer/server.xml
Accedemos a travs de localhost:8443
Asegurando jmx-console
Descomentamos en jboss/server/default/deploy/jmx-console.war/WEB-INF/jboss-web.xml
java:/jaas/jmx-console
Descomentamos en jboss/server/default/deploy/jmx-console.war/WEB-INF/web.xml
HtmlAdaptor An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application /* GET POST JBossAdmin
Asegurando jmx-console
Descomentamos en jboss/server/default/conf/login-config.xm
props/jmx-console-users.properties props/jmx-console-roles.properties
Creamos el fichero jboss/server/default/conf/props/jmx-console-users.properties
admin=contrasena
Y aadimos el usuario al grupo admin jboss/server/default/conf/props/jmx-console-roles.properties
jmx-admin=JBossAdmin,HttpInvoker
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
HtmlAdaptor An example security config that only allows users with the role JBossAdmin to access the HTML JMX console web application /* GET POST JBossAdmin
jboss/server/default/deploy/management/console-mgr.sar/web-console.war/WEB-INF/jboss-web.xml
java:/jaas/jmx-console
Dudas
www.turegano.net
www.twitter.com/setoide
Licencia Creative Commons Reconocimiento 2.5 de Espaa
Contacto
Ilustraciones
TituloAutorLicencia
Jboss LogoRed hatAll right reserved
The gamev@lentinaAttribution-Noncommercial-No Derivative Works 2.0 Generic
Tux Tie adpowers Attribution 2.0 Generic
I wanna hold your handbategaAttribution 2.0 Generic
LegospectiveGuillermoAttribution-No Derivative Works 2.0 Generic
Cats love linuxphotohiroAttribution 2.0 Generic
Day 10/366 my muscle building supplementssize8jeansAttribution-Noncommercial 2.0 Generic
DSC00179blatchAttribution-Share Alike 2.0 Generic
HandcuffedwlodiAttribution-Share Alike 2.0 Generic
Masarwa majonrawlinsonAttribution 2.0 Generic
Administracin de Jboss - Cursos del Gul