SafeChildren Banner

Havoc Oracle Solaris Experts
Mostrando entradas con la etiqueta jms. Mostrar todas las entradas
Mostrando entradas con la etiqueta jms. Mostrar todas las entradas

jueves, 16 de septiembre de 2010

Problemas ActiveMQ 5.4 en Solaris 10

Introducción
Mientras hablábamos de Cómo Instalar Apache ActiveMQ 5.x en Solaris 10, desde Apache han liberado una nueva versión, la 5.4. En esta han introducido algunos cambios, principalmente en los scripts de arranque. Esto hace que las definiciones de los method para ActiveMQ que habíamos creado, ya no funcionen correctamente.

Nuevo formato Script ActiveMQ
El nuevo formato de script acepta más parámetros, y ahora podemos utilizar para iniciar, detener, verificar mensajes, eliminar mensajes, entre otros

El formato es el siguiente
$ACTIVEMQ_HOME/bin/activemq [tarea] [opciones-tarea] [datos-tarea]
Y las tareas disponibles son las siguientes:
  •     start. Crea he inicia el broker
  •     create. Crea una instancia en el path especificado
  •     stop. Detiene el broker
  •     list. Muestra los brokes que hay disponibles
  •     query. Consulta una propiedad de un broker
  •     browse. Muestra los mensajes de un broker
  •     journal-audit. Muestra los mensaje almacenados en el storage area
  •     purge. Borra los destinos seleccionados
Problemas con el script y nuestro method
El principal problema de nuestro method para ActiveMQ 5.3.x viene por el nuevo formato, que ahora es necesario introducir un nuevo parámetro <task>, como hemos visto antes, que nos permitirá realizar diferentes acciones.

Cuando diseñe el method, el script <activemq> no tenía estos parámetros, y por lo tanto, no funcionaba. Para ello, he creado una nueva versión de Solaris SMF Method para ActiveMQ 5.4.x que, simplemente modifica los parámetros de inicio. Así mismo, el manifest para ActiveMQ 5.4 también lo he modificado para que pueda adaptarse a estas nuevas funcionalidades.

Para evitar, tener problemas con mi instalación de ActiveMQ 5.3.x, hemos definido un nuevo ACTIVEMQ_HOME para la instalación ActiveMQ 5.4 que corresponde a </opt/www/activemq5.4> pero puedes asignar la que quieras.

Aplicar el parche de <$ACTIVEMQ/bin/activemq>
He creado un pequeño parche que soluciona los problemas para poder ejecutarlo dentro de nuestra instalación de Solaris.

Básicamente, el problema viene por el uso del comando <whoami> que, como recordáis durante la Instalación de Hadoop en Solaris 10, también nos sucedía, y por el uso de la opción <-q> -quiet- del comando <grep> que en SRV no está definida.
 
Para aplicarlo, simplemente deberemos descargarnos el parche para Solaris 10 de ActiveMQ 5.4 y ejecutar el comando <patch> de la siguiente forma:
# cd $ACTIVEMQ_HOME
# cd bin
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/activemq/5.4/activemq.patch
# patch activemq-test < activemq.patch
  Parece un diff normal.
terminado
Para aquellos que no os apetezca parchear os he dejado una versión Parcheada para Solaris 10 del script que simplemente deberéis remplazar la que viene con la distribución de Apache por esta.

Conclusiones
A veces, los cambios pueden ocasionarnos problemas, por eso, es muy recomendable utilizar un entorno de pruebas donde hagamos todos los cambios, y una vez validados, poderlos pasar a producción.

Además, como no son muy complejos, podemos continuar con nuestra serie de Instalación y Configuración de ActiveMQ 5.x en Solaris 10

Referencias

miércoles, 28 de julio de 2010

Instalar Apache ActiveMQ en Solaris

Introducción
ActiveMQ es el servidor JMS de Apache. La instalación requiere de la versión Java 1.5, como mínimo, e incorpora un administrador Web <Admin Console> que nos permitirá monitorizar nuestro servidor y realizar algunas tareas sencillas.

Realmente este no es el sitio para <programar en Java utilizando JMS>, pero si que haremos una instalación y configuración del servicio utilizando SMF.


