version une page
Énoncé officiel · Module 2 · 25 %

Laboratoires
Application
distribuée

Quatre laboratoires et une démonstration pour faire passer le site de Cornucopia du simple serveur à la grappe qui ne tombe jamais.

420-5A4-MT · Équipe de 4 · Dix mille visiteurs · Démonstration semaine 10
Le scénario

Cornucopia passe à l'échelle régionale

Le site de Cornucopia a bien résisté au Module 1 : conteneurisé, composé, essaimé, sauvegardé. Mais l'expansion régionale bat son plein : dix mille visiteurs et des milliers de paniers personnalisés pointent à l'horizon, et une seule machine ne suffit plus.

Topologie de départ : un client 192.168.56.2 accède à une seule machine virtuelle WORDPRESS-MYSQL qui héberge Apache, WordPress et MySQL

Flora et Hazel doivent se résoudre à grandir en largeur : séparer le web et la base de données, mettre en cache Varnish, balancer avec HAProxy, doubler les points de faille avec des IP virtuelles, et prouver chaque étage avec un vrai test de charge.

Votre mission

Un étage à la fois, chiffres à l'appui

1

WordPress et MySQL sur une seule instance

2

Cache Varnish en avant du HTTP

3

1 service = 1 instance

4

Balancement HAproxy, deux Varnish

5

Heartbeat et IP virtuelle : haute disponibilité

6

Installation sur matériel réel

La boutique de Cornucopia respire sur son unique instance quand le guide des semis gratuit de Flora devient viral : 500 000 visiteurs par jour, chaque page recalculée pour rien - un cache s'impose. Puis la Guilde des Jardiniers réclame ses pages personnalisées, que le cache ne sait pas servir : un million de requêtes frappent la base de données - on sépare les services pour mesurer et soulager. La vente flash rareté du lundi 7 h ne pardonne aucune panne : un balanceur et deux caches encaissent, une IP virtuelle survit à la mort d'un serveur en pleine vente. Enfin la facture cloud tombe, astronomique : tout rapatrier sur la grappe de Raspberry Pi - deux millions de connexions, jour et nuit, sur du matériel qu'on peut toucher.

Votre mission

Un étage à la fois, chiffres à l'appui

A · Mettre en cache

WordPress et MySQL sur une instance, puis Varnish en avant du HTTP.
Semaine 6 · 5 %.

B · Séparer

1 service = 1 instance : la base de données déménage derrière le cache.
Semaine 7 · 5 %.

C · Balancer et redonder

HAproxy, deux Varnish, puis Heartbeat et l'IP virtuelle.
Semaine 8 · 10 %.

D · Le matériel réel

Tout rejouer sur la grappe de Raspberry Pi, en équipe.
Semaine 9 · 5 %.

À chaque étage, un test de charge BRUTAL avec JMeter documente ce que le montage encaisse : les chiffres racontent la croissance.

Note : L'énoncé de tout le projet est composé des énoncés de chacun de ces 4 laboratoires.
En cas de conflit entre la version « une page » et la version « diapo », la version des diapositives prévaut.

Les règles du jeu

Le processus de travail

Exécution du laboratoire

Ligne du temps

Originalité

Les règles du jeu

Remise et Examen pratique

versionnement dockerfile ligne par ligne dans l'ordre de developpement
L'ordre n'est pas l'ordre des lignes (ex: lignes de test qui disparaissent)

La remise

L'examen pratique

⚠️ Note de 0 % si on ne te voit pas travailler sur chaque labo et bien l'expliquer !
Travailler avec l'IA

Utilisation de l'IA

⚠️ Note de 0 % si on ne te voit pas travailler sur chaque labo et bien l'expliquer !

Bonne utilisation

  • Demander des explications sur les concepts du cours.
  • Demander des exemples de scripts similaires.
  • Demander des explications d'exemples typiques.
  • Copier-coller à l'IA des messages d'erreur pour aider à résoudre des problèmes.

Mauvaise utilisation

  • Copier-coller de grandes sections de script dans son travail et tenter de l'utiliser tel quel.

    La bonne méthode : vous pouvez copier une seule ligne de configuration à la fois fournie par une IA, la tester, et faire un commit de chaque ligne.

