CoursB2-25 - Haute disponibilité et répartition de charge
Cours · Fiche de cours
B2-25 - Haute disponibilité et répartition de charge
Sommaire
B2-25 Haute disponibilité et répartition de charge
🎓 SIO2 · semestre 3⏱️ 5 h (cours + TP)🎯 Bloc 2 – SISRMesurer la disponibilité, chasser les points uniques de défaillance, choisir un RAID, faire tourner un cluster Proxmox, puis garder un service joignable avec une adresse virtuelle (keepalived) et répartir la charge (HAProxy).
🎯 Objectifs
Exprimer et calculer une disponibilité (« les 9 », MTBF, MTTR, éléments en série et en parallèle).
Repérer les points uniques de défaillance d'une infrastructure et proposer une redondance.
Choisir un niveau de RAID (0, 1, 5, 6, 10) selon la capacité et la tolérance aux pannes.
Expliquer le quorum et la haute disponibilité d'un cluster Proxmox VE.
Configurer une adresse virtuelle avec keepalived et un répartiteur de charge HAProxy, puis les tester.
Test express des prérequis 3 questions · 2 minutes · conseillé avant de commencer
1. Avec HSRP, que se passe-t-il quand le routeur actif tombe en panne ?
C'est le principe de l'adresse virtuelle, que l'on retrouve avec keepalived pour les serveurs Linux. À revoir : B2-09 · HSRP et VRRP.
2. Combien d'heures compte une année (365 jours) ?
365 × 24 = 8 760 heures. Ce nombre sert à convertir un taux de disponibilité en heures d'arrêt par an.
3. Quelle commande vérifie qu'un service tourne sous Debian ?
systemctl status indique si le service est actif, depuis quand, avec les dernières lignes du journal. À revoir : B2-14 · Debian 13.
Chez Brocéliande Logistique (entreprise fictive, 60 salariés), l'intranet sert à éditer les bons de livraison de l'entrepôt. Il tourne sur un seul serveur, SRV-WEB. Vendredi dernier, pendant le pic de préparation des commandes, ce serveur a planté : deux heures d'arrêt, des camions qui attendent sur le quai, des clients livrés en retard.
La direction veut que l'intranet reste disponible même quand un serveur tombe, et qu'il encaisse le pic du vendredi. Tu dois mesurer le besoin, repérer tous les points faibles de l'infrastructure, puis mettre en place deux serveurs web derrière un répartiteur de charge joignable par une adresse virtuelle.
Le coursMesurer la disponibilité, supprimer les points uniques de défaillance, RAID et redondance matérielle, cluster Proxmox, adresse virtuelle keepalived, répartition de charge HAProxy, réplication, puis vérifier et dépanner.
1. Mesurer la disponibilité
La disponibilité d'un service est la part du temps pendant laquelle il fonctionne réellement pour ses utilisateurs. Elle s'exprime en pourcentage sur une période, le plus souvent l'année, et figure dans les contrats de service (SLA).
Haute disponibilité : ensemble de techniques (redondance, bascule automatique, répartition de charge) qui permettent à un service de continuer à fonctionner malgré la panne d'un de ses composants. On parle de haute disponibilité à partir de 99,9 %, soit moins de 9 heures d'arrêt par an.
Disponibilité
Surnom
Arrêt maximal par an
Par mois (30 j)
Exemple de service
99 %
« deux 9 »
87 h 36 min (≈ 3,7 jours)
7 h 12 min
Serveur unique, sans redondance
99,9 %
« trois 9 »
8 h 46 min
43 min
Intranet d'une PME bien redondé
99,99 %
« quatre 9 »
52 min 34 s
4 min 19 s
Site marchand, messagerie d'un hébergeur
99,999 %
« cinq 9 »
5 min 15 s
26 s
Opérateur téléphonique, paiement
Chaque « 9 » supplémentaire divise l'arrêt autorisé par dix… et multiplie le coût de l'infrastructure. On choisit donc le niveau d'après le coût d'une heure d'arrêt pour l'entreprise.
MTBF (Mean Time Between Failures, temps moyen entre deux pannes)Plus il est grand, plus l'équipement est fiable. Donné par le constructeur pour un disque, une alimentation, un commutateur.
MTTR (Mean Time To Repair, temps moyen de remise en service)Temps de détection, de diagnostic, de réparation et de redémarrage. La haute disponibilité cherche surtout à le rendre presque nul grâce à une bascule automatique.
Disponibilité = MTBF ÷ (MTBF + MTTR)Un serveur qui tombe en moyenne toutes les 2 000 h et qu'on répare en 4 h : 2 000 ÷ 2 004 ≈ 99,8 %.
En série, les disponibilités se multiplient ; en parallèle, ce sont les indisponibilités qui se multiplient.
2. Chasser les points uniques de défaillance
Un point unique de défaillance (SPOF) est un élément dont la seule panne suffit à arrêter le service. La démarche consiste à suivre le chemin d'une requête, de l'utilisateur jusqu'aux données, et à se demander à chaque étape : « si ceci tombe, que se passe-t-il ? ».
Clique sur chaque élément du chemin de l'intranet : est-ce un point unique de défaillance ?
Choisis un élément du chemin pour savoir s'il peut, à lui seul, arrêter l'intranet.
Pour chaque élément critique : deux exemplaires, et une bascule automatique de l'un à l'autre.
Doubler un équipement ne suffit pas : il faut aussi un mécanisme de bascule automatique (adresse virtuelle, répartiteur, cluster) et une surveillance qui prévient quand l'un des deux est tombé. Sinon, on découvre la panne du second… le jour où le premier lâche.
3. Le RAID : survivre à la panne d'un disque
Le disque est l'un des composants qui tombent le plus souvent en panne. Le RAID (Redundant Array of Independent Disks) regroupe plusieurs disques pour qu'ils fonctionnent comme un seul, plus rapide et/ou capable de survivre à la perte de l'un d'eux. Il est géré par une carte contrôleur (RAID matériel) ou par le système (RAID logiciel : mdadm sous Linux, ZFS dans Proxmox, espaces de stockage sous Windows).
Niveau
Principe
Disques min.
Capacité utile (n disques de C)
Pannes tolérées
Usage
RAID 0
Agrégat par bandes (striping)
2
n × C
0 : un disque perdu, tout est perdu
Données temporaires, jamais pour un serveur
RAID 1
Miroir
2
C
1
Disque système d'un serveur
RAID 5
Bandes + parité répartie
3
(n − 1) × C
1
Fichiers, petits volumes
RAID 6
Bandes + double parité
4
(n − 2) × C
2
Gros volumes, gros disques
RAID 10
Miroirs agrégés en bandes
4
n ÷ 2 × C
1 par paire de miroir
Bases de données, VM : rapide
La parité (opération « ou exclusif », ⊕) permet de recalculer n'importe quel bloc manquant d'une bande.
Le RAID n'est pas une sauvegarde : une suppression, un fichier corrompu ou un rançongiciel touchent tous les disques en même temps (B2-24). Et un RAID dégradé dont personne n'est averti n'apporte rien : il faut une alerte (courriel de mdadm, supervision) dès la première panne.
4. La redondance matérielle et électrique
Après les disques, on double tout ce qui peut tomber dans le local technique. La règle est simple : deux de chaque, branchés à deux endroits différents.
Élément
Redondance
Mécanisme de bascule
Fiche
Alimentation du serveur
Deux blocs d'alimentation échangeables à chaud
Automatique, chacun peut alimenter seul
–
Arrivée électrique
Deux circuits, deux onduleurs
Chaque bloc sur un circuit différent
–
Lien réseau du serveur
Deux cartes, deux commutateurs
Agrégation (LACP) ou bascule active/passive
B2-04
Commutateurs
Deux chemins entre commutateurs
STP, EtherChannel
B2-04
Passerelle
Deux routeurs
HSRP / VRRP, adresse virtuelle
B2-09
Accès Internet
Deux opérateurs (fibre + 4G/5G)
Routage ou pare-feu multi-WAN
B3-09
4.1 L'onduleur
L'onduleur (UPS) fournit du courant pendant une coupure grâce à ses batteries, et protège des micro-coupures et des surtensions. Il ne sert pas à tenir des heures : il laisse le temps au groupe électrogène de démarrer, ou aux serveurs de s'arrêter proprement.
Technologie
Fonctionnement
Pour quoi
Off-line (veille)
Bascule sur batterie quand le secteur disparaît (quelques millisecondes)
Poste de travail
Line-interactive
Régule la tension en permanence, bascule rapide
Petits serveurs, baie de PME
On-line (double conversion)
Le courant est toujours redressé puis recréé par l'onduleur, batteries en relais : aucune coupure, tension parfaite
Salle serveur, équipements critiques
Un onduleur relié aux serveurs par USB ou par le réseau prévient de la coupure. Avec NUT (Network UPS Tools) sous Linux et Proxmox, les serveurs s'éteignent proprement quand la batterie passe sous un seuil, puis redémarrent au retour du courant. Sans cela, l'onduleur ne fait que retarder la coupure brutale.
5. Le cluster Proxmox et la haute disponibilité des VM
Un cluster Proxmox VE regroupe plusieurs hyperviseurs (les nœuds) administrés comme un seul. Il permet de migrer une VM d'un nœud à l'autre sans l'arrêter, et surtout de la redémarrer automatiquement sur un autre nœud si le sien tombe : c'est le gestionnaire de haute disponibilité (HA manager).
QuorumChaque nœud dispose d'une voix ; le cluster ne prend de décision que si une majorité stricte de voix est présente (2 sur 3, 3 sur 5). Cela évite que deux moitiés isolées démarrent chacune les mêmes VM (split brain).
Nombre de nœudsTrois nœuds minimum pour la haute disponibilité. Avec deux, la perte d'un seul fait perdre le quorum : il faut alors un arbitre externe, le QDevice, qui apporte une troisième voix.
Stockage partagé ou répliquéLe disque de la VM doit être accessible depuis le nœud de secours : stockage partagé (Ceph, NFS, iSCSI) ou réplication ZFS planifiée entre nœuds (on perd alors les dernières minutes).
Isolement (fencing)Un nœud qui perd le quorum s'éteint de lui-même grâce à un chien de garde (watchdog) avant que la VM ne soit redémarrée ailleurs : jamais deux copies de la même VM en marche.
La haute disponibilité de Proxmox redémarre la VM ailleurs : quelques minutes d'arrêt, mais aucune intervention.
Proxmox VE shell d'un nœud
root@pve1:~# pvecm create cluster-broceliande # sur le premier nœud root@pve2:~# pvecm add 172.16.99.41 # sur chaque autre nœud : rejoint le cluster root@pve1:~# pvecm status # nœuds, voix, « Quorate: Yes » root@pve1:~# qm migrate 105 pve2 --online # migration à chaud de la VM 105 root@pve1:~# ha-manager add vm:105 --state started # la VM est désormais protégée root@pve1:~# ha-manager status
6. Une adresse virtuelle avec keepalived
Le cluster redémarre une VM en quelques minutes. Pour une bascule en quelques secondes, on fait tourner le service sur deux serveurs en même temps et on leur fait partager une adresse IP virtuelle (VIP), portée par l'un ou l'autre. Sous Linux, c'est le rôle de keepalived, qui utilise le protocole VRRP, celui-là même que tu as vu sur les routeurs (B2-09).
Pour bien comprendre : le standard téléphonique
Les clients n'appellent qu'un seul numéro, celui du standard : c'est l'adresse virtuelle. Ce numéro sonne chez l'agent de permanence, l'agent A : c'est le serveur MASTER.
L'agent A signale sa présence toutes les secondes. S'il ne donne plus signe de vie, le numéro est aussitôt renvoyé chez l'agent B, le BACKUP. Les clients n'ont rien changé : ils composent toujours le même numéro.
Quand A revient et qu'il est prioritaire, il reprend la permanence : c'est la préemption.
/etc/keepalived/keepalived.conf sur WEB1 (MASTER)sur WEB2 : state BACKUP, priority 100
state / priorityRôle de départ et priorité (1 à 254) : c'est le serveur de plus haute priorité encore vivant qui porte l'adresse virtuelle.
virtual_router_idNuméro du groupe VRRP (1 à 255) : identique sur les deux serveurs, différent pour chaque autre groupe du même réseau.
advert_intIntervalle des annonces « je suis là » du MASTER, en secondes. Sans annonce pendant environ trois intervalles, le BACKUP prend l'adresse.
virtual_ipaddressL'adresse virtuelle, ici 172.16.50.25 : c'est elle que le DNS associe à intranet.broceliande.lan.
authenticationMot de passe partagé du groupe, identique des deux côtés (8 caractères au plus). Il évite les erreurs, pas les attaques : VRRP doit rester dans un VLAN de confiance.
Les annonces VRRP partent en multidiffusion vers 224.0.0.18 avec le numéro de protocole IP 112. Si un pare-feu les bloque entre les deux serveurs, chacun se croit seul et prend l'adresse virtuelle. Lors d'une bascule, le nouveau MASTER envoie un ARP « gratuit » pour que les commutateurs et les postes mettent à jour leur table.
7. Répartir la charge avec HAProxy
Avec keepalived, un seul serveur travaille, l'autre attend. Un répartiteur de charge (load balancer) fait travailler tous les serveurs : il reçoit les requêtes des clients et les distribue entre plusieurs serveurs identiques, en écartant automatiquement ceux qui ne répondent plus. HAProxy est le répartiteur libre le plus répandu.
Clique sur un algorithme de répartition pour voir comment HAProxy distribue six requêtes.
Choisis un algorithme : les numéros indiquent l'ordre d'arrivée des requêtes sur chaque serveur.
Le client ne connaît que l'adresse du répartiteur ; c'est HAProxy qui choisit le serveur.
/etc/haproxy/haproxy.cfg partie ajoutée sur le répartiteur
frontend fe_intranet
bind *:80
default_backend be_web
backend be_web
balance roundrobin
option httpchk GET /
server web1 172.16.50.21:80 check
server web2 172.16.50.22:80 check
listen stats
bind *:8404
stats enable
stats uri /stats
frontendCe que voient les clients : l'adresse et le port d'écoute (bind), et vers quel groupe de serveurs envoyer les requêtes.
backendLe groupe de serveurs réels, l'algorithme (balance) et la liste des serveurs (server nom adresse:port check).
check / option httpchkContrôle de santé : HAProxy interroge chaque serveur toutes les 2 secondes ; après 3 échecs, le serveur est marqué DOWN et ne reçoit plus rien, jusqu'à ce qu'il réponde de nouveau.
listen statsPage de statistiques (port 8404) : état UP/DOWN de chaque serveur, nombre de sessions, erreurs. À protéger par un mot de passe en production.
Le répartiteur devient à son tour un point unique de défaillance ! En production, on installe deux HAProxy qui partagent une adresse virtuelle keepalived : keepalived assure la bascule du répartiteur, HAProxy répartit la charge entre les serveurs web. Les deux outils sont complémentaires.
8. La réplication des données
Deux serveurs web identiques, c'est facile : ils affichent les mêmes pages. Mais si l'application écrit des données (une base, des fichiers déposés), il faut que chaque serveur voie les mêmes données. C'est le rôle de la réplication.
Mode
Principe
Avantage
Limite
Synchrone
L'écriture n'est validée que lorsque les deux copies l'ont enregistrée
Aucune perte de données
Plus lent ; exige un lien rapide et proche
Asynchrone
L'écriture est validée tout de suite, la copie suit avec un léger retard
Rapide, possible à longue distance
Les dernières secondes peuvent être perdues
Exemples : réplication MariaDB (primaire et réplique, ou grappe Galera synchrone), réplication ZFS entre nœuds Proxmox (asynchrone, toutes les 15 minutes par exemple), DFS-R entre serveurs de fichiers Windows, stockage distribué Ceph (synchrone). Comme le RAID, la réplication recopie aussi les erreurs : elle ne remplace jamais la sauvegarde.
9. Vérifier et dépanner
Une architecture haute disponibilité se teste en provoquant la panne : on éteint un serveur, on coupe un service, on débranche un lien, et l'on vérifie que la bascule se fait dans le délai prévu. Ces tests font partie du cahier de recette.
Commande
Ce qu'elle montre
Ce qu'on y cherche
ip -br a
Les adresses de chaque interface
L'adresse virtuelle n'apparaît que sur un seul serveur
journalctl -u keepalived -f
Les changements d'état VRRP
Entering MASTER STATE / BACKUP STATE au bon moment
haproxy -c -f /etc/haproxy/haproxy.cfg
Vérifie la syntaxe avant rechargement
Configuration file is valid
Page http://…:8404/stats
État des serveurs du backend
Tous UP ; un serveur arrêté passe DOWN en quelques secondes
curl -s http://172.16.50.25 en boucle
Quel serveur répond
Les réponses alternent (roundrobin) et ne s'interrompent pas pendant une panne
pvecm status · ha-manager status
Quorum et état des ressources HA
Quorate: Yes ; VM started sur un nœud vivant
cat /proc/mdstat
État des grappes RAID logicielles
[UU] ; [U_] signale un disque perdu
9.1 Entraîne-toi : les tickets du support
Tu es de permanence au support de Brocéliande Logistique. Six tickets arrivent les uns après les autres : lis le message, observe le relevé, puis choisis la cause.
File d'attente du support6 tickets · un à la fois · l'explication s'affiche après ta réponse
« Nous avons un cluster de deux hyperviseurs pour ne plus dépendre d'un seul. Ce matin, PVE1 est tombé… et les VM protégées de PVE2 se sont arrêtées aussi ! »
Cause : 1 voix sur 2 n'est pas une majorité stricte : PVE2 bloque toute action pour éviter un split brain, et son chien de garde a arrêté les VM HA. Correction : ajouter un troisième nœud, ou un QDevice (petit service d'arbitrage sur une autre machine) qui apporte la troisième voix.
Ticket n° 2De : entrepôtPriorité haute
« L'intranet affiche "503 Service Unavailable" depuis la mise à jour de ce matin, alors que les deux serveurs web répondent quand on tape leur adresse directement. »
haproxy.cfg et page de statistiques
backend be_web
option httpchk GET /sante.html
server web1 172.16.50.21:80 check → DOWN (L7STS/404)
server web2 172.16.50.22:80 check → DOWN (L7STS/404)
Quelle est la cause ?
Cause : la mise à jour a supprimé /sante.html. Le code 404 fait échouer le contrôle de niveau 7 (L7STS) : les deux serveurs passent DOWN et HAProxy répond 503. Correction : recréer la page de santé (et l'inclure dans le déploiement), ou contrôler GET /. Leçon : surveiller l'état des backends, pas seulement les serveurs.
Ticket n° 3Alerte de la supervisionPriorité haute
« Depuis l'activation du pare-feu local sur les deux serveurs web, l'intranet répond une fois sur deux et la supervision signale un conflit d'adresse sur 172.16.50.25. »
Debian 13 relevé sur WEB1 et sur WEB2
web1$ ip -br a show ens18
ens18 UP 172.16.50.21/24 172.16.50.25/24
web2$ ip -br a show ens18
ens18 UP 172.16.50.22/24 172.16.50.25/24
web2$ journalctl -u keepalived | tail -1
VRRP_Instance(VI_INTRANET) Entering MASTER STATE
Quelle est la cause ?
Cause : c'est un split brain : WEB2 n'entend plus les annonces de WEB1 et devient MASTER à son tour. Les deux répondent à la même adresse. Correction : autoriser le protocole VRRP (IP 112, vers 224.0.0.18) entre les deux serveurs dans le pare-feu local, puis vérifier qu'un seul porte la VIP.
Ticket n° 4De : comptabilitéPriorité haute
« Le serveur de fichiers a perdu un disque mardi, on l'a remplacé jeudi. Pendant la reconstruction, un deuxième disque est tombé : le volume est perdu ! On avait pourtant du RAID. »
Fiche du serveur extrait
Grappe : RAID 5 · 4 disques de 12 To · même lot de fabrication
Alerte mail du contrôleur : non configurée
Disque de secours (hot spare) : aucun
Quelle est l'explication ?
Cause : RAID 5 = une seule panne tolérée. Avec des disques de 12 To, la reconstruction dure des heures sous forte charge, et des disques du même lot vieillissent ensemble. Deux jours en mode dégradé, sans alerte ni disque de secours, ont aggravé le risque. Correction : RAID 6 (ou RAID 10), hot spare, alertes, et restauration depuis la sauvegarde.
Ticket n° 5De : préparateurs de commandesPriorité moyenne
« Depuis que l'intranet est sur deux serveurs, on est déconnecté tout le temps : on se reconnecte, on clique, et l'appli redemande le mot de passe. »
haproxy.cfg backend
backend be_web
balance roundrobin
server web1 172.16.50.21:80 check
server web2 172.16.50.22:80 check
# l'application garde les sessions en mémoire, sur chaque serveur
Quelle est la cause ?
Cause : en roundrobin, les requêtes d'un même utilisateur alternent entre WEB1 et WEB2. La session ouverte sur WEB1 n'existe pas sur WEB2. Correction : persistance de session (balance source, ou cookie d'affinité avec cookie SRV insert), ou mieux, des sessions stockées dans une base partagée.
Ticket n° 6De : directionRetour d'expérience
« Coupure de courant de 40 minutes hier. L'onduleur a tenu 12 minutes, puis tout s'est éteint d'un coup. Deux VM ont redémarré avec des fichiers corrompus. »
Fiche de l'onduleur extrait
Liaison avec les serveurs : aucune (USB débranché)
Batteries : installées en 2019
Arrêt automatique : non configuré
Quelle est la cause principale des fichiers corrompus ?
Cause : l'onduleur a seulement retardé la coupure brutale. Correction : relier l'onduleur (USB ou carte réseau), configurer NUT pour éteindre proprement VM puis hyperviseurs sous un seuil de batterie, remplacer les batteries vieillissantes (3 à 5 ans) et tester la coupure chaque année.
10. À l'examen et en entreprise
Documentation attendue : schéma de l'architecture (VIP, répartiteur, serveurs, réplication), tableau des adresses, fichiers de configuration commentés, calcul de disponibilité visée.
Démonstration : le jury apprécie de voir la bascule en direct. Prépare un client qui interroge l'adresse virtuelle en boucle, puis éteins le serveur actif devant lui.
Justifier ses choix : pourquoi keepalived et HAProxy, pourquoi trois nœuds, pourquoi RAID 6 plutôt que 5, quel est le coût d'un « 9 » de plus.
En entreprise : la haute disponibilité se négocie dans un SLA ; elle complète le PCA (B3-08) mais ne remplace ni la sauvegarde (B2-24) ni la supervision (B2-28).
11. L'essentiel
Disponibilité = temps de fonctionnement ÷ temps total ; 99,9 % ≈ 8 h 46 min d'arrêt par an.
Disponibilité = MTBF ÷ (MTBF + MTTR) : la haute disponibilité réduit surtout le MTTR.
En série, les disponibilités se multiplient ; en parallèle, ce sont les indisponibilités.
Un SPOF arrête tout à lui seul : on le double et on ajoute une bascule automatique et une alerte.
while true; do curl -s http://172.16.50.25; sleep 1; done
Calculer
dispo = MTBF ÷ (MTBF + MTTR) · série : produit · parallèle : 1 − produit des indispos
Tout cela tient sur une page : utilise le bouton Mémo à imprimer en haut de la fiche.
La pratiqueLe quiz noté pour vérifier tes acquis, les exercices à rendre à ton professeur, puis le TP au labo sur ton pool Proxmox.
12. Quiz noté
8 questions · 10 minutesRéponds à toutes les questions, puis valide. Seule ta première tentative est enregistrée : elle compte dans ton suivi. Ensuite, tu peux t'entraîner autant que tu veux.
1. Combien d'arrêt par an autorise une disponibilité de 99,9 % ?
2. Qu'est-ce qu'un point unique de défaillance (SPOF) ?
3. Quelle est la capacité utile d'un RAID 5 de quatre disques de 2 To ?
4. Combien de pannes de disque simultanées un RAID 6 tolère-t-il ?
5. Dans un cluster Proxmox de trois nœuds, combien doivent rester joignables pour garder le quorum ?
6. Avec keepalived, quel serveur porte l'adresse virtuelle ?
7. Avec l'algorithme leastconn, HAProxy envoie une nouvelle requête…
8. À quoi sert l'option check sur une ligne server de HAProxy ?
13. Exercices : à toi de répondre
Écris ta réponse sous chaque énoncé et envoie-la à ton professeur. Quand il l'a validée, le corrigé s'affiche à la place du cadenas ; s'il te la renvoie « à revoir », lis son commentaire et corrige. Montre tes calculs.
Exercice 1 – Calculer (SIO2)
L'intranet dépend d'un commutateur (99,9 %), d'un routeur (99,9 %) et d'un serveur web (99,5 %). Calcule sa disponibilité et le nombre d'heures d'arrêt par an. Recommence avec deux serveurs web en parallèle (chacun à 99,5 %). Quel élément faut-il doubler ensuite ?
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 2 – Choisir un RAID (SIO2)
Le futur serveur de fichiers reçoit six disques de 4 To. Calcule la capacité utile et le nombre de pannes tolérées en RAID 5, RAID 6 et RAID 10. Lequel recommandes-tu pour des données de comptabilité, et pourquoi ?
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 3 – Dépanner (SIO2)
Tu éteins WEB1 pour tester la bascule keepalived : l'intranet reste injoignable. Sur WEB2, ip -br a ne montre pas 172.16.50.25 et journalctl -u keepalived affiche : (VI_INTRANET) received an invalid passwd!. Explique ce qui se passe et corrige.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
Exercice 4 – Concevoir (SIO2)
La direction de Brocéliande veut un intranet disponible à 99,9 % au moins, y compris pendant les mises à jour. Le budget permet trois hyperviseurs. Dessine l'architecture cible (du poste jusqu'aux données) et rédige en dix lignes la liste des mécanismes de haute disponibilité, en indiquant pour chacun la panne qu'il couvre.
Le corrigé s'affichera ici dès que ton professeur aura validé ta réponse. Cherche d'abord par toi-même : c'est en se trompant qu'on retient.
14. Au labo : un intranet qui survit à la panne
Objectif
Sur ton pool Proxmox (page Mes serveurs et VM), tu construis deux serveurs web identiques, tu les places derrière un répartiteur HAProxy, puis tu leur fais partager une adresse virtuelle avec keepalived. Tu provoques ensuite des pannes et tu mesures ce qu'en voit l'utilisateur. Compte 2 h 30. Adapte les adresses au réseau de ton pool si besoin.
VM
Système
Adresse
Rôle
WEB1
Debian 13 + nginx + keepalived
172.16.50.21/24
Serveur web, MASTER VRRP (priorité 150)
WEB2
Clone de WEB1
172.16.50.22/24
Serveur web, BACKUP VRRP (priorité 100)
LB1
Debian 13 + HAProxy
172.16.50.31/24
Répartiteur de charge
Adresse virtuelle
–
172.16.50.25
Portée par WEB1 ou WEB2 (partie B)
En production, l'adresse virtuelle serait portée par deux répartiteurs HAProxy ; ici, pour économiser une VM, on l'étudie directement sur les serveurs web.
Ce que tu ajoutes à cette étape
Deux serveurs web qui affichent leur propre nom, pour voir qui répond.
Un répartiteur HAProxy avec contrôles de santé et page de statistiques.
Une adresse virtuelle keepalived qui bascule toute seule.
Des pannes provoquées et leur durée mesurée.
1 Préparer WEB1, puis le cloner en WEB2
Debian 13 WEB1
$ sudo apt update && sudo apt install -y nginx curl $ echo "<h1>Intranet - servi par $(hostname)</h1>" | sudo tee /var/www/html/index.html $ curl -s http://localhost # doit afficher le nom de la machine
Éteins WEB1, clone-la dans Proxmox (Clone, clone complet) en WEB2, puis sur WEB2 : nouveau nom (hostnamectl set-hostname web2), nouvelle adresse .22, et régénère la page d'accueil avec la commande echo ci-dessus.
2 Partie A : installer HAProxy sur LB1
Installe HAProxy (sudo apt install -y haproxy), ajoute à la fin de /etc/haproxy/haproxy.cfg le frontend, le backend et la page de statistiques de la partie 7, vérifie la syntaxe, puis recharge le service.
Complète les commandes de LB1, puis vérifie chaque ligne avec ✓, ou tout d'un coup avec Vérifier.
lb1$ vérifier la syntaxe ›
lb1$ recharger le service ›
backend : ligne du serveur web2 ›
algorithme : moins de connexions ›
web2$ voir l'adresse virtuelle ›
3 Tester la répartition et provoquer une panne
Depuis un poste ou LB1 : for i in 1 2 3 4 5 6; do curl -s http://172.16.50.31; done. Les réponses doivent alterner entre web1 et web2.
Ouvre http://172.16.50.31:8404/stats : les deux serveurs sont UP (vert).
Lance une boucle while true; do curl -s http://172.16.50.31; sleep 1; done, puis arrête nginx sur WEB2 (sudo systemctl stop nginx). Combien de requêtes échouent avant que WEB2 passe DOWN ? Toutes les réponses viennent-elles ensuite de WEB1 ?
Redémarre nginx sur WEB2 et observe son retour dans la rotation.
4 Partie B : l'adresse virtuelle avec keepalived
Sur WEB1 et WEB2 : sudo apt install -y keepalived, puis crée /etc/keepalived/keepalived.conf d'après la partie 6 (WEB1 : MASTER, priorité 150 ; WEB2 : BACKUP, priorité 100 ; même virtual_router_id et même mot de passe), et démarre le service (sudo systemctl restart keepalived). Vérifie avec ip -br a que seul WEB1 porte 172.16.50.25.
5 Provoquer la bascule
Lance la boucle curl vers http://172.16.50.25.
Éteins WEB1 depuis Proxmox (Stop, comme une panne). Compte les secondes sans réponse, puis vérifie que la page affiche web2 et que WEB2 porte la VIP (journalctl -u keepalived : Entering MASTER STATE).
Rallume WEB1 : il reprend l'adresse (préemption). Note-le dans ton compte rendu.
6 Valider le TP : le cahier de recette
N°
Test
Commande ou action
Résultat attendu
OK
1
Les deux serveurs répondent
curl vers .21 et .22
Une page avec le nom de chaque serveur
2
La charge est répartie
6 curl vers LB1
Les réponses alternent web1 / web2
3
Un serveur en panne est écarté
Arrêt de nginx sur WEB2
WEB2 DOWN sur la page de statistiques, plus d'erreur côté client
4
Une seule VIP à la fois
ip -br a sur WEB1 et WEB2
172.16.50.25 présente sur WEB1 seulement
5
La VIP bascule
Arrêt de WEB1, boucle curl
Réponses de web2 après quelques secondes
6
La durée de coupure est mesurée
Compte rendu
Nombre de secondes sans réponse pour chaque panne
Suis ta progressionConnecte-toi pour marquer les ressources comme terminées et retrouver ton avancement.