Exercice 2 - Cluster Swarm via Internet
←
→
Transcription du contenu de la page
Si votre navigateur ne rend pas la page correctement, lisez s'il vous plaît le contenu de la page ci-dessous
Exercice 2 - Cluster Swarm via Internet Projet réalisé avec Florian RICHE - Alan AMOYEL et Victor MERCIER 0. Schéma Réseau De plus, nous avons pris le soin de tous ouvrir les ports 2377/tcp - TCP - 7946/tcpudp et 4789/udp sur chacune de nos BOXs. 1. Initialisation du Cluster Swarm Dans le but d'initialiser le Cluster Swarm, Florian (depuis le Manager 01) a effectué la commande suivante : docker swarm init --advertise-addr 82.66.63.230 --listen-addr 192.168.1.61 Cette commande lui a retourné ceci : Swarm initialized: current node (bvz81updecsj6wjz393c09vti) is now a manager.
To add a worker to this swarm, run the following command: docker swarm join \ --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl- 1awxwuwd3z9j1z3puu7rcgdbx \ 82.66.63.230:2377 To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions. A partir de là, Florian nous a (Alan et Victor) donné la commande suivante que nous avons exécuté : Pour Victor docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl- 1awxwuwd3z9j1z3puu7rcgdbx 82.66.63.230:2377 --advertise-addr 176.128.139.144 --listen-addr 192.168.100.108 Pour Alan docker swarm join --token SWMTKN-1-3pu6hszjas19xyp7ghgosyx9k8atbfcr8p2is99znpy26u2lkl- 1awxwuwd3z9j1z3puu7rcgdbx 82.66.63.230:2377 --advertise-addr 90.120.173.206 --listen-addr 192.168.1.100 Nous avons tous les deux reçu le retour suivant : This node joined a swarm as a worker. Sur le Manager de Florian, nous exécutons la commande : docker node ls Et voici le résultat : 2. Ajout de HAProxy devant le EPSI-MGR01 2.1 Création de la VM HAProxy
Florian a alors créé une VM Alpine sur laquelle il a effectué les commandes suivantes : apk update && apk upgrade && apk add haproxy rc-update add haproxy boot 2.2 Configuration de HAProxy Voici la configuration du HAProxy : global log 127.0.0.1 local2 chroot /var/lib/haproxy pidfile /var/run/haproxy.pid maxconn 4000 user haproxy group haproxy daemon stats socket /var/lib/haproxy/stats defaults mode http log global option httplog option dontlognull option http-server-close option redispatch retries 3 timeout http-request 10s timeout queue 1m timeout connect 10s timeout client 1m timeout server 1m timeout http-keep-alive 10s timeout check 10s maxconn 3000 listen stats bind *:9001
stats enable stats uri / stats refresh 10s frontend http-in bind *:9000 option tcplog mode tcp default_backend swarm-http backend swarm-http mode tcp balance roundrobin server espi-mgr01 192.168.1.61:9000 check server epsi-wrk01.amoyel.loc amoyel.fr:9000 check server EPSI-WRK02 riipeckx.io:9000 check De ce fait, nous allons toujours interroger l'adresse IP Publique de Florian dans le but d'accéder à notre service via le HAProxy qui lui va par la suite rediriger les requêtes vers un worker de manière aléatoire. 3. Déploiement d'Etherpad 3.1 Fichier docker-compose.yml Voici notre fichier docker-compose.yml : version: '3.2' networks: backend: # Network interne à la stack services: server: image: etherpad/etherpad:1.8.9 # Image d'Etherpad utilisée networks: - backend # Network utilisé pour communiquer avec le container de Base de Données ports: - 9000:9001/tcp # 9000 -> Port à ouvrir sur les workers - 9001 -> Pour exposé par le
container env_file: - etherpad.env # Fichier contenant des variables d'environnement pour Etherpad (mot de passe) depends_on: - db # Attente du container de Base de Données avant de démarrer le container Etherpad # -------- Docker Swarm Options -------- # deploy: mode: replicated # replicas: 1 placement: constraints: - node.role == worker # ------------------------------------- # db: image: mariadb:10.5.9 # Image de MariaDB utilisée env_file: - db.env # Fichier contenant des variables d'environnement pour MariaDB (mot de passe) networks: - backend # Network utilisé pour communiquer avec le container de Base de Données environment: - MYSQL_RANDOM_ROOT_PASSWORD=1 - MYSQL_DATABASE=etherpad - MYSQL_USER=etherpad # -------- Docker Swarm Options -------- # deploy: mode: replicated replicas: 1 placement: constraints: - node.role == worker # ------------------------------------- # 3.2 Déploiement de la stack sur le Cluster Swarm Afin de déployer la stack, nous utilisons la commande suivante :
docker stack deploy -c docker-compose.yml etherpad Voici le résultat de la commande : Voici la stack qui tourne : On scale alors le service Etherpad : On scale également la Base de Données :
Voici notre stack scalée (10 Etherpad + 10 DB) : Voici le panel HAProxy :
Et enfin, voici la connexion effective à notre application : Revision #14 Created 7 July 2021 05:52:29 by riipeckx | Victor MERCIER Updated 7 July 2021 15:52:52 by riipeckx | Victor MERCIER
Vous pouvez aussi lire