Orquestar con Docker Swarm

Posted on Actualizado enn

Swarm es un orquestador de contenedores nativo de Docker, con docker swarm puedes desplegar servicios  distribuyendo carga de trabajo, tráfico de red, persistencia de datos entre otras cosas interesantes a través de nodos.
docker

Instalar swarm:

Docker swarm ya viene por default en la  versión 1.12.0 o posterior, pero si no tienes swarm instalado:

apt-get install docker.io

o bien: https://docs.docker.com/engine/installation/

Lo que necesito:

./Dockerfile
./apache-config.conf
./www/index.php
/docker-compose.yml

 

Dockerfile:

Dockerfile

apache-config.conf:

apache-config.php

www/index.php:

www/index.php

docker-compose:

docker-compose.yml

Iniciar Docker swarm:

docker swarm init --advertise-addr IP
alt text

He iniciado docker swarm y he usado tlacuache1 que es el nombre del nodo líder.

Voy a usar otro nodo que lo nombraré como tlacuachebaby para demostrar como dos nodos pueden trabajar juntos y ayudarse entre si, el primer nodo se llama tlacuach1 que es el líder y el otro nodo se llama tlacuachebaby que va a funcionar como trabajador. No especifiqué  un puerto déspues de la dirección IP así que Docker Swarm usará el puerto 2377 por default.

Agregar un nodo como trabajador a swarm

Dentro de tlacuachebaby:

docker swarm join --token SWMTKN-1-3oluxaye8s8denuv8ugo602lb99as6qos5rifwtp39kkn69fwg-7qsmgtk1vjriuqghvclj9mpy5 IP:2377

 

Dentro del manager (tlacuache1):

docker node ls
alt text

Desplegando servicio:

docker stack deploy -c docker-compose.yml app
app –> nombre del servicio.

alt text

 

Esto es mágico, acabamos de desplegar 20 contenedores y estamos balanceando la carga entre dos nodos, si quieres escalar el servicio puedes editar el archivo docker-compose.yml.

Viendo la magia:

alt text

Intenta detener un contenedor y vas a poder ver la magia. 
Docker Swarm crea otro contenedor para compensar el que se ha detenido todo esto gracias a restart_policy: condition: on-failure que tenemos en el archivo docker-compose.yml

 Este articulo ha sido inspirado gracias a Tlacuaches Project.

Desplegando Etherpad y MySQL usando Docker.

Posted on Actualizado enn

He estado usando Docker en su versión 17.06.1-ce, a continuación describiré como desplegar etherpad usando como motor de base de datos MySQL.
docker
Aquí el procedimiento:

  • Crear un nombre de red donde se va a centralizar el despliegue, le llamaré tlacuaches_network:

$ docker network create tlacuaches_network

  • A continuación se despliega el primer contenedor usando MySQL(tlacuachesdb es el nombre del contenedor).

$ docker run -d --network tlacuaches_network -e MYSQL_ROOT_PASSWORD=password --name tlacuachesdb mysql

  • Desplegaré el segundo contenedor donde se albergará etherpad y lo llamaré eptlacuaches

$ docker run -d --network tlacuaches_network -e ETHERPAD_DB_HOST=tlacuachesdb -e ETHERPAD_DB_PASSWORD=password -p 9001:9001 --name eptlacuaches tuxisma/eptlacuaches

Explicación de algunos parámetros que soporta la imagen eptlacuaches:

ETHERPAD_DB_HOST: Nombre del host de la base de datos de mysql, en este caso tlacuachesdb
ETHERPAD_DB_PASSWORD: Contraseña que se le asigna a MySQL.

La imagen esta hosteada en https://hub.docker.com/r/tuxisma/eptlacuaches/

Aquí mas información: https://github.com/tuxisma/etherpad-lite

containersrunning

En la captura de arriba podemos ver los dos contenedores creado y corriendo con éxito.

A continuación podemos ver etherpad corriendo sobre un contenedor:

etherpadrunning
etherpad

Hurrah! It’s done!!

Tlacuaches Project

Posted on Actualizado enn

Hace un mes aproximadamente me uní a Tlacuaches project ,  el fundador de este proyecto es yazpik el cual admiro mucho por su convicción y capacidad de liderazgo, uno de los hombres orquestadores de Computación en la nube en RackSpace.

Tlacuaches Project  es un proyecto con muchísima ambición y exageradamente llena de retos, he estado aprendiendo mucho acerca de Cloud Computing, tanto que ahora mismo creo que no se nada 😉  por el tema muy amplio y demasiado exigente pero interesante, siempre hay retos para los integrantes de este proyecto, nuestras reuniones son en inglés esto agrega un toque significante por que mejoramos nuestro inglés y damos lo mejor para entendernos, que por supuesto el inglés es el idioma estándar en la comunidad techi, bastante recomendado el saber inglés, esto nos abre muchas oportunidades, tenemos más alcances como latinos en el sentido de participar en proyectos maravillosos.

tlacuachesproject

Voy a estar escribiendo algunas cosas acerca de computación en la nube en la medida que me sea posible y contarles de lo que estamos aprendiendo, he iniciado una sección aquí en mi blog para ir publicando algunas cosas que he estado haciendo.