Apache Mesos Internals - Implantación Alta disponibilidad

En este articulo explicamos como desplegar un entorno de alta disponibilidad con apache mesos utilizando lo comentado en el articulo anterior, donde explicamos a nivel teorico como se realiza esta funcionalidad con apache zookeeper.

Introducción

Para realizar el despligue de alta disponibilidad en Apache Mesos, vamos a utilizar la versión que compilamos en el articulo Apache Mesos - Primeros Pasos y aplicaremos la teoria que analizamos en el articulo anterior. Adicionalmente, vamos a usar 3 nodos maestros junto con sus “zookeeper asociados”.

Aplicando Alta Disponibilidad con 3 nodos

Configuración de servicio mesos master

El guion de configuración del servicio es el siguiente:

# /etc/systemd/system/mesos-master.service
[Unit]
Description=mesos-master
After=network.target

[Service]
EnvironmentFile=/etc/default/mesos-master
Restart=always
RestartSec=5
ExecStart=/opt/mesos/sbin/mesos-master $MESOS_MASTER

[Install]
WantedBy=multi-user.target

Este fichero debe de ir ubicado en /etc/systemd/system/mesos-master.service

Configuración por defecto de mesos master

#/etc/default/mesos-master
# Options to pass to mesos-master  
MESOS_MASTER=--cluster=cluster-leonvillamayor --hostname=master1.leonvillamayor.org --ip=192.168.69.11 --log_dir=/var/log/mesos/master --port=5050 --work_dir=/var/lib/mesos/master --quorum=2 --zk=zk://master1.leonvillamayor.org:2181,master2.leonvillamayor.org:2181,master3.leonvillamayor.org:2181/mesos

Como podemos ver, establecemos el valor de quorum a 2, es decir, si tenemos 3 nodos maestros, 2 de 3 tienen que estar de acuerdo con las votaciones de maestro. Adicionalmente indicamos los nodos que disponen de zookeeper con la opcion –zk para el servicio /mesos.

Para cada nodo, tendremos que tener bien configurada la resolucion de los nombres de cada máquina. Las variables –hostname y –ip deben tambien adaptarse a cada una de las máquinas maestro.

Activación y arranque del servicio

# Activamos el servicio 
$ sudo systemctl enable mesos-master.service
# Arramcamos el servicio
$ sudo systemctl start mesos-master.service

Si todo ha ido correctamente tendremos el servicio mesos master arrancado y funcionando.

Comprobación

Desde cualquier navegador, vamos a la dirección http://master1.leonvillamayor.org:5050 y obtenemos:

Como ponemos ver en la parte superior derecha, tras arrancar los 3 nodos maestros, se ha decidido en este caso que el leader sea master2.leonvillamayor.org.

Pero, ¿que pasaria si el nodo leader dejara de funcionar? Se activaria el proceso de elección de zookeeper y se dotaria de un nuevo leader:

# En la máquina master2, paramos el servicio
$ sudo systemctl stop mesos-master.service

Volvemos a consultar la máquina y vemos que el leader a cambiado a master1 y en Elected vemos el tiempo que lleva siendo leader elegido.

Conclusiones

Como hemos visto, el concepto de quorum es muy importante a la hora de implantar la alta disponibilidad de apache mesos. En este caso, dados 3 nodos maestros, podemos reponernos de la caida de un nodo maestro eligiendo uno de los nodos que quedan activos. Si quisieramos mitigar aun más el riesgo, tendriamos que incluir 5 nodos de zookeeper y disponer de un valor de quorum 3 y asi sucesivamente.

Referencias