Signes que tu utilises mal l'IA

Le matériel

Environnement informatique


Nouveau cette année

Vos instances, votre choix d'infrastructure

Chaque serveur est une instance : VPS Linode, conteneurs DinD, ou VM VirtualBox. Comme au laboratoire de l'essaim du module 1, vous choisissez l'environnement parmi les choix suivants :

Machines virtuelles VirtualBox

La voie de référence : chaque instance est un clone de la machine de base UbuntuServerAlpha (Ubuntu Server, 1 Go de mémoire vive, 12 Go de disque). Hors ligne, gratuit, et le plan d'adressage historique s'applique tel quel.

Conteneurs DinD

Chaque instance est un conteneur sur votre machine : léger, rapide, gratuit et hors ligne. Vos noeuds vivent dans un réseau Docker que vous adressez vous-mêmes. Recommandé si votre poste manque de mémoire vive.

VPS infonuagiques

Chaque instance est un vrai serveur loué à l'heure (Linode), dans la même région, pare-feu et clés SSH obligatoires. Le plus authentique : vraies machines, vrai Internet, vraie facture (quelques cents l'heure).

Diaporama Laboratoire A
Guide Varnish Guide Caches Web
Laboratoire A · Semaine 6 · 5 points

Varnish : la cache en avant

Barème : guide (2) · configurations (1) · tableau (1) · captures (1). Minimum 2 commits en classe; terminé pour la semaine 7.

Laboratoire A · Semaine 6 · 5 points

Varnish

Topologie : un client 192.168.56.30 accède au serveur VARNISH qui met en cache le serveur HTTP (Apache et WordPress), lui-même relié au serveur MYSQL
Diaporama Laboratoire B Laboratoire B · Semaine 7 · 5 points

La séparation : 1 service = 1 instance

Barème : guide (2) · configurations (1) · tableau (1) · captures (1). Minimum 2 commits en classe; terminé pour la semaine 8.

Laboratoire B · Semaine 7 · 5 points

1 service = 1 serveur (VM)

Topologie : un client 192.168.56.10 accède à la machine virtuelle HTTP (Apache et WordPress) qui communique avec la machine virtuelle MYSQL 192.168.56.20
Diaporama Laboratoire C Laboratoire C · Semaine 8 · 10 points

HAproxy et Heartbeat

Barème : guide (4) · configurations (2) · tableau (2) · captures (2). Minimum 2 commits en classe; terminé pour la semaine 9.

Laboratoire C · Semaine 8 · 10 points

HAproxy

Topologie : un client 192.168.56.40 accède au serveur HAPROXY qui balance la charge entre VARNISH-1 et VARNISH-2, tous deux en avant du serveur HTTP relié au serveur MYSQL
Laboratoire C · Semaine 8 · 10 points

Heartbeat

Topologie : un client 192.168.56.49 accède à l'IP virtuelle de la grappe HAPROXY-1 et HAPROXY-2 en haute disponibilité, qui balance la charge entre VARNISH-1 et VARNISH-2 en avant du serveur HTTP relié au serveur MYSQL
Diaporama Laboratoire D Laboratoire D · Semaine 9 · 5 points · En équipe

Installation sur matériel réel

Barème : guide d'équipe (2) · configurations (1) · tableau (1) · captures (1).

Le livrable chiffré

Le tableau des performances à remplir

Pour chaque partie, notez la valeur id (processeur inactif) donnée par top pour chaque instance active, et le temps moyen de réponse indiqué par JMeter. Une copie de ce tableau, remplie, par étudiant, en .PDF dans Git.

Partie Instances actives id par instance (10 s) id par instance (60 s) Temps moyen JMeter
1 · Tout-en-unà remplirà remplirà remplirà remplir
2 · Varnishà remplirà remplirà remplirà remplir
3 · 1 service = 1 instanceà remplirà remplirà remplirà remplir
4 · HAproxyà remplirà remplirà remplirà remplir
5 · Heartbeatà remplirà remplirà remplirà remplir
6 · Matérielà remplirà remplirà remplirà remplir

La question qui vaut de l'or, à discuter dans votre README : d'un étage à l'autre, qu'est-ce qui s'est amélioré, et qu'est-ce que ça a coûté ?

