code by Steven Enten

Installer Apache Mesos 0.20.1 sur Ubuntu 14.04.1.LTS

· by Steven Enten · Read in about 4 min · (815 Words)
cluster manager apache mesos

A propos d’Apache Mesos

Mesos est un projet de la fondation Apache présenté comme un noyau de systèmes distribués. Il permet d’exploiter les ressources de plusieurs machines comme un seul système. Il assure l’isolation et la haute disponibilité d’exécutions de programmes. Mesos fournit deux composants logiciels :

  • mesos-slave : composant installé sur un noeud slave pour mettre à disposition ses ressources à un noeud master ;
  • mesos-master : composant installé sur un noeud master pour gérer un système distribué (gérer les ressources des noeuds slaves et des exécutions de programmes initiées par l’utilisateur).

En environnement de production, il est recommandé de configurer plusieurs noeuds mesos-master et d’utiliser Apache Zookeeper pour l’élection du noeud master actif. Ainsi, quand le noeud master actif rencontre un problème, Zookeeper se charge d’élire un nouveau noeud master.

Exemple d’utilisation d’Apache Mesos

Plateforme cible

L’objectif de nos manipulations est de configurer un système distribué avec Mesos. Nous allons configurer Mesos sur deux noeuds Ubuntu 14.04.1 LTS :

  • Noeud master (192.168.1.101) avec Zookeeper et mesos-master pour gérer le système distribué ;
  • Noeud slave (192.168.1.102) avec mesos-slave pour mettre à disposition les ressources du noeud au système distribué (il se connecte à mesos-master en utilisant Zookeeper).

En environnement de production, il est recommandé d’installer Zookeeper sur un noeud différent du noeud mesos-master car s’il rencontre un problème, Zookeeper ne sera plus disponible pour élire un nouveau noeud mesos-master et rediriger les noeuds mesos-slave.

Diagramme de déploiement

          192.168.1.101
+---------------------------------+
|                   +-----------+ |
|                   | zookeeper | |
|                   +--[2181]---+ |        192.168.1.102
|                       ^  ^      |   +---------------------+
| +--------------+      |  |      |   |   +-------------+   |
| | mesos-master |------+  +------|---|---| mesos-slave |   |
| +----[5050]----+                |   |   +-------------+   |
|        ^                        |   +----------|----------+
|        |                        |              |
|        +------------------------|--------------+
+---------------------------------+

Installer Apache Mesos sur plusieurs noeuds Ubuntu

Prérequis

  • Ubuntu 14.04.1 LTS 64-bit est installé sur les noeuds master et slave
  • Le paquet openjdk-7-jdk est installé sur les noeuds
  • La dépôt mesosphere est configurée sur les noeuds master et slave :
$ sudo apt-key adv --keyserver keyserver.ubuntu.com --recv E56151BF
$ echo "deb http://repos.mesosphere.io/ubuntu trusty main" | sudo tee /etc/apt/sources.list.d/mesosphere.list
$ sudo apt-get update -y

Configuration du noeud master

Installation du paquet mesos et du paquet zookeeper (par dépendance) :

$ sudo apt-get install mesos -y

Configuration de l’interface réseau utilisée par mesos-master :

$ echo 192.168.1.101 | sudo tee /etc/mesos-master/ip

Configuration du nom du système distribué :

$ echo MyCluster | sudo tee /etc/mesos-master/cluster

Configuration de l’URL Zookeeper pour identifier le noeud mesos-master :

$ echo zk://192.168.1.101:2181/mesos | sudo tee /etc/mesos/zk

Configuration de l’instance Zookeeper :

$ echo 1 | sudo tee /etc/zookeeper/conf/myid

Redémarrage des services Zookeeper et mesos-master :

$ sudo service zookeeper restart
$ sudo service mesos-master restart

Configuration du noeud slave

Installation du paquet mesos sans le paquet zookeeper :

$ sudo apt-get download mesos
$ dpkg -i mesos_0.20.1-1.0.ubuntu1404_amd64.deb

Configuration de l’interface réseau utilisée par mesos-slave :

$ echo 192.168.1.102 | sudo tee /etc/mesos-slave/ip
$ echo 192.168.1.102 | sudo tee /etc/mesos-slave/hostname

Configuration de l’URL Zookeeper pour identifier le noeud mesos-master :

$ echo zk://192.168.1.101:2181/mesos | sudo tee /etc/mesos/zk

Démarrage du service mesos-slave :

$ sudo service mesos-slave start

Configuration additionnelle

Pour notre test, il est intéressant de configurer le noeud master pour pouvoir intégrer ses ressources au système distribué en démarrant le service mesos-slave. Attention! Cette pratique est déconseillée en environnement de production.

Sur le noeud master :

$ echo 192.168.1.101 | sudo tee /etc/mesos-slave/ip
$ echo 192.168.1.101 | sudo tee /etc/mesos-slave/hostname

La commande sudo service mesos-slave start intégère les ressources du noeud master au système distribué (les ressources du noeud master peuvent alors être utilisées pour réaliser des traitements).

Tester l’installation d’Apache Mesos

Rendez-vous sur l’interface web de mesos-master en consultant l’URL http://192.168.1.101:5050. Le cadre à gauche indique le nombre de noeud slaves actifs (1 si mesos-slave est démarré sur le noeud slave, 2 si mesos-slave est également démarré sur le noeud master ou 0 si mesos-slave est arrêté sur les deux noeuds).

Pour tester rapidement l’exécution d’un programme, exécutez la commande suivante depuis le terminal d’un des noeuds :

$ mesos-execute --master=$(mesos-resolve zk://192.168.1.101:2181/mesos) --name="hello" --command="echo hello world" --resources="cpus:0.1;mem:16"

Note : le programme mesos-resolve permet de trouver le noeud mesos-master actif via Zookeeper.

L’installation peut être testée avec le framework Marathon. Il est disponible sur le dépôt mesosphere ajouté précédemment. Exécutez la commande suivante sur le noeud master pour installer Marathon :

$ sudo apt-get install marathon -y

Une fois installée, il suffit de démarrer le service Marathon…

$ sudo service marathon start

…et de lancer des applications via son interface web en consultant l’URL http://192.168.1.101:8080.

Marathon négocie avec Mesos l’exécution d’applications et assure quelles soient toujours actives : lorsqu’une application se termine, Marathon se charge de la relancer. Marathon fournit une API Rest pour réaliser des opérations par requêtes http.

Références

Comments