En esta ocasión vamos a ver cómo instalar y configurar MemCached en Solaris 10, en 32bits. En otro post vimos cómo Instalar MemCached en Solaris 10 en 64bits, debéis tener en cuenta que si lo instalamos en 32bits no podremos poner un tamaño de caché superior a 4Gb, a parte de esto, no tenemos más limitaciones.
La instalación de MemCached necesita de la biblioteca LibEvent, por lo tanto, primero deberemos descargar y compilarla. En nuestro ejemplo vamos a utilizar la siguiente estructura:
$MEMCACHED_HOME=/opt/memcached/32Y crearemos el usuario <memcached> y el project <user.memcached> para gestionar el uso de recursos dentro del sistema. Además, haremos que nuestro servidor de MemCached esté ejecutado -y controlado- mediante SMF, por lo tanto, podremos incluirlo como servicio requerido.
$LIBEVENT_HOME=/opt/memcached/libevent/32
Para aquellos que no tenéis la posibilidad de compilar los paquetes, os he dejado uno listo para instalar -en el path </opt/memcached> en Solaris 10 SPARC de MemCached 1.4.5 32bits y Solaris 10 X86 de MemCached 1.4.5 32bits
Instalación de LibEvent (32Bits)
$ wget http://www.monkey.org/%7Eprovos/libevent-1.4.13-stable.tar.gzComprobamos que todo se ha instalado correctamente y que no tenemos dependencias fallidas
$ gtar zxpf libevent-1.4.13-stable.tar.gz
$ cd libevent-1.4.13-stable
$ ./configure --enable-static --prefix=/opt/memcached/libevent/32
$ make
# make install
$ ldd /opt/memcached/libevent/32/lib/libevent.so
libnsl.so.1 => /lib/libnsl.so.1
librt.so.1 => /lib/librt.so.1
libresolv.so.2 => /lib/libresolv.so.2
libsocket.so.1 => /lib/libsocket.so.1
libc.so.1 => /lib/libc.so.1
libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
libscf.so.1 => /lib/libscf.so.1
libaio.so.1 => /lib/libaio.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1
libm.so.2 => /lib/libm.so.2
/platform/SUNW,Sun-Fire-280R/lib/libc_psr.so.1
/platform/SUNW,Sun-Fire-280R/lib/libmd_psr.so.1
Instalación de MemCached (32bits)
En la instalación de MemCached, vamos a forzar a nuestro linker para que se asocie con la biblioteca libevent que hemos creado, es decir, vamos a utilizar el flag <:-R> y de esta forma, no será necesario exportar la variable de entorno LD_LIBRARY_PATH_32. Para ello, deberemos utilizar la variable de entorno LDFLAGS que nos permitirá incluirlo en el sistema de configuración de MemCache.
Además, existe un bug en Solaris 10 que hace que el sistema incluya la opción <-pthread> que en algunas versiones antiguas de GCC no es válida, así que nos muestra el error:
gcc: unrecognized option `-pthread'Para solucionarlo, simplemente exportaremos el valor a <-pthreads> en $CFLAGS y configuraremos. Si queréis más información aquí esta el link al bug
$ wget http://memcached.googlecode.com/files/memcached-1.4.5.tar.gzComprobamos que se ha instalado correctamente y que no tiene dependencias fallidas
$ gtar zxpf memcached-1.4.5.tar.gz
$ cd memcached-1.4.5
$ export LDFLAGS="-R/opt/memcached/libevent/32/lib -R/usr/sfw/lib"
$ export CFLAGS="-pthreads -O3"
$ ./configure --with-libevent=/opt/memcached/libevent/32 --prefix=/opt/memcached/32
$ make
# make install
$ ldd /opt/memcached/32/bin/memcachedConfiguración MemCached
libumem.so.1 => /lib/libumem.so.1
libnsl.so.1 => /lib/libnsl.so.1
libsocket.so.1 => /lib/libsocket.so.1
libevent-1.4.so.2 => /opt/memcached/libevent/32/lib/libevent-1.4.so.2
libc.so.1 => /lib/libc.so.1
libmp.so.2 => /lib/libmp.so.2
libmd.so.1 => /lib/libmd.so.1
libscf.so.1 => /lib/libscf.so.1
librt.so.1 => /lib/librt.so.1
libresolv.so.2 => /lib/libresolv.so.2
libgcc_s.so.1 => /usr/sfw/lib/libgcc_s.so.1
libdoor.so.1 => /lib/libdoor.so.1
libuutil.so.1 => /lib/libuutil.so.1
libgen.so.1 => /lib/libgen.so.1
libaio.so.1 => /lib/libaio.so.1
libm.so.2 => /lib/libm.so.2
/platform/SUNW,Sun-Fire-280R/lib/libc_psr.so.1
/platform/SUNW,Sun-Fire-280R/lib/libmd_psr.so.1
A continuación vamos a crear el usuario y grupo <memcached> y el project <user.memcached> -recordar que SMF necesita hacer un chdir al home del usuario-
# groupadd memcacheCreamos el Manifest para MemCached -en mi caso he decidido ponerlo en <application/cache> pero puedes ponerlo donde quieras-
# useradd -g memcache -s /bin/bash -d /export/home/memcache -m memcache
# projadd -G memcache -c 'MemCache Project' user.memcache
# cd /var/svc/manifest/application/cache/Y ahora, el Method para MemCached
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/memcached/svc/memcached_1.xml
# svccfg
svc:> validate memcached_1.xml
svc:> import memcached_1.xml
svc:> quit
# cd /lib/svc/methodYa hemos instalado todos los requisitos de Solaris SMF, sin embargo, hemos declarado que guarde el <PID> en <$MEMCACHED_HOME/run>, por lo tanto, debemos crear el directorio
# /usr/sfw/bin/wget http://blog.sfchildren.com/blogger/memcached/svc/memcached_1
# chmod 555 memcached_1
# chown root:bin memcached_1
# mkdir /opt/memcached/32/runAhora ya podemos activar nuestro servicio MemCached utilizando el FRMI <memcached_1>
# chown memcache:memcache /opt/memcached/32/run
# chmod 750 /opt/memcached/32/run
# svcs memcached_1Conclusiones
STATE STIME FMRI
disabled 11:37:41 svc:/application/cache/memcached_1:memcached_default32bits
# svcadm enable memcached_1
# svcs -p memcached_1
STATE STIME FMRI
online 12:04:25 svc:/application/cache/memcached_1:memcached_default32bits
12:04:25 18580 memcached
En esta ocasión hemos visto cómo instalarlo y configurarlo, la verdad es que no requiere de mucho tiempo -ni conocimientos- y, al introducir el control dentro de Solaris SMF, podemos gestionar las dependencias, por ejemplo, si nuestro memcached se cae, el servicio de Tomcat gestionado por SMF se marque como degraded
Referencias