CONCLUSION
Arrivé au terme de ce chapitre, nous avons fait une
analyse et nous avons mis sur pied l'architecture de notre cluster. dans la
suite du travail, nous allons procéder à une phase de mise en
oeuvre du cluster.
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 37
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-325.png)
38 IAI Gabon
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-326.png)
FIGURE 3.4 - Architecture cluster Docker Swarm à
implémenter
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique
38
FIGURE 3.3 - Architecture cluster à
implémenter
Chapitre4
MISE EN OEUVRE DU CLUSTER
39
Introduction
Dans ce chapitre consacré à la mise en oeuvre,
nous allons dans une première phase présenter les
matériels utilisés, et dans la suite nous présenterons les
différentes étapes de la mise en oeuvre du cluster.
4.1 Matériel utilisés pour monter notre Cluster
Pour monter notre cluster, nous avons utilisé les outils
suivantes :
1. Dix (10) Raspberry Pi 3 Modèle B
(voir section 2.2.1.6)
2. Un switch : Pour réaliser notre
cluster, nous devons utiliser un switch 16 ports Gigabit Ethernet
3. Des câbles RJ45
4. Un poste Client : Un poste Client pouvant
établir des connexions SSH pour nous connecter et
configurer les différents noeuds.
5. Une batterie d'alimentation pour faire
fonctionner les Raspberry. Cette batterie peut être par exemple celle
d'une voiture. Nous conseillons une batterie pouvant se charger à l'aide
d'une plaque solaire.
6. Des convertisseurs 12V -
5V
7. Des Carte MicroSD : Des cartes (au moins 10)
MicroSD classe 6 à 10 et d'au moins 8 Go. Ces cartes vont servir comme
disque dur pour les raspberry Pi.
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-327.png)
40 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 40
FIGURE 4.1 - Switch Gigabit Ethernet
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-328.png)
FIGURE 4.2 - Câble RJ45
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-329.png)
FIGURE 4.3 - Batterie d'alimentation
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-330.png)
TABLE 4.1 - Carte MicroSD 8 & 32 Go
8. Une bonne connexion internet : pour les
installations des outils logiciels nécessaires et des mises à
jour.
9. Des boites en LEGO : Les raspberry Pi
sont livrés à nus, pour les assembler nous avons
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-331.png)
41 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 41
FIGURE 4.4 - Convertisseur 12V - 5V
utilisé des boites en LEGO. Une fois un raspberry Pi bien
assemblé à base des lego, on a ceci :
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-332.png)
FIGURE 4.5 - Notre Raspberry Pi 3 Assemblé
Une fois tout agencé, voici à quoi ressemble notre
architecture de cluster physique monté :
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-333.png)
42 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 42
FIGURE 4.6 - Notre Cluster Physique
monté
4.2 Mise en OEuvre du cluster
Après avoir mis à disposition les
différents matériels nécessaires et monté
l'architecture physique du cluster, nous allons étape par étape
faire fonctionner chaque noeud et l'associer au cluster.
4.2.1 Installation du système d'exploitation sur les 10
noeuds du cluster
Nous avons choisi le système d'exploitation
HYPRIOT OS 1 comme système à utiliser
sur chaque noeud du cluster. Ce système existe en plusieurs versions.
Pour notre travail nous avons utilisé la version Version 0.7.0
Berry (hypriot-rpi-20160306-192317.img) publié le 06/03/2016.
car cette version est très stable et possède deja les outils
nécessaires pour gérer les Docker.
Installation : (Voir annexe 1)
4.2.1.1 Configuration adresse IP des noeuds Raspberry
Pi
Après avoir scanné le réseau et
trouvé l'adresse IP obtenu dynamiquement par le noeud, Il faudra se
connecter et fixer une adresse statique et un nom d'hôte pour une
meilleure utilisation du noeud. Pour ce faire, se connecter et éditer
les fichiers suivantes : (Voir annexe 2)
1. Source : http://blog.hypriot.com/
43 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 43
4.2.1.2 Configuration nom d'hôte des noeuds
Raspberry Pi
Pour changer le nom d'hôte de la machine, éditer
les fichiers /boot/device-init.yaml ou
/boot/occidentalis.txt selon la version du système
HYPRIOT OS installé en changeant le nom d'hôte (ligne
hostname=nom_hote) préalablement définir. (Voir annexe 3)
4.2.2 Installation du moteur Docker sur chaque
noeud
Une des raisons pour laquelle nous utilisons le système
HypriotOS est qu'il intègre ce moteur par défaut. Mais un
système comme RASPBIAN par exemple n'intègre pas ce moteur. Pour
l'installer suivre les étapes suivantes : (Voir annexe 4)
4.2.3 Création d'un container Docker, le cas du
container Odoo
Après avoir installé le moteur docker, la suite
consiste à créer un container Docker (Docke-riser une
application). Nous rappelons ceci, Trois éléments essentiels
forment les bases de la philosophie d'un Docker :
* Docker Image : c'est un template
qui va servir directement ou indirectement à produire d'autres Docker
Image ou des Docker containers.
* Docker Containers : c'est
«l'exécutable» obtenu à partir d'une Docker Image. On
peut le démarrer, l'arrêter ou le détruire
* Docker Registry ou Docker
Hub : c'est le repository des Docker Images. On peut y
télécharger des Docker Images créés par d'autres
mais également y stocker les siennes.
Ainsi, la création de "l'exécutable" Docker
Container se fait grâce à un Docker Image. Pour créer un
Docker Image, nous avons deux options :
~ Soit nous créons un fichier Dockerfile
en local dans la machine à partir duquel nous créons le
Docker Image.
~ Soit nous nous servons d'une image déjà existante
soit en local soit sur le site Docker Hub2 pour créer notre
image.
Tous d'abord quelques commandes utiles pour Docker :
~ docker info, docker version permet d'avoir
l'information et la version du moteur docker installé.
~ docker build permet de construire
(créer) un Docker Container.
~ docker image permet de lister les images
existantes en local.
~ docker ps permet de lister les Containers en
cours d'exécution à un moment donné.
~ docker run start stop rm permet de lancer,
démarrer, arrêter et supprimer un Docker Container.
NB : Taper docker help pour
avoir une liste plus exhaustive des commandes docker et taper docker
--help nomCommande pour avoir une aide plus détaillée
avec différents attributs sur la commande "nomCommande".
2. Docker Hub est un site qui contient tous les images officiels
Docker accessible au grand public et open source
44 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 44
4.2.3.1 Création d'un Docker Image à partir
d'un Dockerfile
Pour créer une image à partir d'un Dockerfile,
nous devons d'abord créer un fichier de même nom «
Dockerfile » dans un dossier relatif à l'image que nous
voulons créer. Nous rappelons que ce nom est le même quelque soit
l'image à créer.
Exemple d'image
L'ERP Odoo utilise Postgresql comme Serveur de base
données, ci-dessous le contenu d'un Dockerfile pour la création
de l'image Postgresql compatible avec raspberry. (Voir annexe 5)
Ce qui rend les docker intéressants c'est le fait
qu'une image une fois créée peut être exportée,
portative et fonctionnelle sur toute autre plateforme intégrant un
moteur docker. Une image docker une fois exportée ne pèse que
quelques centaines de Mo maximum ce qui rend son transport facile. On exporte
généralement une image sous format d'archive .tar
sous Linux, elle peut être ensuite zipper et sera plus facile
à transporter car plus léger. Les commandes pour exporter et
importer une image sous forme d'archive sont les suivantes : (Voir annexe 6)
4.2.3.2 Création des Docker Containers
Après avoir créé l'image docker, la
création d'un Container Docker se base sur une image Docker. Soit
à créer un container basé sur l'image « postgresql
» au nom de « postgresdemo », voici la commande (Voir annexe
7)
4.2.4 Mise en oeuvre du Cluster Docker Swarm
Après avoir installé le moteur Docker et
créé des containers Docker, nous pouvont implémenter le
cluster Docker Swarm. Nous rappelons que le Docker Swarm
permet d'avoir une visibilité globale et permet de centraliser
la gestion des Docker à travers le ou les noeuds maitres (master). Le
principe consiste à faire communiquer les deamons (moteur) Docker
préalablement installés sur chaque noeud.
La première étape pour créer un cluster
Docker Swarm est d'installer sur chaque noeud l'image rpi-swarm
servant à implémenter le swarm sur les raspberry pi.
$docker build hypriot /rpi-swarm ou
$docker pull hypriot /rpi-swarm
Par défaut cette image existe sur certaines versions du
système Hypriot OS. Après avoir installé ou
vérifié l'existence de cette image, faire ceci :
45 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 45
-- Ouvrir un port TCP sur chaque noeud pour la communication
avec le gestionnaire de Swarm
-- Créer et gérer des certificats TLS pour
sécuriser votre cluster.
Pour la découverte réseau par les
différents noeuds de façon à communiquer en cluster,
Docker a prévu deux methodes :
· Utilisation des jetons cluster (Swarm Token)
: Pour la découverte réseau, Les noeuds se servent d'un
ID unique pour communiquer. Ce ID (Swarm Token) est généralement
créé sur le noeud master et distribué sur les autres
noeuds. On utilise généralement cette méthode pour les
cluster en laboratoire car pas très efficace et pas très
sécurisée.
· Utilisation d'un noeud Consul: Pour
la découverte réseau, les noeuds se servent d'un noeud consul qui
contient les informations sur chaque noeud du réseau. c'est avec ce
noeud consul que le noeud master communique le plus souvent. cette
méthode nécessite l'installation de l'image rpi-consul
(image consul pour les Raspberry Pi). Il est
généralement utilisé pour les clusters en production car
plus stable et sécurisée.
NB : Nous rappelons que c'est cette méthode que nous
avons utilisé dans notre cluster (voir schéma architecture fig.
3.4 ).
Nous rappelons que d'après notre architecture, notre
noeud Consul a pour adresse 172.16.0.51; le noeud maitre (master) actif
172.16.0.52; le noeud maitre (master replicate) passif 172.16.0.56. Une fois
ces pré-requis établis et les dix (10) noeuds étant en
réseau et se communiquant parfaitement, suivre les étapes
suivantes : (Voir annexe 8)
4.2.5 Mise en OEuvre du Cluster de Répartition de
charges et Haute Disponibilité
Après avoir mis sur pied le cluster Docker Swarm, nous
allons implémenter dessus un cluster de répartition de charge
couplé à un cluster haute disponibilité. Les principaux
noeuds à configurer sont des noeuds maitres. Par la suite, nous allons
juste nous assurer que l'inter-communication est parfaite entre les dix (10)
noeuds.
4.2.5.1 Mise en oeuvre de la répartition de
charge
Pour implémenter la répartition de charge, nous
allons utiliser le logiciel HAProxy. Ha-proxy est ce qu'on appelle un
load-balancer, c'est à dire un service permettant de dispatcher les
requêtes TCP/HTTP vers plusieurs serveurs, appelés les
backends. Mais haproxy peut aussi servir comme premier rempart
contre les attaques sur les sites et applications Web.
Il est principalement utilisé en tant que
load-balancer http vers des backends Apache, NginX et bien d'autres mais peut
aussi être utilisé pour faire du load-balancing vers d'autres
services (mysql,redis,node.js ...). Dans notre cluster, nous allons installer
et configurer haproxy sur les deux serveurs maitres de façon identique.
Pour le faire, nous allons suivre les étapes suivantes : (Voir annexe
9)
46 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 46
4.2.5.2 Mise en oeuvre Haute Disponibilité du
cluster
Pour implémenter la haute disponibilité du
cluster, nous allons utiliser le logiciel Heartbeat. C'est un service qui
permet de gérer la haute disponibilité dans un cluster. Elle
permet de mettre en place le balancement entre les deux serveurs.
Son principe consiste à placer une adresse IP sur une
interface virtuelle du serveur actif et ensuite de démarrer le service
haproxy. Quand le serveur actif tombe, le service heartbeat du serveur passif
le détecte et refait la même procédure sur le serveur
passif qui passe en mode actif. Nous rappelons que la configuration de haproxy
et heartbeat est le même sur les deux serveurs. Dans notre cluster, nous
allons installer et configurer heartbeat sur les deux serveurs maitres de
façon identique. Pour le faire, nous allons suivre les étapes
suivantes : (Voir annexe 10)
À ce stade de notre travail, notre cluster haute
disponibilité est fonctionnel et tous les services (applications) du
cluster seront accessibles à l'adresse 172.16.0.50.
Sur le serveur actif, une capture d'écran sur les
interfaces réseaux
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-334.png)
FIGURE 4.7 - ifconfig partie eth0 :0 qui
indique que le noeud fonction sur l'adresse virtuelle 172.16.0.50
C'est l'exemple de l'ERP odoo qui est accessible à
l'adresse 172.16.0.50 :8070 et qui en arrière plan tourne en load
balancing sur 4 serveurs.
![](Etude-conception-et-implementation-d-un-cluster-low-cost-haut-disponibilite-de-Raspberry-Pi-335.png)
47 IAI Gabon
c~Tchuenché Rodrigue Élève Ingénieur
En Informatique 47
FIGURE 4.8 - Interface Connexion Odoo sur le
cluster à l'adresse 172.16.0.50 :8070
CONCLUSION
Arrivé au terme de ce chapitre, nous avons mis en
oeuvre notre cluster haute disponibilité. Dans la suite du travail, nous
allons procéder à une phase d'évaluation du cluster dans
le but de vérifier si les objectifs ont été atteints.
|