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 10Cornucopia 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.
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.
Un étage à la fois, chiffres à l'appui
WordPress et MySQL sur une seule instance
Cache Varnish en avant du HTTP
1 service = 1 instance
Balancement HAproxy, deux Varnish
Heartbeat et IP virtuelle : haute disponibilité
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.
Un étage à la fois, chiffres à l'appui
WordPress et MySQL sur une instance, puis
Varnish en avant du HTTP.
Semaine 6 · 5 %.
1 service = 1 instance : la base de données
déménage derrière le cache.
Semaine 7 · 5 %.
HAproxy, deux Varnish, puis Heartbeat
et l'IP virtuelle.
Semaine 8 · 10 %.
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.
Le processus de travail
Exécution du laboratoire
- Le travail se réalise en laboratoire présentiel. Le laboratoire sert exclusivement aux activités du cours (pas d'autres devoirs ou activités pendant ces séances). Toute autre activité doit se faire à l'extérieur du local.
- Si tu es bloqué(e) ou en difficulté, tu dois demander de l'aide PENDANT la séance du bon laboratoire.
Ligne du temps
- La majorité du laboratoire se réalise dans la séance de 4h, environ 80% du travail.
- Tu as ensuite 7 jours pour finaliser ta remise.
Originalité
- Chaque étudiant remet une solution originale, différente de celles des autres étudiants, qu'il maîtrise.
- Utilisation de l'IA en chatbot web est permise mais l'étudiant doit rédiger ses propres scripts.
Remise et Examen pratique
La remise
- Remise en équipe, incrémentale, d'une solution originale (différente des autres équipes).
- 7 jours au maximum pour finaliser la remise de chaque labo, AVANT le labo suivant.
- L'examen pratique est obligatoire pour recevoir une note.
L'examen pratique
- Les instances sont fonctionnelles AVANT l'examen pratique.
- Chaque ligne devra pouvoir être expliquée sur demande.
- Des modifications seront demandées au moment de l'examen pratique.
Utilisation de l'IA
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
- Ne pas participer au laboratoire ou faire autre chose pendant le labo.
- Absences aux laboratoires et vouloir faire les travaux à la maison.
- Refus ou incapacité de subir l'examen pratique.
Environnement informatique
- Toutes les activités se réalisent avec votre propre ordinateur Linux : Kubuntu 24.04 ou Debian 12 avec KDE.
- Les outils suivants doivent être installés : un navigateur (Chrome, Brave ou Firefox), Konsole et Dolphin.
- Chaque étudiant dispose d'un compte Linode (ou OVH ou Hetzner) en règle pour le déploiement.
- Le noyau Linux 6.17 doit être en markhold. C'est le noyau 6.14 qui est obligatoire pour le projet (jusqu'à indication contraire) et la commande de mise à jour (
sudo apt update && sudo apt upgrade) doit passer sans erreur ni forcer l'installation du nouveau noyau.
- La VM de référence : UbuntuServerAlpha, clonée en DockerAlpha (2 Go de mémoire, 12 Go de disque).
- Nom d'hôte : SERVICE_PRINCIPAL + 3 derniers chiffres de l'adresse (mysql10, http20, varnish30 et 31, haproxy40 et 41, IP virtuelle .49).
- Clonage permis pour sauver du temps : nouvelle adresse MAC, nouveau nom d'hôte, nouvelle adresse IP.
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 :
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.
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.
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).
- Les labos sont exactement les mêmes dans les trois cas : mêmes services, mêmes tests, mêmes livrables, même évaluation. L'infrastructure change, l'architecture reste.
- Votre essaim du module 1 peut resservir : les noeuds que vous savez déjà monter font d'excellentes instances.
Varnish : la cache en avant
- Partie 1 : HTTP (apache2) et MySQL sur une seule instance. WordPress avec au moins 2 articles (image et texte), thème une page, accessible depuis l'hôte.
- Partie 2 : une instance de cache Varnish en avant de votre serveur HTTP. L'URL d'accès de WordPress modifiée pour l'adresse de Varnish.
- Pour chaque partie : test BRUTAL, captures top à 10 s et 60 s, tableau.
Barème : guide (2) · configurations (1) · tableau (1) · captures (1). Minimum 2 commits en classe; terminé pour la semaine 7.
Varnish
Laboratoire B · Semaine 7 · 5 points
La séparation : 1 service = 1 instance
- Partie 3 : chaque service principal sur son instance (mysql10, http20). Votre Varnish reste en avant : la base de données déménage derrière le cache.
- Test BRUTAL, captures top à 10 s et 60 s de toutes les instances actives, tableau (valeur id + temps moyen JMeter).
Barème : guide (2) · configurations (1) · tableau (1) · captures (1). Minimum 2 commits en classe; terminé pour la semaine 8.
1 service = 1 serveur (VM)
Laboratoire C · Semaine 8 · 10 points
HAproxy et Heartbeat
- Partie HAproxy : un second Varnish, puis une instance de balancement HAproxy en avant des deux. URL de WordPress sur HAproxy. Mesures partie 4.
- Partie Heartbeat : un second HAproxy, Heartbeat sur les deux, IP virtuelle pour la grappe. URL de WordPress sur l'IP virtuelle. Mesures partie 5.
- L'épreuve : test BRUTAL, éteindre le HAproxy maître, WordPress doit continuer de répondre. Reproduit en classe pour l'évaluation.
Barème : guide (4) · configurations (2) · tableau (2) · captures (2). Minimum 2 commits en classe; terminé pour la semaine 9.
HAproxy
Heartbeat
Laboratoire D · Semaine 9 · 5 points · En équipe
Installation sur matériel réel
- Avec le meilleur guide de l'équipe : installer l'ensemble des services sur la grappe de Raspberry Pi.
- Rédiger un nouveau guide avec les modifications nécessaires : le passage au matériel laisse toujours des traces.
- Tests BRUTAL, tableau, .PDF unique d'équipe. Démonstration par l'affichage de WordPress dans un navigateur.
- Des commits significatifs de CHAQUE membre dans le nouveau guide, sinon pas de points pour ce participant. Minimum 4 commits d'équipe en classe (au moins 1 par étudiant).
Barème : guide d'équipe (2) · configurations (1) · tableau (1) · captures (1).
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é ?
Architecture de remise
Votre dépôt Git doit respecter scrupuleusement l'arborescence suivante :
- 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.
- Les 4 dossiers cache/, separation/, balancement/ et materiel/ correspondent aux laboratoires A à D.
- Dans chaque dossier : un README.md (guide d'installation) et un sous-dossier par instance avec ses fichiers de configuration.
- Le README.md à la racine sert de présentation globale avec les noms de l'équipe.
Démonstration · En classe à la semaine 10
- Chaque équipe fait la démonstration du laboratoire d'installation sur matériel.
- Chaque étudiant fait la démonstration de tous les autres laboratoires sur son poste de travail, un à la fois.
- 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.
La démonstration, et comment se joue la note
- Chaque étudiant démontre unitairement tous les laboratoires virtuels au projecteur. Si un étudiant ne peut démontrer les laboratoires A-B-C ou expliquer certaines lignes de configuration, il aura 0 pour chaque laboratoire concerné. Il partage les liens des guides, configurations, tableau et captures dans l'espace de discussions le jour même de la démo.
- Chaque équipe démontre l'installation matérielle sur cluster Pi.
- L'épreuve du HAproxy maître éteint sous charge est rejouée devant tout le monde, pour le cluster ET pour l'installation individuelle : c'est le test final.
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.
WordPress et Varnish
Séparation
HAproxy et Heartbeat
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é ?
Récapitulatif des points
| Laboratoire | Guide d'installation | Fichiers de configuration | Tableau rempli | Captures d'écran | Total |
|---|---|---|---|---|---|
| A · WordPress et Varnish | 2 | 1 | 1 | 1 | 5 |
| B · Séparation | 2 | 1 | 1 | 1 | 5 |
| C · HAproxy et Heartbeat | 4 | 2 | 2 | 2 | 10 |
| D · Installation sur matériel | 2 | 1 | 1 | 1 | 5 |
Total : 25 points · 25 % de la session
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.
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 VPSNoms 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.2 | Reprenez les mêmes derniers chiffres dans votre propre sous-réseau, et documentez le tout dans votre plan d'adressage : c'est un livrable. |
| MySQL | 192.168.56.10 · mysql10 | |
| HTTP (apache2) | 192.168.56.20 · http20 | |
| Varnish | 192.168.56.30 · varnish30 | |
| Varnish no 2 | 192.168.56.31 · varnish31 | |
| HAproxy | 192.168.56.40 · haproxy40 | |
| HAproxy no 2 | 192.168.56.41 · haproxy41 | |
| IP virtuelle de la grappe | 192.168.56.49 |