SafeChildren Banner

Havoc Oracle Solaris Experts

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