Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Administrando Jboss

35,211 views

Published on

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.

Published in: Technology, Education
  • Excelente documentación Javier, muchas gracias por compartirla
       Reply 
    Are you sure you want to  Yes  No
    Your message goes here

Administrando Jboss

  1. 1. Administrando Jboss Javier Turégano Molina Cursos GUL Universidad Carlos III 01 Feb 2010
  2. 2. Índice <ul><li>Introducción
  3. 3. Presentando Jboss
  4. 4. Primera toma de contacto
  5. 5. Desplegando aplicaciones
  6. 6. Gestionando nuestro servidor
  7. 7. Ajuste de rendimiento
  8. 8. Clustering
  9. 9. Seguridad
  10. 10. Dudas </li></ul>
  11. 11. Introducción
  12. 12. Presentando Jboss
  13. 13. ¿Qué es Jboss? Servidor de aplicaciones JAVA programado en JAVA. <ul><ul><ul><ul><ul><ul><li>Licencia: GPL/LGPL
  14. 14. Confiable a nivel de empresa
  15. 15. Altamente Modular
  16. 16. Línea de Comandos + XML
  17. 17. Cumple los estandares </li></ul></ul></ul></ul></ul></ul>
  18. 18. 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.
  19. 19. Características <ul><li>Clustering
  20. 20. Failover (including sessions)
  21. 21. Load balancing
  22. 22. Distributed caching (using JBoss Cache, a standalone product)
  23. 23. Distributed deployment (farming)
  24. 24. Deployment API
  25. 25. Management API
  26. 26. Aspect-Oriented Programming (AOP) support
  27. 27. JSP/Servlet 2.1/2.5 (Tomcat)
  28. 28. JavaServer Faces 1.2 (Mojarra)
  29. 29. Enterprise Java Beans versions 3 and 2.1
  30. 30. JNDI (Java Naming and Directory Interface)
  31. 31. Hibernate-integration (for persistence programming; JPA) </li></ul>
  32. 32. Características <ul><li>JDBC
  33. 33. JTA (Java Transaction API)
  34. 34. Support for Java EE-Web Services like JAX-WS
  35. 35. SAAJ (SOAP with Attachments API for Java)
  36. 36. JMS (Java Message Service) integration
  37. 37. JavaMail
  38. 38. RMI-IIOP (JacORB, alias Java and CORBA)
  39. 39. JAAS (Java Authentication and Authorization Service)
  40. 40. JCA (Java Connector Architecture)-integration
  41. 41. JACC (Java Authorization Contract for Containers)-integration
  42. 42. Java Management Extensions </li></ul>
  43. 43. 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
  44. 44. Versiones de Jboss
  45. 45. Primera toma de contacto
  46. 46. 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.
  47. 47. Instalando Jboss <ul><li>Descargamos Jboss
  48. 48. Lo descomprimimos: </li></ul>tar zxvf jboss-xxxx.tar.gz <ul><li>Lo arrancamos: </li></ul>cd jboss-xxxx/bin ./run.sh ¡¡¡ ROCK and ROLL !!!
  49. 49. Accediendo a nuestro jboss
  50. 50. Escuchando en red Por defecto Jboss sólo escucha en localhost, pero podemos modificarlo: ./run.sh -b 0.0.0.0
  51. 51. Estructura de directorios jboss/ /bin /client /docs /lib /server
  52. 52. Tipos de configuraciones Distintos tipos de configuraciones predefinidas: jboss/server/ /all /default /minimal /production Seleccionamos la que queremos arrancar: ./run.sh -c default
  53. 53. Directorios en cada configuración jboss/server/default/ /conf /data /deploy /lib /log /tmp /work /jboss/server/all /deploy-hasingleton /farm
  54. 54. 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
  55. 55. Desplegando aplicaciones
  56. 56. Tipos de aplicaciones - myapp.jar - myapp.war - myapp.ear - myapp-ds.xml Modos de despliegue: Comprimido Desplegado
  57. 57. Configuración de aplicaciones myapp.war/ /WEB-INF web.xml jboss-web.xml myapp.ear /META-INF application.xml
  58. 58. 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?
  59. 59. 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.
  60. 60. Accediendo http://localhost:8080/hudson
  61. 61. Accediendo a bases de datos Depende de cada aplicación pero es posible que necesitemos añadir uno de estos dos: <ul><li>Driver JDBC de la BD.
  62. 62. Un data source con la conexión. </li></ul>
  63. 63. Gestionando nuestro servidor
  64. 64. Logs ¿Dónde están los logs en jboss? Configuración principal de log4j en: /server/default/conf/jboss-log4j.xml
  65. 65. 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
  66. 66. 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; />
  67. 67. Herramientas de administración A través de web: <ul><li>jmx-console
  68. 68. web-console </li></ul>En el escritorio: <ul><li>jconsole </li></ul>En línea de comando: <ul><li>jps + jmap
  69. 69. twiddle </li></ul>Plataformas de administración: <ul><li>Jboss-on
  70. 70. RHQ/jopr </li></ul>
  71. 71. jmx-console
  72. 72. web-console
  73. 73. jconsole
  74. 74. 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;
  75. 75. 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
  76. 76. Ajuste de rendimiento
  77. 77. Gestión de memoria
  78. 78. 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
  79. 79. Recolección de basura Tipos de recolecciones: GC Full-GC Política por defecto: STOP THE WORLD!!!!
  80. 80. Recolección de basura Depurando el recolector de basura: -verbose:gc -XX:+PrintGCTimeStamps -XX:+PrintGCDetails Configuraciones alternativas del Garbace Colector: Recolector paralelo: +UseParallelGC
  81. 81. 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.
  82. 82. Otros parámetros a tener en cuenta <ul><ul><ul><li>Eliminar servicios innecesarios
  83. 83. Reducir nivel de log
  84. 84. Precompilar los JSPs
  85. 85. Delegar el contenido estático (apache, ngynx)
  86. 86. Desactivar hot-deploy en producción
  87. 87. Tuning del sistema operativo
  88. 88. Tuning acceso a Bases de Datos
  89. 89. Tuning acceso a la red </li></ul></ul></ul>
  90. 90. Clustering
  91. 91. Balanceo de carga con Apache Jboss Cluster HTTP HTTPS AJP Apache mod_jk Jboss Jboss
  92. 92. Configuración de Apache Balanceamos a través del módulo mod_jk de Apache: apt-get install libapache2-mod-jk
  93. 93. 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
  94. 94. 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>
  95. 95. 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
  96. 96. 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/>
  97. 97. 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 ...
  98. 98. Sticky Sessions En cada uno de los Jboss <ul><li>En jboss/server/all/deploy/jboss-web.deployer/server.xml </li></ul><Engine name=&quot;jboss.web&quot; defaultHost=&quot;localhost&quot; jvmRoute=&quot;node1&quot;> ... ... </Engine> <ul><li>En /server/all/deploy/jboss-web.deploy/META-INF/jboss-service.xml </li></ul><attribute name=&quot;UseJK&quot;>true</attribute>
  99. 99. Seguridad
  100. 100. Correr jboss cómo usuario no privilegiado Podemos correr jboss con cualquier usuario del sistema. Por tanto no lo lanzaremos cómo root .
  101. 101. 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
  102. 102. 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
  103. 103. 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>
  104. 104. 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
  105. 105. 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>
  106. 106. Dudas
  107. 107. www.turegano.net www.twitter.com/setoide Licencia Creative Commons Reconocimiento 2.5 de España Contacto
  108. 108. 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

×