Administraciķ bāsica d'un servidor Jboss

02-01-2008 > Miquel Casanovas Puigvi


Mostrar o escribir comentarios (dudas) sobre este artículo

S.O: Ubuntu Gutsy Gibbon
Software: Jboss-4.2.2.GA.zip
Hardware: Genèric
Español / Ingles: Administración de un servidor Jboss / Administration of a Jboss Server


Els problemes d’administració en un servidor Jboss poden ser de molts tipus i molt complexes. En aquests casos, tot administrador ha de conèixer amb molt detall com funciona el servidor (inclòs servei Jboss) i com està estructurat per tal de poder detectar els errors. Per exemple, és bàsic saber on estan els logs del servei, on hi ha instal·lades les aplicacions, quins permisos tenen, etc...

La manera de solucionar aquests problemes no es realitzant procediments mecànics. Cal dotar el administrador de la major informació possible, perquè ell (inclús mitjançant altres aplicacions) pugui detectar el problema. En els següents punts es mostra a nivell tècnic el funcionament bàsic del servidor d’aplicacions Java Jboss. Es tracte de poder detectar diferents problemes d’administració.

Estructura del JBOSS

En primera instància, analitzem què conté cada carpeta de l’estructura de fitxers de Jboss. A l’arrel del Jboss i referint-nos a la última versió estable (versió 4.2.2), s’hi troben les següents carpetes amb les seves funcionalitats:
• bin/
Conté scripts pel control de Jboss.
• client/
Llibreries que els clients poden utilitzar remotament.
• docs/
Documentació sobre Jboss.
• lib/
Nucli de llibreries.
• server/
Serveis del hosting.


Dintre la carpeta server, veurem que venen tres configuracions del serveis:
• Minimal/ Configuració mínima.
• Default/ Configuració estàndard. És utilitzada per defecte.
• All/ Configuració de projectes full.


Si volem crear una carpeta personalitzada, només hem de copiar la carpeta default com a un altre nom i configurar la variable d’entorn JBOSS_HOME. És necessari reiniciar el processos de Jboss.
Finalment la carpeta default conté:
• conf/
Meta-informació de configuració.
• data/
Emmagatzemament de dades per JBOSS.
• deploy/
Localització del projectes de JBOSS. En aquesta carpeta podem afegir aplicacions sense haver de reiniciar el servidor. És el que sen diu (hot-deployment).
• lib/
Llibreries que són requerides per aquesta configuració.
• log/
Logs dels jboss.
• tmp/
Jboss l’utilitza temporalment per guardar-hi dades, molt similar a les carpetes data i logs.
• work/
És utilitzada com a cache per les pàgines dinàmiques JSP.



Instal·lació del JBOSS

La instal·lació bàsica del servidor Jboss no és un procés molt complexa. Seguint la metodologia d’utilitzar software lliure (com el Jboss), farem la instal·lació sota una plataforma Linux. Concretament utilitzarem un Ubuntu Gutsy (7.04) però el procediment es casi totalment genèric per si es vol realitzar amb qualsevol altre distribució.

Ens descarreguem la ultima versió estable ja compilada i la descomprimim:
> mkdir server
> cd server
> wget http://kent.dl.sourceforge.net/sourceforge/jboss/jboss-4.2.2.GA.zip
> unzip jboss-4.2.2.GA.zip
> mv jboss-4.2.2.GA jboss


Procedim en posar amb marxa el servei Jboss (com a root):
> cd jboss/bin/
> JBOSS_HOME=/home/gurx/server/jboss
> export JBOSS_HOME
> run.sh


