1 Administración de Jboss - Cursos del Gul Administrando Jboss Javier Turégano Molina Cursos GUL Universidad Carlos III 01 Feb 2010
2 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
3 Administración de Jboss - Cursos del Gul Introducción
4 Administración de Jboss - Cursos del Gul Presentando Jboss
5 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
6 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.
7 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)
8 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
9 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_applic ation_servers
10 Administración de Jboss - Cursos del Gul Versiones de Jboss
11 Administración de Jboss - Cursos del Gul Primera toma de contacto
12 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.
13 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 !!!
14 Administración de Jboss - Cursos del Gul Accediendo a nuestro jboss
15 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
16 Administración de Jboss - Cursos del Gul Estructura de directorios jboss/ /bin /client /docs /lib /server
17 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
18 Administración de Jboss - Cursos del Gul Directorios en cada configuración jboss/server/default/ /conf /data /deploy /lib /log /tmp /work /jboss/server/all /deploy-hasingleton /farm
19 Administración de Jboss - Cursos del Gul Componentes bsh-deployer.xml cache-invalidation-service.xml client-deployer-service.xml ear-deployer.xml ejb3.deployer ejb3-interceptors-aop.xml ejb-deployer.xml hsqldb-ds.xml http-invoker.sar jboss-aop-jdk50.deployer jboss-bean.deployer jboss-ha-local-jdbc.rar jboss-ha-xa-jdbc.rar jbossjca-service.xml jboss-local-jdbc.rar jboss-web.deployer jbossws.sar jboss-xa-jdbc.rar jms jmx-console.war jmx-invoker-service.xml jsr88-service.xml mail-ra.rar mail-service.xml management monitoring-service.xml properties-service.xml quartz-ra.rar schedule-manager-service.xml scheduler-service.xml sqlexception-service.xml uuid-key-generator.sar jboss/server/default/deploy
20 Administración de Jboss - Cursos del Gul Desplegando aplicaciones
21 Administración de Jboss - Cursos del Gul Tipos de aplicaciones - myapp.jar - myapp.war - myapp.ear - myapp-ds.xml Modos de despliegue: Comprimido Desplegado
22 Administración de Jboss - Cursos del Gul Configuración de aplicaciones myapp.war/ /WEB-INF web.xml jboss-web.xml myapp.ear /META-INF application.xml
23 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?
24 Administración de Jboss - Cursos del Gul Desplegando Ejemplo: HUDSON - http://hudson-ci.org/http://hudson-ci.org/ mkdir /opt/hudson export HUDSON_HOME=/opt/hudson cp hudson.war jobss/server/default/deploy Iniciamos servidor de aplicaciones.
25 Administración de Jboss - Cursos del Gul Accediendo http://localhost:8080/hudson
26 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.
27 Administración de Jboss - Cursos del Gul Gestionando nuestro servidor
28 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
29 Administración de Jboss - Cursos del Gul Reducir el nivel de log /server/default/conf/jboss-log4j.xml
30 Administración de Jboss - Cursos del Gul Logs estilo Apache jboss/server/all/deploy/jboss- web.deployer/server.xml
31 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
32 Administración de Jboss - Cursos del Gul jmx-console
33 Administración de Jboss - Cursos del Gul web-console
34 Administración de Jboss - Cursos del Gul jconsole
35 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"
36 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
37 Administración de Jboss - Cursos del Gul Ajuste de rendimiento
38 Administración de Jboss - Cursos del Gul Gestión de memoria
39 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
40 Administración de Jboss - Cursos del Gul Recolección de basura Tipos de recolecciones: GC Full-GC Política por defecto: STOP THE WORLD!!!!
41 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
42 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.
43 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
44 Administración de Jboss - Cursos del Gul Clustering
45 Administración de Jboss - Cursos del Gul Balanceo de carga con Apache Apache mod_jk Jboss Cluster HTTP HTTPS AJP
46 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
47 Administración de Jboss - Cursos del Gul Worker.properties /etc/libapache2-mod-jk/workers.properties workers.tomcat_home=/opt/jboss workers.java_home=/usr/lib/jvm/java-1.5.0-sun ps=/ worker.list=node1,node2,lb node1.ajp13_worker.port=8009 node1.ajp13_worker.host=node1.mydomain.con node1r.ajp13_worker.type=ajp13 node1.ajp13_worker.lbfactor=1 node2.ajp13_worker.port=8009 node2.ajp13_worker.host=node2.mydomain.con node2r.ajp13_worker.type=ajp13 node2.ajp13_worker.lbfactor=1 worker.loadbalancer.type=lb worker.loadbalancer.balance_workers=node1,node2 worker.loadbalancer.sticky_session=0
48 Administración de Jboss - Cursos del Gul Virtual Host /etc/apache2/sites-available/site.mydomain.com JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkShmFile /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
49 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
50 Administración de Jboss - Cursos del Gul Configuración de 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:
51 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...
52 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... ● En /server/all/deploy/jboss-web.deploy/META-INF/jboss- service.xml true
53 Administración de Jboss - Cursos del Gul Seguridad
54 Administración de Jboss - Cursos del Gul Correr jboss cómo usuario no privilegiado Podemos correr jboss con cualquier usuario del sistema. Por tanto no lo lanzaremos cómo root.
55 Administración de Jboss - Cursos del Gul SSL – Crear almacén de 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
56 Administración de Jboss - Cursos del Gul SSL - Configuración jboss/server/default/deploy/jboss- web.deployer/server.xml Accedemos a través de localhost:8443
57 Administración de Jboss - Cursos del Gul 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
58 Administración de Jboss - Cursos del Gul 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 añadimos el usuario al grupo admin jboss/server/default/conf/props/jmx-console-roles.properties jmx-admin=JBossAdmin,HttpInvoker
59 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 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
60 Administración de Jboss - Cursos del Gul Dudas
61 Administración de Jboss - Cursos del Gul www.turegano.net www.twitter.com/setoid e Licencia Creative Commons Reconocimiento 2.5 de España Contacto
62 Administración de Jboss - Cursos del Gul Ilustraciones