jueves, 12 de noviembre de 2009

Instalación de JMemCached sobre Solaris utilizando SMF

Introducción
En artículos anteriores hemos visto Cómo instalar MemCached 64bits en Solaris 10. Bien, ahora vamos a ver cómo podemos instalar JMemCached, que como podeis imaginaros es la Implementación en Java de MemCached.

En este caso vamos a utilizar SMF para gestionar el sistema de cache y, de esta forma, poder tener un control sobre si correcto funcionamiento utilizando los comandos: svcadm y svcs

Para ello, descargamos el manifest, method y lo cargamos en nuestro repositorio, en mi caso /var/svc/manifest/application/cache.

Hay que tener en cuenta que las configuraciones por defecto del archivo de descripción <jmemcached.xml> son las siguientes:
  • HOME: Indica la ubicación de instalación de JMemCached, en mi caso /opt/www/jmemcached
  • PORT: Puerto de escucha de JMemCached, en mi caso 11212
  • JVMARGS: Parámetros de configuración de la JVM, en mi caso -Xms512m -Xmx512 -d64
  • PROJECT: Projecto del sistema, en mi caso cached.jmemcached
  • MEMORY: Memoria asignada a JMemCached <no confundir con memoria de JVM>, en mi caso 256M
  • BINARY: Binario de ejecución, en mi caso jmemcached-cli-0.8-main.jar
Además, el usuario y grupo de ejecución es <www>, por lo tanto, puedes editar aquellos parámetros que desees para adaptarlos a tu configuración. Vamos a ver la instalación paso a paso ...

Añadimos el usuario, grupo y project
# groupadd www
# useradd -s /bin/false -d /dev/null -g www www
# passwd -l www
# projadd -G www cached.jmemcached
Descargamos los manifest y creamos la  estructura de log del method
# cd /var/svc/manifest/application/
# mkdir cache
# cd cache/
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/jmemcached/jmemcached.xml
# cd /lib/svc/method/
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/jmemcached/jmemcached
# mkdir -p /opt/www/jmemcached
# chown www:www /opt/www/jmemcached/
# mkdir -p /var/log/jmemcached/
# chown www:www /var/log/jmemcached
Descargamos JMemCached en /opt/www/jmemcache <home>
# cd /opt/www/jmemcached
# /usr/sfw/bin/wget http://jmemcache-daemon.googlecode.com/files/jmemcached-cli-0.8-main.jar
Cargar y Activar el FRMI
# cd /var/svc/manifest/application/cache
# svccfg
svc:> validate /var/svc/manifest/application/cache/jmemcached.xml
svc:> import /var/svc/manifest/application/cache/jmemcached.xml
svc:> quit
# svcadm enable jmemcached
# svcs jmemcached
STATE          STIME    FMRI
online         19:57:01 svc:/application/cache/jmemcached:jmemcached_main
Comprobación de Funcionamiento
Para comprobar su funcionamiento podemos hacer tanto un ps, como un telnet al puerto que tengamos definido. Además, si hacemos un kill -9 sobre el pid, veremos como SMF se encarga de levantarlo de nuevo.
# svcs jmemcached
STATE          STIME    FMRI
online         19:57:01 svc:/application/cache/jmemcached:jmemcached_main
# svcs -p jmemcached
STATE          STIME    FMRI
online         19:57:01 svc:/application/cache/jmemcached:jmemcached_main
               19:56:59      315 java

Como podemos ver, nuestro proceso de JMemCached tiene 315 como PID, así que si hacemos un ps, podremos verlo
# ps -ef|grep 315
www 315 1 0 19:56:59 ? 0:01 /usr/jdk/instances/jdk1.5.0/bin/sparcv9/java -Xms512m -Xmx512m -jar /opt/www/jmemcached
Conclusiones
La instalación de una aplicación Java utilizando SMF no supone mayores problemas, a excepción del uso de espacios en blanco en los argumentos de la propiedad jvmargs, para ello hemos tenido que utilizar un pequeño ajuste pero convertir los "\" por " " y "'" por "", a continuación vemos la línea que hay que utilizar en el script de inicio

# Patch to Solve multiples ARGS values onto JVMARGS
JMEMCACHED_JVMARGS=`echo $JMEMCACHED_JVMARGS | sed -e 's/"//g' | sed -e 's/\\\//g'`

Espero que esto os permita crear mas servicios utilizando el framework SMF y, perderle el miedo a esta nueva forma de trabajo.

Referencias

No hay comentarios:

Publicar un comentario