Obtindrem un sortida per pantalla com la següent:
======================================================
JBoss Bootstrap Environment
JBOSS_HOME: /home/gurx/server/jboss
JAVA: java
JAVA_OPTS: -Dprogram.name=run.sh -server -Xms128m -Xmx512m
-Dsun.rmi.dgc.client.gcInterval=3600000
-Dsun.rmi.dgc.server.gcInterval=3600000 -Djava.net.preferIPv4Stack=true
CLASSPATH: /home/gurx/server/jboss/bin/run.jar
=======================================================
21:26:30,265 INFO [Server] Starting JBoss (MX MicroKernel)...
21:26:30,296 INFO [Server] Release ID: JBoss [Trinity] 4.2.2.GA (build:
SVNTag=JBoss_4_2_2_GA date=200710221139)
21:26:30,297 INFO [Server] Home Dir: /home/gurx/server/jboss
21:26:30,297 INFO [Server] Home URL: file:/home/gurx/server/jboss/
21:26:30,298 INFO [Server] Patch URL: null
21:26:30,298 INFO [Server] Server Name: default
21:26:30,298 INFO [Server] Server Home
Dir: /home/gurx/server/jboss/server/default
21:26:30,298 INFO [Server] Server Home URL:
file:/home/gurx/server/jboss/server/default/
21:26:30,298 INFO [Server] Server Log
Dir: /home/gurx/server/jboss/server/default/log
21:26:30,299 INFO [Server] Server Temp
Dir: /home/gurx/server/jboss/server/default/tmp
21:26:30,299 INFO [Server] Root Deployment Filename: jboss-service.xml
21:26:31,428 INFO [ServerInfo] Java version: 1.6.0_03,Sun Microsystems Inc.
21:26:31,428 INFO [ServerInfo] Java VM: Java HotSpot(TM) Server VM
1.6.0_03-b05,Sun Microsystems Inc.
21:26:31,428 INFO [ServerInfo] OS-System: Linux 2.6.22-14-generic,i386
21:26:32,143 INFO [Server] Core system initialized
21:26:36,035 INFO [WebService] Using RMI server codebase:
http://127.0.0.1:8083/
21:26:36,037 INFO [Log4jService$URLWatchTimerTask] Configuring from URL:
resource:jboss-log4j.xml
21:26:37,011 INFO [TransactionManagerService] JBossTS Transaction Service
(JTA version) - JBoss Inc.
21:26:37,012 INFO [TransactionManagerService] Setting up property manager
MBean and JMX layer
21:26:37,301 INFO [TransactionManagerService] Starting recovery manager
21:26:37,572 INFO [TransactionManagerService] Recovery manager started
...
...
21:26:54,161 INFO [AjpProtocol] Starting Coyote AJP/1.3 on
ajp-127.0.0.1-8009
21:26:54,249 INFO [Server] JBoss (MX MicroKernel) [4.2.2.GA (build:
SVNTag=JBoss_4_2_2_GA date=200710221139)] Started in 23s:948ms



