Ă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.
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 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. à 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.
WordPress et MySQL sur une seule instance
1 service = 1 instance
Cache Varnish en avant du HTTP
Balancement HAproxy, deux Varnish
Heartbeat et IP virtuelle : haute disponibilité
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.
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é :
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).
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.
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 |
sudo apt update && sudo apt upgrade) doit passer sans erreur ni forcer l'installation du nouveau noyau.Votre dépÎt Git doit respecter scrupuleusement l'arborescence suivante :
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.
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.
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.
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.
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.
| Laboratoire | Guide d'installation | Fichiers de configuration | Tableau rempli | Captures d'écran | Total |
|---|---|---|---|---|---|
| 1 · WordPress et MySQL | 2 | 1 | 1 | 1 | 5 |
| 2 · Varnish | 2 | 1 | 1 | 1 | 5 |
| 3 · HAproxy et Heartbeat | 4 | 2 | 2 | 2 | 10 |
| 4 · Installation sur matériel | 2 | 1 | 1 | 1 | 5 |
Total : 25 points · 25 % de la session
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 · 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é ?