Instalación de Apache ActiveMQ
Lo primero que debemos hacer es comprobar que tenemos los requisitos principales, es decir, JDK 1.5 o superior, si fuese así aquí tenéis Cómo Instalar Java 6 en Solaris 10 en 64bits.
$ which java
/opt/www/jdk1.6.0/bin/java
$ which javac
/opt/www/jdk1.6.0/bin/javac
$ javac -fullversion
javac full version "1.6.0_11-b03"
$ java -fullversion
java full version "1.6.0_11-b03"
$ java -d64 -fullversion
java full version "1.6.0_11-b03"
Recordar que la opción <-d64> es para ejecutar la máquina en 64bits, además la opción <-version> también nos proporcionará los datos necesarios
$ java -d64 -version
java version "1.6.0_11"
Java(TM) SE Runtime Environment (build 1.6.0_11-b03)
Java HotSpot(TM) 64-Bit Server VM (build 11.0-b16, mixed mode)
Una vez verificado que tenemos una versión superior a la 1.5, procederemos a descargar el tar.gz y descomprimirlo en un directorio, por ejemplo en mi caso MQ_HOME será </opt/www/activemq5>

Descarga del Binario de ActiveMQ
Desde la página de Apache podemos descargar la versión que deseemos, pero en mi caso vamos a utilizar la 5.3.2 -que es la última stable-, podeís utilizar el link Página de Descarga ActiveMQ y seleccionar la que prefirais.

UPDATED: Si quieres utilizar la nueva versión 5.4.x, revisa el post de Problemas con ActiveMQ 5.4 en Solaris 10

Creación Usuario, Group y Project
Como siempre vamos a crear un grupo y usuario para poder ejecutar ActiveMQ de forma controlada y utilizaremos un project para gestionar sus recursos.
En nuestro ejemplo, utilizaremos activemq para usuario y group y como project group.activemq, además, como hemos dicho antes, nuestro $MQ_HOME será </opt/www/activemq>
# groupadd activemq
# useradd -g activemq -s /bin/bash -d /export/home/activemq -m -c 'ActiveMQ User' activemq
64 bloques
# projadd -c 'Active MQ JMS Server' -U activemq group.activemq
# cd /opt/www/
# /usr/sfw/bin/wget http://www.eu.apache.org/dist/activemq/apache-activemq/5.3.2/apache-activemq-5.3.2-bin.tar.gz
.. omitimos los mensajes ...
# ls -l apache-activemq-5.3.2-bin.tar.gz
-rw-r--r--   1 root     root     33091364 abr 27 00:25 apache-activemq-5.3.2-bin.tar.gz
# /usr/sfw/bin/gtar zxpf apache-activemq-5.3.2-bin.tar.gz
# mv apache-activemq-5.3.2 activemq5
# chown -R activemq:activemq activemq5
# chmod 750 activemq5

Configuración de Resource Control
Vamos a crear una configuración un poco generalista para nuestro servidor, aunque es recomendable que monitoriceis y la adapteis a vuestras necesidades. 
# projmod -sK 'process.max-file-descriptor=(priv,4096,deny)' group.activemq
# projmod -sK 'task.max-lwps=(priv,100,none),(priv,250,deny)' group.activemq
# projmod -sK 'project.max-tasks=(priv,10,none),(priv,25,deny)' group.activemq
# projmod -sK 'project.cpu-shares=(privileged,175,none)' group.activemq
# projects -l group.activemq
group.activemq
        projid : 110
        comment: "Active MQ JMS Server"
        users  : activemq
        groups : (none)
        attribs: process.max-file-descriptor=(priv,4096,deny)
                 project.cpu-shares=(privileged,175,none)
                 project.max-tasks=(priv,10,none),(priv,25,deny)
                 task.max-lwps=(priv,100,none),(priv,250,deny)
Configuración del servicio mediante Solaris SMF
He creado los archivos manifest y method para Apache ActiveMQ 5.x que podéis descargaros -si no os apetece crearos unos- desde aquí: Manifest Solaris SMF para Apache Active MQ 5.x y Method Solaris SMF para Apache Active MQ 5.x.

Como siempre, he creado dos instancias <default_32bits> y <default_64bits> para que podáis decidir cual ejecutar.

Recordar, que no se pueden ejecutar ambas simultáneamente a menos que asignemos diferentes archivos de configuración.
# cd /var/svc/manifest/application/web
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/activemq/solaris-svc/activemq_5.xml
# svccfg
svc:> validate activemq_5.xml
svc:> import activemq_5.xml
svc:> quit
# cd /lib/svc/method
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/activemq/solaris-svc/activemq5
# svcs activemq_5
STATE          STIME    FMRI
disabled       18:11:57 svc:/application/web/activemq_5:default32bits
disabled       22:16:50 svc:/application/web/activemq_5:default64bits
# svcadm enable activemq_5:default64bits
# svcs activemq_5
STATE          STIME    FMRI
disabled       18:11:57 svc:/application/web/activemq_5:default32bits
online         22:17:21 svc:/application/web/activemq_5:default64bits




Conclusiones
Hemos visto como podemos instalar de forma sencilla el servidor Apache Active MQ, a partir de ahora, podemos configurar nuestro servidor para adaptarlos a nuestras necesidades.



Referencias