Amb una execució de Nmap (escanejador de ports) podem veure que els ports oberts que té el servei:
> nmap localhost
Starting Nmap 4.20 ( http://insecure.org ) at 2007-11-23 17:21 CET
Interesting ports on localhost (127.0.0.1):
Not shown: 1691 closed ports
PORT STATE SERVICE
8009/tcp open ajp13
8080/tcp open http-proxy


En aquest punt, mitjançant un navegador web es pot fer una petició HTTP al port 8080 de la màquina. Apareixerà la pàgina de presentació de Jboss:
> firefox http://127.0.0.1:8080/

En aquesta pàgina es pot accedir a petites aplicacions web que serveixen per veure la configuració del servidor Jboss. També es molt útil pels administradors per detectar fallades en el servei o un funcionament defectuós.

Posar una aplicació en JBOSS

Qualsevol administrador ha de tenir coneixements sobre com posar una aplicació en el servei Jboss.
Imagineu-vos una empresa on hi ha programadors d’aplicacions Java. Aquests programadors treballen utilitzant uns servidors de prova (testing servers) i un cop acabada una aplicació s’ha de posar en el servidor operatiu. Passar una aplicació del servidor de prova al servidor operatiu és una tasca que l’haurà de realitzar la persona responsable de l’administració.

En aquesta secció, es mostra com crear la típica aplicació “Hola Mon” i la es posarà en funcionament en el nostre servidor d’aplicacions Jboss que hem instal·lat anteriorment. Aquesta aplicació consisteix en una pàgina dinàmica JSP (Java Server Page) que mostra un missatge per pantalla.

En primera instància creem un fitxer anomenat index.jsp.
> mkdir HolaMon
> cd HolaMon
> vim index.jsp (s’hi posa el següent contingut)


<%@ page import="java.util.*" %>
<html>
<head><title>Hola Mon</title></head>
<body>
<%! String message = "Hola, Mon"; %>
<h1><%= message%> </h1>
Date d'avui: <%= new Date() %>
</body>
</html>


Com a tots els projectes web Java, es crear un fitxer de configuració dintre d’una carpeta anomenada WEB-INF.
> mkdir WEB-INF
> cd WEB-INF
> vim web.xml (s’hi afegeix les següents línies)


<web-app>
<display-name>Hola Mon</display-name>
</web-app>


Ja es disposa de l’aplicació finalitzada. Procedim mostrar com es posa l’aplicació Hola Mon en el servidor d’aplicacions.

En aquest cas s’ha optat per posar l’aplicació com un paquet de tipus WAR. Aquest paquet WAR no és res més que l’aplicació HolaMon comprimida utilitzant el programa Jar. Si no es té instal·lada l’aplicació Jar, només s’ha d’instal·lar el paquet de desenvolupament de Java (Java JDK). En aquesta distribució de Linux s’ha realitzat mitjançant un instal·lador de aplicacions APT (apt-get install sun-java6-jdk).
> cd ..
> jar -cvf HolaMon.war *.jsp WEB-INF/
manifest agregado
agregando: index.jsp (entrada = 248) (salida = 164) (desinflado 33%)
agregando: WEB-INF/ (entrada = 0) (salida = 0) (almacenado 0%)
agregando: WEB-INF/web.xml (entrada = 65) (salida = 47) (desinflado 27%)


En la mateixa carpeta, s’ha creat el fitxer HolaMon.war. S’ha de copiar el fitxer en la ubicació on tenim els projectes de JBOSS.
>cd /home/gurx/server/jboss/server/
En aquest directori s’hi veuen les tres carpetes esmentades anteriorment:
> ls -la
drwxr-xr-x 5 gurx gurx 4096 2007-12-01 10:33 .
drwxr-xr-x 7 gurx gurx 4096 2007-10-22 18:41 ..
drwxr-xr-x 7 gurx gurx 4096 2007-10-22 11:42 all
drwxr-xr-x 9 gurx gurx 4096 2007-12-01 09:39 default
drwxr-xr-x 5 gurx gurx 4096 2007-10-22 11:43 minimal


Per defecte Jboss utilitza la default. Així copiem la aplicació en el deploy de dintre  default.
> cd default/deploy
> cp ~/HolaMon/HolaMon.war ./


Finalment si s’accedeix amb un navegador web a la següent URL, veurem com s’executa l’aplicació HolaMon.
> firefox http://127.0.0.1/HolaMon/

Problemes més complexes

Fins aquest punt, s’han vist el funcionament bàsic. No obstant el servidor Jboss pot tenir problemes d’administració més complexes. Alguns d’aquests problemes també poden ser comuns en qualsevol altre servidor d’aplicacions Java.

Els problemes poden ser de tipologies molt vairades. Per exemple de tipus de sobrecàrrega del servidors. Una aplicació pot requerir molts recursos i si en un moment en concret té molts accessos d’usuaris simultanis pot carregar la CPU, provocant la caiguda del servei. S’ha de tenir en compte quina CPU i memòria RAM té el nostre servidor, així com detalls més tècnics com la velocitat dels busos, etc...

També s’ha de valorar en quines instal·lacions hi ha el servidor Jboss. Si les peticions cap a les aplicacions es realitzen des de la mateixa LAN, en principi no hi ha d’haver problemes d’ample de banda. Però, si les aplicacions han d’estar accessibles des d’Internet, necessitarem una connexió cap a la WAN amb molt ample de banda. Una possible solució és posar el servidor en un DataCenter.

Sabem que el servidor Jboss és un software middleware, és a dir, que ofereix un conjunt de serveis que fan possible el funcionament d’aplicacions distribuïdes sobre plataformes heterogènies. Intenta oferir un entorn perquè els programadors puguin dissenyar les seves aplicacions independentment del Sistema Operatiu i programari instal·lats. Així, és possible tenir problemes a causa de la seva complexitat (llibreries, mòduls, ...).

Un exemple d’aquesta complexitat pot ser les extensions que té el Jboss. Suposem que es vol utilitzar un paquet té anomenat JbossForum. Com el seu nom indica, proporciona un servei web fòrum. Aquesta extensió requereix accedir a una base de dades. Així, s’ha d’instal·lar una base de dades (p.e. MySQL). Posteriorment s’ha de configurar els permisos d’accés, controlar que no creixí molt el seu tamany, canviar contrasenyes cada X temps, etc. Els problemes d’administració són directament proporcional a la complexitat del nostre serveis instal·lats.

Mostrar o escribir comentarios (dudas) sobre este artículo