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.