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 HAProxyFlorian 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 *:9001stats 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 lecontainer
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