Exercice 2 - Cluster Swarm via Internet

La page est créée Dominique Godard
 
CONTINUER À LIRE
Exercice 2 - Cluster Swarm via Internet
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.
Exercice 2 - Cluster Swarm via Internet
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