WOW !! MUCH LOVE ! SO WORLD PEACE !
Fond bitcoin pour l'amélioration du site: 1memzGeKS7CB3ECNkzSn2qHwxU6NZoJ8o
  Dogecoin (tips/pourboires): DCLoo9Dd4qECqpMLurdgGnaoqbftj16Nvp


Home | Publier un mémoire | Une page au hasard

 > 

Etude, conception et implémentation d'un cluster low-cost haut disponibilité de Raspberry Pi 3

( Télécharger le fichier original )
par Rodrigue Tchuenche
Institut Africain d'Informatique (IAI) - Ingénieur 2016
  

précédent sommaire suivant

Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy

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

38 IAI Gabon

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.

40 IAI Gabon

c~Tchuenché Rodrigue Élève Ingénieur En Informatique 40

FIGURE 4.1 - Switch Gigabit Ethernet

FIGURE 4.2 - Câble RJ45

FIGURE 4.3 - Batterie d'alimentation

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

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 :

FIGURE 4.5 - Notre Raspberry Pi 3 Assemblé

Une fois tout agencé, voici à quoi ressemble notre architecture de cluster physique monté :

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

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.

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.

précédent sommaire suivant






Bitcoin is a swarm of cyber hornets serving the goddess of wisdom, feeding on the fire of truth, exponentially growing ever smarter, faster, and stronger behind a wall of encrypted energy








"Qui vit sans folie n'est pas si sage qu'il croit."   La Rochefoucault