Redis en 5 minutos con Docker



    Los retos de las  personas que nos dedicamos a las áreas de infraestructura y/o soporte, son brindar una respuesta lo más rápido posible. Ésta puede relacionarse desde defectos en las aplicaciones en ecosistemas productivos, hasta evaluar un producto, su viabilidad y beneficios; apenas contando con un poco, o nada, de información al respecto.

    La contenerización de aplicaciones vino a dinamizar cualquier arquitectura y pruebas, entre otros muchos, y más importantes, beneficios. Hace algunos años, si querías contar con un ambiente de pruebas, sin pasar por la burocracia de creación de servidores virtuales (¡olvidate de los físicos!), tú mismo instalabas libvirt y hacías uso de un virtualizador gratuito o libre, la instalación del sistema operativo; en el mejor de los casos, lo evitabas vía una imagen ya construida, en el peor de los casos, debías instalar el SO desde cero.

    Con Docker (Vagrant, Dinamo, Runc, etc) ésto ha cambiado. Podemos disponer de pequeños, y aislados, entornos (fundamentos de las arquitecturas orientadas a servicios y, especialmente, microservicios). La intención de esta entrada no es hablar sobre algo que ya está sumamente documentado y en boga.

Manos a la obra...



    Recientemente nos vimos en la necesidad de crear un pequeño ambiente para probar replicación en Redis. En la vida habíamos utilizado ésta poderosa BD llave-valor.  Al concebir la idea, nos vino la mente una máquina virtual, cuyo sistema operativo debía ser Centos 6.x y Redis. Calculamos que al menos 4 horas nos llevaría, siendo optimistas, contar con el ambiente funcional.

    Desde hacía unos meses, estaba probando Docker; así que la posibilidad de utilizarlo para montar un ambiente de pruebas; simple claro está, pero por algo se empieza, era ésta.

    Utilicé la vinculación de dos contenedores, en vez de exponer los puertos y conectarme por ésta vía. Como verán, maté dos pájaros de un tiro.

    Descargando la última versión de Redis.


[root@mictlan ~]# docker pull redis
Using default tag: latest
Trying to pull repository docker.io/library/redis ...
latest: Pulling from docker.io/library/redis

10a267c67f42: Already exists
5b690bc4eaa6: Pull complete
4cdd94354d2a: Pull complete
71c1f30d820f: Pull complete
c54584150374: Pull complete
d1f9221193a6: Pull complete
d45bc46b48e4: Pull complete
Digest: sha256:548a75066f3f280eb017a6ccda34c561ccf4f25459ef8e36d6ea582b6af1decf
Status: Downloaded newer image for docker.io/redis:latest

    Ahora iniciamos el contenedor en segundo plano. Lo hago solo por comodidad.

[root@mictlan ~]# docker run --name miredis -d redis
a1169e4fe64c6c195e373bc9726fac675df25e31e334d83db4d81a2abf891333

    Una vez en segundo plano, procedemos a iniciar el segundo contenedor, éste para que funja como cliente. Aquí hacemos la vinculación con el contendor que corre en segundo plano.

[root@mictlan ~]# docker run --rm -it --link miredis:redis redis /bin/bash
root@4bda7bc3f517:/data#
  
    Con eso indicamos una serie de cosas, como que sea interactivo, se elmine al terminar, elegimos un alias para el /etc/hosts y que sea una imagen que contenga Redis (como el anterior).

    Ahora, con la utililería de redis-cli nos conectamos a la BD, hacemos una primera validación con ping, creamos una llave y un valor; por último lo recuperamos.

root@4bda7bc3f517:/data# redis-cli -h redis -p 6379
redis:6379> ping
PONG
redis:6379> ping "Hola"
"Hola"
redis:6379> set mivariable 123
OK
redis:6379> get mivariable
"123"
redis:6379>


    Como lo dice el título, en 5 minutos tenemos un ambiente listo para realizar las pruebas que sean necesarias.

Comentarios

Entradas populares de este blog

Análisis de conexiones TIME_WAIT

Agregar un usuario a un grupo secundario

Pluging de HAProxy para Collectd.