← évolutif.projet.autos Énoncé officiel (diaporama)

Laboratoires
Application distribuée

Énoncé officiel : quatre laboratoires et une démonstration pour faire passer le site de la petite entreprise du simple serveur à la grappe qui ne tombe jamais.

25 % de la session Équipe de 4 Module 2 Dix mille visiteurs Laboratoires semaines 6 à 9 Démonstration semaine 10 420-5A4-MT
Le scénario

La petite entreprise devient grande

Le WordPress de la petite entreprise a survécu au module 1 : conteneurisé, composé, essaimé, sauvegardé. Mais le bouche-à-oreille n'arrête plus : dix mille visiteurs pointent à l'horizon, et une seule machine, même grosse, ne suffira plus. Il est temps de grandir en largeur : séparer les services, mettre en cache, balancer la charge, doubler les points de faille, et prouver chaque étage avec un vrai test de charge. À la fin, l'infrastructure tournera sur du matériel qu'on peut toucher.

Ces laboratoires reprennent le trajet historique des grandes infrastructures web : chaque partie ajoute un étage, et chaque étage se mesure.

Votre mission

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

1

WordPress et MySQL sur une seule instance

2

1 service = 1 instance

3

Cache Varnish en avant du HTTP

4

Balancement HAproxy, deux Varnish

5

Heartbeat et IP virtuelle : haute disponibilité

6

Installation sur matériel réel

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

Nouveau cette année

Vos instances, votre choix d'infrastructure

Chaque serveur de ces laboratoires est une instance. Comme au laboratoire de l'essaim du module 1, vous choisissez le substrat qui la fournit, au lieu que VirtualBox soit imposé :

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).

Option VPS : des instances qui dorment coûtent des sous. « Conserver ses instances » signifie alors : être capable de les recréer et de les restaurer en quelques minutes par script et sauvegardes (vos réflexes du module 1). À la démonstration, vous devez pouvoir relever l'ensemble complet rapidement, devant témoin.

La convention

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
Les règles du jeu

Ce qui est exigé, sans exception

Laboratoire 1 · Semaine 6

WordPress et MySQL : une instance, puis deux

5 points GitHub : /votre-nom/laboratoire1/

Partie 1 : tout sur une seule instance. Mettez en place, en fonction du matériel de cours, une instance unique qui héberge les deux services principaux :

Partie 2 : 1 service = 1 instance. Reconstruisez l'ensemble avec chaque service principal sur une instance distincte (mysql10, http20), selon la convention d'adressage.

Mesures (pour chaque partie) : test de charge BRUTAL avec JMeter :

Barème : guide d'installation (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

Minimum 2 commits pertinents en classe durant la semaine 6; le reste avant le cours de la semaine 7. Ce laboratoire doit être entièrement terminé pour le début de la semaine 7.

Laboratoire 2 · Semaine 7

Varnish : la cache en avant

5 points GitHub : /votre-nom/laboratoire2/

Ajoutez à votre ensemble d'instances existant, avec les mêmes caractéristiques :

Mesures : test de charge BRUTAL avec JMeter, captures top à 10 et 60 secondes (performances_partie_3_10secondes.png, performances_partie_3_60secondes.png), tableau rempli (id par instance, temps moyen JMeter).

Barème : guide d'installation (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

Minimum 2 commits pertinents en classe durant la semaine 7; le reste avant le cours de la semaine 8. Ce laboratoire doit être entièrement terminé pour le début de la semaine 8.

Laboratoire 3 · Semaine 8

HAproxy et Heartbeat : balancer, puis ne jamais tomber

10 points GitHub : /votre-nom/laboratoire3/

Partie HAproxy. Ajoutez à votre ensemble existant :

Partie Heartbeat. Puis :

Mesures : pour chaque partie, test de charge BRUTAL, captures top à 10 et 60 secondes (parties 4 et 5), tableau rempli.

Barème : guide d'installation (4), fichiers de configuration (2), tableau rempli (2), captures d'écran (2).

Minimum 2 commits pertinents en classe durant la semaine 8; le reste avant le cours de la semaine 9. Ce laboratoire doit être entièrement terminé pour le début de la semaine 9. Note selon le substrat : l'IP virtuelle se configure différemment en VirtualBox (réseau hôte), en DinD (réseau Docker) et en VPS (IP partagée du fournisseur); le coup de main par substrat est donné en classe.

Laboratoire 4 · Semaine 9 · En équipe

Installation sur matériel réel

5 points GitHub : /laboratoire4/

Barème : guide d'installation de l'équipe (2), fichiers de configuration (1), tableau rempli (1), captures d'écran (1).

La démonstration par l'affichage de votre WordPress dans un navigateur est nécessaire pour obtenir des points à cette étape. Des commits dans le nouveau guide par chaque membre sont nécessaires : si les commits d'un participant ne sont pas significatifs, il n'obtient pas de points. Minimum 4 commits pertinents en classe durant la semaine 9 (au moins 1 par étudiant); le reste avant le cours de la semaine 10.

Semaine 10

La démonstration

En classe, à la semaine 10 :

Rappel : sans démonstration conforme, le 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 grille

Récapitulatif des points

Laboratoire Guide d'installation Fichiers de configuration Tableau rempli Captures d'écran Total
1 · WordPress et MySQL21115
2 · Varnish21115
3 · HAproxy et Heartbeat422210
4 · Installation sur matériel21115

Total : 25 points · 25 % de la session

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 GitHub.

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 · 1 service = 1 instanceà remplirà remplirà remplirà remplir
3 · Varnishà 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é ?

Le consultant

L'IA dans ces laboratoires