Instalar y configurar Memcached en Centos 7

Hablamos del programa de almacenamiento en caché llamado Memcached, en sistemas GNU/Linux. Pero antes de ver su instalación y configuración en nuestras distribuciones favoritas, veamos en que consiste.

¿Qué es la caché?

Sin duda la utilidad de la caché es indiscutible, ya que acelera la entrega de los elementos de nuestra web a los usuarios. Se encarga de garantizar que los diferentes elementos se almacenen, de modo que se minimice la latencia.

¿Qué es memcached?

Se trata de un producto de software libre que sigue la filosofía de desarrollo del código abierto. Su función principal es acelerar las aplicaciones web dinámicas al aliviar la carga en las bases de datos que estas utilicen.

Memcached no deja de ser un almacén de “claves-valor” en memoria para pequeños fragmentos de datos, ya sea cadenas u objectos, que son resultado de llamadas a bases de datos, API o representación de páginas.

Podéis visitar su página web oficial.

Instalación y configuración de memcached en Centos 7

Su instalación es bien sencilla, ya que no vamos a necesitar ningún repositorio adicional, Memcached se encuentra en los repositorios principales de las mayoría de distribuciones.

Para el artículo voy a utilizar Centos 7, la instalación sería así:

  1. yum update
  2. yum install memcached

A continuación, vamos a instalar libmemcached, una biblioteca que ofrece un par de herramientas para administrar nuestro servidor con memcached.

  1. yum install libmemcached

Ahora vamos a pasar a asegurar la instalación, ya que es susceptible de ataques con la configuración por defecto.

Asegurar Memcached

Para asegurarnos que el servicio instalado este escuchando en la interfaz local 127.0.0.1, modificaremos la variable OPTIONS en el fichero de configuración “/etc/sysconfig/memcached”

  1. vi /etc/sysconfig/memcached

Debemos buscar la variable OPTIONS y añadir la variable “-l 127.0.0.1 -U 0”. Este ajuste de configuración protegerá nuestro servidor de ataques de DDOS, esto es, de denegación de servicio.

  1. PORT="11211"
  2. USER="memcached"
  3. MAXCONN="1024"
  4. CACHESIZE="64"
  5. OPTIONS="-l 127.0.0.1 -U 0"

Veamos los detalles de la configuración:

  • PORT: El puerto utilizado por el servicio para funcionar.
  • USER: El “daemon” de inicio para el servicio
  • MAXCONN: El valor utilizado para establecer el máximo de conexiones simultanea en 1024. Si nuestra web reciben mucho tráfico sería adecuado aumentar la cifra.
  • CACHESIZE: Establecemos el tamaño de la memoria de la caché en 2048. Para servidores ocupados, podemos aumentar hasta 4 GB
  • OPTIONS: Configuramos la dirección IP de escucha, de modo que los servidores web, ya sean NGINX o Apache se pueden conectar.

Una vez hecho los cambios arrancamos el servicio y lo añadimos al inicio:

  1. systemctl restart memcached
  2. systemctl enable memcached

Una vez iniciado, podemos confirnar que el servicio está funcionando sobre la interfaz local y escucha solo conexiones. Para ello podemos utilizar la herramienta “netstat”

  1. netstat -plunt

También podemos verificar las estadísticas del servidor utilizando la herramienta “memcached-tool”, como sigue:

  1. memcached-tool 127.0.0.1 stats

Con un resultado similar al siguiente:

  1. [davidochobits@servcentos]$ memcached-tool 127.0.0.1 stats
  2. #127.0.0.1:11211   Field       Value
  3.          accepting_conns           1
  4.                auth_cmds           0
  5.              auth_errors           0
  6.                    bytes           0
  7.               bytes_read          14
  8.            bytes_written        1021
  9.               cas_badval           0
  10.                 cas_hits           0
  11.               cas_misses           0
  12.                cmd_flush           0
  13.                  cmd_get           0
  14.                  cmd_set           0
  15.                cmd_touch           0
  16.              conn_yields           0
  17.    connection_structures           2
  18.         curr_connections           1
  19.               curr_items           0
  20.                decr_hits           0
  21.              decr_misses           0
  22.              delete_hits           0
  23.            delete_misses           0
  24.        evicted_unfetched           0
  25.                evictions           0
  26.        expired_unfetched           0
  27.                 get_hits           0
  28.               get_misses           0
  29.               hash_bytes      524288
  30.        hash_is_expanding           0
  31.         hash_power_level          16
  32.                incr_hits           0
  33.              incr_misses           0
  34.                 libevent 2.0.21-stable
  35.           limit_maxbytes    67108864
  36.      listen_disabled_num           0
  37.                      pid       17221
  38.             pointer_size          64
  39.                reclaimed           0
  40.             reserved_fds          20
  41.            rusage_system    0.026198
  42.              rusage_user    0.022705
  43.                  threads           4
  44.                     time  1554130266
  45.        total_connections           3
  46.              total_items           0
  47.               touch_hits           0
  48.             touch_misses           0
  49.                   uptime         937
  50.                  version      1.4.15

Habilitar memcached en el cortafuegos

Si tenemos el cortafuegos habilitado, debemos añadir el puerto correspondiente a la configuración:

  1. firewall-cmd --permanent  --add-port=11211/tcp
  2. fireall-cmd --reload

Instalar la extensión de PHP para Memcached

Si deseamos instalar la extensión de PHP para Memcached, solo hemos de escribir:

  1. yum install php-pecl-memcache

Instalar la extensión de Perl para Memcached

En el caso de la extensión para Perl, ejecutamos:

  1. yum install perl-Cache-Memcached

Instalar la extensión de Python para Memcached

Lo propio para la extensión de Python:

  1. yum install python-memcached

Siempre que instalemos extensión nueva hemos de reiniciar el servidor web que utilicemos:

  1. systemctl restart httpd
  2. systemctl restart nginx

Conclusiones

Hemos visto como instalar, configurar y asegurar el servicio Memcached en nuestro servidor, en pocos pasos. Se trata de un guía inicial, os invito a investigar y probar este producto.

Y esto es todo, espero que en algún momento os pueda servir la información.

Fuentes consultadas:

Tecmint.com – How to Install Memcached (Caching Server) on CentOS 7