Structure attendue

Architecture de remise

Votre dépôt Git doit respecter scrupuleusement l'arborescence suivante :

📁 votre-depot-git/
├── 📄 README.md
├── 📁 cache/
│ ├── 📄 README.md (guide)
│ ├── 📁 wordpressmysql2/
│ └── 📁 varnish30/
├── 📁 separation/
│ ├── 📄 README.md (guide)
│ ├── 📁 http20/
│ └── 📁 mysql10/
├── 📁 balancement/
│ ├── 📄 README.md (guide)
│ ├── 📁 varnish31/
│ ├── 📁 haproxy40/
│ └── 📁 haproxy41/
└── 📁 materiel/
├── 📄 README.md (guide)
└── 📁 (une par machine de la grappe)
À conserver et à remettre
  • Les machines virtuelles que vous créez pour chaque partie doivent être conservées et fonctionnelles pour la démonstration en classe. Pour chaque étudiant.
  • Les captures d'écran doivent être conservées dans Git. Pour chaque étudiant.
  • Vous devez remettre une version .PDF de ce document, avec les tableaux remplis, par étudiant et dans Git.
  • Il est obligatoire de se faire son propre guide d'installation (en markdown .md) par laboratoire.
La démonstration

Démonstration · En classe à la semaine 10

Dans Git
  • présente sa version de son guide d'installation
  • présente les fichiers de configurations utilisés
  • présente le tableau rempli
  • présente les captures d'écran

Rappel : sans démonstration conforme, chaque laboratoire n'est pas évalué. L'épreuve du HAproxy maître éteint sous charge sera rejouée devant tout le monde : c'est le moment de gloire de votre grappe.

Semaine 10

La démonstration, et comment se joue la note

Option VPS : « conserver ses instances » = savoir les recréer et les restaurer en minutes, par script et sauvegardes. À la démonstration, vous relevez l'ensemble devant témoin.

A · 5 points

WordPress et Varnish

B · 5 points

Séparation

C · 10 points

HAproxy et Heartbeat

D · 5 points

Matériel réel : Cluster Pi

La question qui vaut de l'or, au README :
d'un étage à l'autre, qu'est-ce qui s'est amélioré, et qu'est-ce que ça a coûté ?

La grille

Récapitulatif des points

Laboratoire Guide d'installation Fichiers de configuration Tableau rempli Captures d'écran Total
A · WordPress et Varnish21115
B · Séparation21115
C · HAproxy et Heartbeat422210
D · Installation sur matériel21115

Total : 25 points · 25 % de la session

Laboratoires Application distribuée

Récap

  • Réalisé en équipe de 4 (inscrire votre nom et votre identifiant Git dans le README.md du dépôt).
  • Chaque laboratoire doit être réalisé en partie en classe, et la démonstration finale aura lieu à la semaine 4.
  • Assignment Git : [LIEN]
  • La démonstration et les fichiers dans Git sont nécessaires à la correction.
Nuages et engrenages, visuel de la page titre de l'énoncé original
Pour référence

Annexe

Noms d'hôtes et plan d'adressage : la convention complète des instances, à consulter tout au long des laboratoires.

Convention d'adressage · Version VPS
Annexe · Pour les machines virtuelles VirtualBox

Noms d'hôtes et plan d'adressage

Chaque instance porte un nom d'hôte de la forme SERVICE_PRINCIPAL + 3_DERNIERS_CHIFFRES_DE_L_IP (exemples : http20, mysql10, varnish30).

Rôle de l'instance VirtualBox (référence) DinD ou VPS
Tout-en-un (partie 1)192.168.56.2Reprenez les mêmes derniers chiffres dans votre propre sous-réseau, et documentez le tout dans votre plan d'adressage : c'est un livrable.
MySQL192.168.56.10 · mysql10
HTTP (apache2)192.168.56.20 · http20
Varnish192.168.56.30 · varnish30
Varnish no 2192.168.56.31 · varnish31
HAproxy192.168.56.40 · haproxy40
HAproxy no 2192.168.56.41 · haproxy41
IP virtuelle de la grappe192.168.56.49