Administrando Jboss
Upcoming SlideShare
Loading in...5
×
 

Administrando Jboss

on

  • 34,108 views

Introducción a la administración del servidor de aplicaciones Jboss. JBoss es el primer servidor de aplicaciones de código abierto, preparado para la producción y certificado J2EE 1.4, disponible ...

Introducción a la administración del servidor de aplicaciones Jboss. JBoss es el primer servidor de aplicaciones de código abierto, preparado para la producción y certificado J2EE 1.4, disponible en el mercado, ofreciendo una plataforma de alto rendimiento para aplicaciones de e-business. En la charla se cubrirán aspectos cómo la instalación, configuración básica, despliegue y clustering del servidor. La charla se enmarca dentro del programa de cursos de Marzo del GUL.

Statistics

Views

Total Views
34,108
Views on SlideShare
33,694
Embed Views
414

Actions

Likes
6
Downloads
1,073
Comments
1

4 Embeds 414

http://www.turegano.net 251
http://www.slideshare.net 161
http://webcache.googleusercontent.com 1
http://www.slashdocs.com 1

Accessibility

Categories

Upload Details

Uploaded via as OpenOffice

Usage Rights

© All Rights Reserved

Report content

Flagged as inappropriate Flag as inappropriate
Flag as inappropriate

Select your reason for flagging this presentation as inappropriate.

Cancel

11 of 1

  • Full Name Full Name Comment goes here.
    Are you sure you want to
    Your message goes here
    Processing…
  • Excelente documentación Javier, muchas gracias por compartirla
    Are you sure you want to
    Your message goes here
    Processing…
Post Comment
Edit your comment

    Administrando Jboss Administrando Jboss Presentation Transcript

    • Administrando Jboss Javier Turégano Molina Cursos GUL Universidad Carlos III 01 Feb 2010
    • Índice
      • Introducción
      • Presentando Jboss
      • Primera toma de contacto
      • Desplegando aplicaciones
      • Gestionando nuestro servidor
      • Ajuste de rendimiento
      • Clustering
      • Seguridad
      • Dudas
    • Introducción
    • Presentando Jboss
    • ¿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
    • 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.
    • 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)
    • 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
    • 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 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.
    • 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 sólo 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 configuración jboss/server/default/ /conf /data /deploy /lib /log /tmp /work /jboss/server/all /deploy-hasingleton /farm
    • 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
    • Desplegando aplicaciones
    • Tipos de aplicaciones - myapp.jar - myapp.war - myapp.ear - myapp-ds.xml Modos de despliegue: Comprimido Desplegado
    • Configuración de aplicaciones myapp.war/ /WEB-INF web.xml jboss-web.xml myapp.ear /META-INF application.xml
    • 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?
    • Desplegando Ejemplo: HUDSON - http://hudson-ci.org/ mkdir /opt/hudson export HUDSON_HOME=/opt/hudson cp hudson.war jobss/server/default/deploy Iniciamos servidor de aplicaciones.
    • Accediendo http://localhost:8080/hudson
    • 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.
    • Gestionando nuestro servidor
    • Logs ¿Dónde están los logs en jboss? Configuración principal de log4j en: /server/default/conf/jboss-log4j.xml
    • Reducir el nivel de log <category name=&quot;org&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;javax&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;fr&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;uk&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;net&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;httpclient&quot;> <priority value=&quot;INFO&quot;/> </category> <category name=&quot;com&quot;> <priority value=&quot;INFO&quot;/> </category> /server/default/conf/jboss-log4j.xml
    • Logs estilo Apache jboss/server/all/deploy/jboss-web.deployer/server.xml <Valve className=&quot;org.apache.catalina.valves.AccessLogValve&quot; prefix=&quot;myserver_access.&quot; suffix=&quot;.log&quot; pattern=&quot;common&quot; directory=&quot;${jboss.server.log.dir}&quot; resolveHosts=&quot;false&quot; />
    • 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
    • jmx-console
    • web-console
    • jconsole
    • 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&quot;
    • 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
    • Ajuste de rendimiento
    • Gestión de memoria
    • 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
    • Recolección de basura Tipos de recolecciones: GC Full-GC Política por defecto: STOP THE WORLD!!!!
    • Recolección 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 versión open source entre Apache y Jboss.
    • 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
    • Clustering
    • Balanceo de carga con Apache Jboss Cluster HTTP HTTPS AJP Apache mod_jk Jboss Jboss
    • Configuración de Apache Balanceamos a través del módulo mod_jk de Apache: apt-get install libapache2-mod-jk
    • 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
    • Virtual Host /etc/apache2/sites-available/site.mydomain.com JkWorkersFile /etc/libapache2-mod-jk/workers.properties JkShmFile /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>
    • 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
    • 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: <distributable/>
    • 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 ...
    • Sticky Sessions En cada uno de los Jboss
      • En jboss/server/all/deploy/jboss-web.deployer/server.xml
      <Engine name=&quot;jboss.web&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;node1&quot;> ... ... </Engine>
      • En /server/all/deploy/jboss-web.deploy/META-INF/jboss-service.xml
      <attribute name=&quot;UseJK&quot;>true</attribute>
    • Seguridad
    • Correr jboss cómo usuario no privilegiado Podemos correr jboss con cualquier usuario del sistema. Por tanto no lo lanzaremos cómo root .
    • 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
    • SSL - Configuración jboss/server/default/deploy/jboss-web.deployer/server.xml <Connector port=&quot;8443&quot; protocol=&quot;HTTP/1.1&quot; SSLEnabled=&quot;true&quot; address=&quot;${jboss.bind.address}&quot; redirectPort=&quot;8443&quot; maxThreads=&quot;150&quot; scheme=&quot;https&quot; secure=&quot;true&quot; clientAuth=&quot;false&quot; sslProtocol=&quot;TLS&quot; keystoreFile=&quot;${jboss.server.home.dir}/conf/mykeystore&quot; keystorePass=&quot;changeit&quot; /> Accedemos a través de localhost:8443
    • Asegurando jmx-console Descomentamos 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>
    • Asegurando jmx-console Descomentamos en jboss/server/default/conf/login-config.xm <application-policy name = &quot;jmx-console&quot;> <authentication> <login-module code=&quot;org.jboss.security.auth.spi.UsersRolesLoginModule&quot; flag = &quot;required&quot;> <module-option name=&quot;usersProperties&quot;>props/jmx-console-users.properties</module-option> <module-option name=&quot;rolesProperties&quot;>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.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 <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>
    • Dudas
    • www.turegano.net www.twitter.com/setoide Licencia Creative Commons Reconocimiento 2.5 de España Contacto
    • Ilustraciones Titulo Autor Licencia Jboss Logo Red hat All right reserved The game [email_address] 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