En el post anterior explicamos qué es Mesos y como funciona internamente, así que, como no puede ser de otra manera, toca instalarlo.
La mejor manera que encontré de instalar Apache-Mesos es utilizando los paquetes de mesosphere.
Nuestro excenario inicial es:
- 3 servidores Mesos master y ZooKeeper cluster
- 3 servidores mesos slave
- Centos 7
- Y lo montaremos en EC2
Pues al lío.
Empezarnos por los nodos master, estos pasos los debemos hacer en todos los nodos master que tengamos
Instalación de paquetes
Añadimos el repositorio
sudo rpm -Uvh http://repos.mesosphere.io/el/7/noarch/RPMS/mesosphere-el-repo-7-1.noarch.rpm
Actualizamos
yum update
Instalamos Mesos
sudo yum -y install mesos
Instalamos zookeeper
sudo yum -y install mesosphere-zookeeper
Configuración de ZooKepeer
Antes de nada deberemos configurar ZooKepeer, deberemos añadir un numero diferente en cada servidor master, entre el 1 y el 255, en nuestro caso lo añadiremos en
/var/lib/zookeeper/myid
Ahora en todos los nodos de ZooKepeer deberemos decirle donde estan los otros nodos del cluster, esto se hace de la siguiente manera.
vi /etc/zookeeper/conf/zoo.cfg
Añadimos con las ips correctas
server.1=1.1.1.1:2888:3888 server.2=2.2.2.2:2888:3888 server.3=3.3.3.3:2888:3888
Y arrancamos ZooKepeer
sudo systemctl start zookeeper
Configuración de Mesos
Estos pasos también los haremos en todos los miembros master del cluster
Configuramos Mesos para que trabaje con ZooKeeper
vi /etc/mesos/zk
Añadimos las ips de los servidores de ZooKepeer
zk://1.1.1.1:2181,2.2.2.2:2181,3.3.3.3:2181/mesos
Defeninimos el quorum que queremos
vim /etc/mesos-master/quorum 2
Por ultimo debilitamos el servicio de mesos-slave que se nos instalo con el paquete y arrancamos mesos-master.
systemctl stop mesos-slave.service systemctl disable mesos-slave.service sudo service mesos-master restart
Comprobamos que el servicio este levantado correctamente.
<pre> systemctl status mesos-master -l mesos-master.service - Mesos Master Loaded: loaded (/usr/lib/systemd/system/mesos-master.service; enabled) Active: active (running) since Sun 2015-02-15 11:22:50 UTC; 7min ago Main PID: 1156 (mesos-master) CGroup: /system.slice/mesos-master.service ├─1156 /usr/sbin/mesos-master --zk=zk://172.30.0.111:2181,172.30.0.145:2181,172.30.0.146:2181/mesos --port=5050 --log_dir=/var/log/mesos --quorum=1 --registry=in_memory --work_dir=/var/lib/mesos ├─1168 logger -p user.info -t mesos-master[1156] └─1169 logger -p user.err -t mesos-master[1156] Feb 15 11:26:03 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:03.540731 1171 master.cpp:1263] The newly elected leader is [email protected]:5050 with id 20150205-134012-1862278828-5050-813 Feb 15 11:26:08 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:08.747304 1175 http.cpp:478] HTTP request for '/master/state.json' Feb 15 11:26:12 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:12.015610 1176 detector.cpp:138] Detected a new leader: (id='51') Feb 15 11:26:12 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:12.015688 1176 group.cpp:659] Trying to get '/mesos/info_0000000051' in ZooKeeper Feb 15 11:26:12 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:12.016731 1176 detector.cpp:433] A new leading master ([email protected]:5050) is detected Feb 15 11:26:12 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:12.016767 1176 master.cpp:1263] The newly elected leader is [email protected]:5050 with id 20150215-111558-2432704172-5050-808 Feb 15 11:26:19 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:19.730078 1171 http.cpp:478] HTTP request for '/master/state.json' Feb 15 11:26:27 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:26:27.725008 1171 http.cpp:344] HTTP request for '/master/redirect' Feb 15 11:27:12 ip-172-30-0-111.us-west-2.compute.internal mesos-master[1169]: I0215 11:27:12.129428 1170 http.cpp:344] HTTP request for '/master/redirect' Feb 15 11:30:02 ip-172-30-0-111.us-west-2.compute.internal systemd[1]: Started Mesos Master.
La salida de systemctl me parece de lo mas interesante, podemos ver información muy útil, como por ejemplo los nodos de zookeeper o quien es el líder del cluster «Detected a new leader».
A más a más, Apache-Mesos dispone de una interfaz web, a la cual podemos acceder por el puerto 5050 y veremos cosas como esta.
Podemos ver información, casi en tiempo real de la situación del cluster, vemos los recursos utilizados y disponibles, las tareas activas etc etc, si quisiéramos podemos incluso ver el log del sistema (también esta en /var/log/mesos)
En la pestaña Slaves también podemos ver (obvio) el estado de los slaves, que recordemos que son los responsables de ejecutar las tareas.
Y por ultimo los Frameworks que tenemos registrados, en nuestro caso tenemos Marathon, un framework muy interesante que explicaré en las siguientes entradas.
Un comentario en «¿Cómo instalar Apache-Mesos?»