Chapitre 1117 minIntermédiaire
Tester une bascule, superviser la redondance et documenter le mode dégradé
Par Josselyn C., prof de BTS SIO. Mis à jour le .
À la fin de ce chapitre, tu sauras
- préparer et mesurer un test de bascule ;
- écrire un plan de test avec résultats attendus ;
- superviser la perte de redondance, pas seulement la perte de service ;
- rédiger une fiche de mode dégradé.
4 exercices corrigés
Tester une bascule, c'est provoquer volontairement la panne d'un composant redondant, mesurer la coupure et vérifier que le service continue. Superviser la redondance, c'est être prévenu dès qu'un composant tombe, avant que la panne suivante coupe le service. Documenter le mode dégradé, c'est écrire à l'avance ce qui fonctionne encore, ce qu'il faut faire et comment revenir à la normale. Ce chapitre donne la méthode d'un test de bascule, un plan de test complet, les indicateurs à superviser et un modèle de fiche de mode dégradé.
Pourquoi tester
Une redondance jamais testée est une hypothèse. Les raisons pour lesquelles un secours ne prend pas le relais le jour J sont presque toujours banales :
- la configuration du secours a dérivé : une règle ajoutée sur le principal et jamais recopiée ;
- le certificat du secours a expiré, puisque personne ne s'en sert ;
- un pare-feu local bloque les annonces VRRP, et les deux nœuds se croient seuls ;
- le relais DHCP ne connaît que le premier serveur ;
- le survivant ne tient pas la charge à lui seul ;
- la procédure de bascule manuelle n'a jamais été jouée, et personne ne sait la suivre sous pression.
Le référentiel du BTS SIO en fait d'ailleurs un indicateur de performance du bloc 2 SISR : le mode dégradé et les éléments de reprise doivent être vérifiés périodiquement. À l'E6, la commission ne se contente pas d'une configuration : elle veut voir la bascule (la recette de l'E6 SISR).
Préparer un test de bascule
Un test de bascule se prépare comme n'importe quelle intervention en production :
- Formuler l'hypothèse à vérifier, chiffrée : « Si LB1 s'arrête brutalement, l'intranet reste accessible ; la coupure dure moins de 5 secondes ; aucune session n'est perdue. »
- Choisir le créneau et l'environnement : la maquette d'abord ; en production, hors des heures de service, avec l'accord du responsable. En entreprise, un test en production passe par la gestion des changements.
- Prévenir les utilisateurs concernés, même si aucune coupure n'est attendue.
- Prévoir le retour arrière : comment remettre la situation d'avant si le secours ne prend pas le relais, et vérifier que la dernière sauvegarde est bonne.
- Installer la mesure avant de provoquer la panne : sans chiffres, un test ne prouve rien.
Mesurer la coupure
La mesure se fait du côté du client, comme le ressentirait un utilisateur. Depuis un poste Linux du VLAN 10, une boucle interroge la page de santé de l'intranet deux fois par seconde et horodate chaque réponse :
while true; do
code=$(curl -s -o /dev/null -w '%{http_code}' --max-time 2 https://intranet.ravelle.lan/sante)
echo "$(date +%T.%3N) $code"
sleep 0.5
done | tee mesure-bascule.log
Chaque ligne affiche l'heure à la milliseconde et le code HTTP : 200 quand tout va bien, 000 quand aucune réponse n'est arrivée (délai dépassé, connexion refusée), 503 quand le répartiteur répond mais n'a aucun serveur disponible. La coupure se lit entre la dernière ligne 200 avant la panne et la première ligne 200 après ; comme une requête en échec peut attendre jusqu'à 2 secondes (--max-time 2), la mesure est précise à une ou deux secondes près.
Depuis un poste Windows, le même principe en PowerShell :
while ($true) {
try { $c = (Invoke-WebRequest https://intranet.ravelle.lan/sante -TimeoutSec 2 -UseBasicParsing).StatusCode }
catch { $c = 'ERREUR' }
'{0:HH:mm:ss.fff} {1}' -f (Get-Date), $c
Start-Sleep -Milliseconds 500
}
Pour une simple adresse virtuelle, un ping rapide suffit : ping -i 0.2 10.10.20.30 envoie cinq paquets par seconde, et le nombre de réponses perdues multiplié par 0,2 seconde donne la durée de la coupure.
Les scénarios à tester
Une panne propre ne ressemble pas à une panne réelle. Teste plusieurs façons de tomber, de la plus douce à la plus brutale :
| Scénario | Comment le provoquer | Ce qu'il vérifie |
|---|---|---|
| Arrêt propre d'un nœud | systemctl stop keepalived, arrêt du système | La bascule « polie » : le nœud prévient qu'il s'en va |
| Panne brutale | Arrêt forcé de la VM (Stop dans Proxmox, pas Shutdown), câble débranché, alimentation coupée | La détection par absence d'annonces, la vraie durée de bascule |
| Panne du service seul | systemctl stop haproxy sur un nœud vivant | Le suivi : la priorité baisse-t-elle, le secours prend-il le relais ? |
| Panne d'un composant interne | mdadm --fail sur un disque, interface d'agrégat désactivée | La tolérance de panne, et surtout l'alerte |
| Coupure entre les nœuds | Débrancher le lien entre deux nœuds d'un cluster, en maquette uniquement | Le quorum et le fencing : un seul groupe garde-t-il les ressources ? |
| Retour du composant | Redémarrer le nœud arrêté | La préemption : y a-t-il une seconde coupure, la configuration est-elle restée cohérente ? |
| Charge | Faire tourner un outil de test de charge pendant la panne | Le survivant tient-il seul la charge normale ? |
| Coupure électrique | Débrancher l'onduleur du secteur, en dehors des heures de service | L'autonomie réelle, l'arrêt propre automatique des serveurs |
Le plan de test de l'intranet
Le plan de test (ou cahier de recette) liste chaque test avec son résultat attendu, écrit avant le test, puis le résultat obtenu. Voici celui de l'intranet de Ravelle Conseil après la mise en haute disponibilité :
| N° | Test | Action | Résultat attendu | Résultat obtenu | Conforme |
|---|---|---|---|---|---|
| T1 | Répartition | 6 appels de qui.html sans cookie | Réponses alternées web1 et web2 | web1, web2, web1, web2, web1, web2 | Oui |
| T2 | Panne d'un serveur web | Arrêt de Nginx sur WEB2 | WEB2 retiré en moins de 10 s, aucune erreur côté client | Retiré en 6 s, aucune erreur (redispatch) | Oui |
| T3 | Retour du serveur web | Redémarrage de Nginx sur WEB2 | WEB2 réintégré en moins de 10 s | Réintégré en 4 s | Oui |
| T4 | Panne brutale du répartiteur actif | Arrêt forcé de la VM LB1 | VIP reprise par LB2, coupure inférieure à 5 s | 19 paquets perdus sur un ping toutes les 0,2 s : 3,8 s | Oui |
| T5 | Panne de HAProxy seul | systemctl stop haproxy sur LB1 | LB2 prend la VIP (priorité de LB1 à 120) | VIP sur LB2 en 5 s | Oui |
| T6 | Retour de LB1 | Redémarrage de LB1 | LB1 reprend la VIP (préemption), coupure inférieure à 2 s | Coupure de 0,4 s | Oui |
| T7 | Panne d'un hyperviseur | Arrêt forcé de pve2, qui porte WEB2 | Intranet sans coupure ; WEB2 redémarré sur un autre nœud en moins de 5 min | Aucune coupure ; WEB2 de nouveau UP après 3 min 10 s | Oui |
| T8 | Alertes | Pendant T2 à T7 | Une alerte par panne, reçue par courriel en moins de 2 min | Reçues, sauf pour T5 : aucune alerte sur la bascule VRRP | Non |
Le test T8 montre l'intérêt du plan : sans lui, personne n'aurait remarqué que la supervision ignorait les bascules de keepalived. Un test non conforme n'est pas un échec du projet : c'est une correction à faire, puis un test à rejouer.
Superviser la redondance
On supervise à deux niveaux :
- Le service de bout en bout, comme un utilisateur : une sonde qui interroge
https://intranet.ravelle.lan/depuis le VLAN utilisateurs, chaque minute. C'est elle qui mesure la disponibilité réelle, le SLI du chapitre 1. - Chaque membre de chaque redondance, séparément : sinon, la panne d'un membre reste invisible.
| Élément | Indicateur | Alerte |
|---|---|---|
| Service intranet (VIP) | Code 200 en moins de 5 s | Désastre après 2 échecs consécutifs |
| Chaque serveur web | /sante interrogée directement sur .31 et .32 | Haute |
| HAProxy | Nombre de serveurs UP dans le groupe web_intranet | Avertissement si inférieur à 2 |
| keepalived | Changement d'état dans le journal ; un seul des deux nœuds porte la VIP | Avertissement à chaque bascule ; haute si les deux portent la VIP |
| RAID | /proc/mdstat contient un disque absent (_) | Haute |
| Réplication de la base | Slave_SQL_Running et Slave_IO_Running ; retard Seconds_Behind_Master | Haute si arrêtée ; avertissement au-delà de 60 s de retard |
| Active Directory | Échecs de repadmin /replsummary ; services NTDS et DNS | Haute |
| DHCP | État du basculement ; taux d'occupation de l'étendue | Haute si le partenaire est hors service ; avertissement au-delà de 90 % |
| Cluster Proxmox VE | Quorum ; état des ressources HA | Désastre si le quorum est perdu |
| Onduleur | Sur batterie ; autonomie restante ; état de la batterie | Haute sur batterie, désastre sous 10 minutes d'autonomie |
| Certificats | Date d'expiration sur chaque répartiteur | Avertissement à 30 jours |
Les niveaux de gravité reprennent ceux de Zabbix (information, avertissement, moyenne, haute, désastre). Le principe : une perte de redondance mérite une intervention rapide aux heures ouvrées ; une perte de service, une intervention immédiate. Le cours supervision met en place Zabbix et Grafana, l'outil du labo SISR : hôtes, modèles et déclencheurs, puis les alertes. La supervision calcule aussi, à partir des sondes de bout en bout, le rapport de disponibilité mensuel à comparer à l'engagement de service.
Documenter le mode dégradé
Le mode dégradé est l'état d'un service qui fonctionne avec une partie seulement de ses composants. La fiche de mode dégradé décrit, pour chaque panne prévisible, ce qu'il faut savoir et faire. On l'écrit à froid, quand on a le temps de réfléchir, pour ne pas improviser sous pression.
Ce que contient une fiche :
- La situation : quelle panne, comment on la reconnaît (l'alerte reçue, les symptômes).
- L'impact : ce qui fonctionne encore, ce qui ne fonctionne plus, les performances attendues.
- Le risque : ce qui se passera à la prochaine panne.
- Les actions immédiates, dans l'ordre, avec les commandes.
- La communication : qui prévenir, avec quel message.
- Le retour à la normale : la procédure pour rétablir la redondance, et le délai visé.
- La vérification : comment prouver que tout est revenu à l'état nominal.
- Les contacts : l'administrateur d'astreinte, le prestataire, le fournisseur du matériel.
Exemple : un répartiteur hors service.
Fiche MD-03 : un répartiteur de l'intranet hors service
- Situation. Alerte « LB1 injoignable » ou « bascule VRRP », ou un répartiteur arrêté dans Proxmox.
- Impact. Aucun pour les utilisateurs : l'autre répartiteur porte la VIP 10.10.20.30. Performances inchangées (un répartiteur suffit à la charge).
- Risque. Plus de redondance : la panne du répartiteur restant coupe l'intranet.
- Actions immédiates. Vérifier sur le survivant qu'il porte la VIP (
ip -br address show ens18) et que ses deux serveurs web sont UP (page de statistiques). Consulter le journal du répartiteur en panne (journalctl -u keepalived -u haproxy).- Communication. Informer le responsable informatique ; aucun message aux utilisateurs tant que le service fonctionne.
- Retour à la normale. Réparer ou redéployer la VM à partir de la sauvegarde ; vérifier que sa configuration HAProxy est identique à celle du survivant (
diff), la valider (haproxy -c), redémarrer HAProxy puis keepalived. Délai visé : un jour ouvré.- Vérification. Les deux nœuds actifs, un seul porte la VIP, test de bascule T4 rejoué hors heures de service.
- Contacts. Administrateur d'astreinte ; responsable du contrat de service.
Les pannes qui demandent une action humaine pour basculer, comme la promotion du réplica de la base de données (chapitre 9), ont aussi leur procédure de bascule pas à pas, testée en maquette. Ces fiches font partie du plan de continuité ; le cours sauvegarde et PRA traite du plan de reprise, et le cours ITIL et support de la gestion de l'incident lui-même.
Tester régulièrement
Un test réussi en juin ne prouve rien en décembre : les configurations évoluent, les certificats expirent, les équipes changent. Planifie :
- un test de bascule de chaque redondance critique au moins une fois par trimestre, et après chaque changement important ;
- une revue des fiches de mode dégradé à chaque test, pour les corriger avec ce qu'on a appris ;
- un compte rendu de chaque test, avec ses mesures : c'est la preuve, pour la direction comme pour la commission de l'E6, que la disponibilité promise est réelle.
Les grandes entreprises du web vont jusqu'à provoquer des pannes aléatoires en production, en permanence, pour s'assurer que leurs systèmes y résistent : c'est l'ingénierie du chaos. Sans aller jusque-là, retiens l'idée : la seule façon de savoir qu'un système survit à une panne, c'est de la provoquer.
Exercices
Exercice 1 sur 4 Mesurer une coupure Réussi À revoir
Pendant le test de bascule de LB1, un poste lance ping -i 0.2 10.10.20.30 et, après la bascule, obtient la statistique : « 300 packets transmitted, 281 received ».
- Estime la durée de la coupure.
- Ce résultat est-il cohérent avec VRRP réglé sur une annonce par seconde ?
- Pourquoi ce ping ne suffit-il pas à prouver que l'intranet est resté accessible ?
Voir la réponseMasquer la réponse de l'exercice 1
- 300 − 281 = 19 paquets perdus, à 0,2 seconde d'intervalle : environ 3,8 secondes.
- Oui : le secours se déclare maître environ 3,6 secondes après la dernière annonce reçue (chapitre 5), plus le temps de l'ARP gratuit et de la mise à jour des tables MAC.
- Le ping prouve que l'adresse répond, pas que le service fonctionne : sur LB2, HAProxy pourrait être arrêté, ou mal configuré, et l'intranet indisponible. Il faut aussi mesurer au niveau du service, avec la boucle
curlsur la page de santé.
Tu avais trouvé ?
Exercice 2 sur 4 Classer les alertes Réussi À revoir
Attribue une gravité (avertissement, haute, désastre) à chaque alerte, et dis si elle justifie de réveiller quelqu'un la nuit pour un service ouvert de 8 h à 19 h.
- L'intranet ne répond plus sur la VIP depuis 2 minutes.
- LB2 est arrêté ; LB1 porte la VIP et l'intranet répond.
- Le disque
sdcde WEB1 est sorti de son RAID 1. - La réplication de la base a 8 secondes de retard pendant la sauvegarde nocturne.
- Le certificat de LB2 expire dans 20 jours ; celui de LB1 dans 200 jours.
Voir la réponseMasquer la réponse de l'exercice 2
- Désastre : le service est coupé. La nuit, le service n'est pas ouvert : l'alerte doit être traitée dès l'ouverture, ou par l'astreinte si le contrat en prévoit une, pour que tout fonctionne à 8 h.
- Haute : le service fonctionne, mais sans redondance. Intervention le jour ouvré, pas la nuit.
- Haute : le serveur fonctionne sur un seul disque, et WEB2 assure de toute façon le service. Remplacement du disque rapidement, en journée.
- Rien ou une simple information : un retard de quelques secondes pendant une forte charge est normal. Le seuil d'avertissement (60 s) n'est pas atteint.
- Avertissement. Et il révèle une faiblesse : les certificats des deux répartiteurs devraient être identiques et renouvelés ensemble. Sinon, la bascule sur LB2 dans un mois afficherait une erreur de certificat à tous les utilisateurs.
Tu avais trouvé ?
Exercice 3 sur 4 Critiquer un plan de test Réussi À revoir
Un stagiaire présente le test de sa redondance de répartiteurs : « J'ai arrêté proprement LB1 avec shutdown à 10 h, j'ai rechargé la page de l'intranet dans mon navigateur, elle s'affichait. Test réussi. » Cite quatre faiblesses de ce test.
Voir la réponseMasquer la réponse de l'exercice 3
Quatre parmi :
- Aucune hypothèse ni résultat attendu écrits avant le test : « elle s'affichait » ne dit rien de la durée de la coupure.
- Aucune mesure : un rechargement manuel ne voit pas une coupure de quelques secondes ; il fallait une boucle horodatée ou un ping rapide.
- Un arrêt propre seulement : il faut aussi une panne brutale (arrêt forcé de la VM, câble débranché) et une panne du service seul (
systemctl stop haproxy). - Pas de test de retour : que se passe-t-il quand LB1 revient ?
- En production à 10 h, en pleine heure de service, sans prévenir ni avoir prévu de retour arrière.
- Le cache du navigateur a pu afficher une page déjà chargée.
- Pas de vérification de l'alerte : la supervision a-t-elle signalé la perte de redondance ?
Tu avais trouvé ?
Exercice 4 sur 4 Rédiger une fiche de mode dégradé Réussi À revoir
Rédige la fiche de mode dégradé « SRV-DB hors service » pour l'intranet de Ravelle Conseil. La base est répliquée en asynchrone vers SRV-DB2, et la bascule est manuelle (chapitre 9). L'application se connecte à la base par l'adresse 10.10.20.34, une adresse secondaire configurée sur le serveur principal, qu'on déplace à la main lors d'une bascule.
Voir la réponseMasquer la réponse de l'exercice 4
Une fiche possible :
- Situation. Alerte « SRV-DB injoignable » ou « réplication arrêtée », page
/santeen erreur sur les deux serveurs web, intranet en erreur 503. - Impact. Service coupé : l'intranet ne peut plus lire ni écrire ses données. Les documents déjà ouverts restent affichés.
- Risque. Perte des dernières secondes de modifications non répliquées. Si SRV-DB revenait seul en principal après la bascule, deux bases accepteraient des écritures.
- Actions immédiates. Confirmer la panne de SRV-DB (console Proxmox). Sur SRV-DB2 :
SHOW REPLICA STATUS\G, attendre la fin du rejeu,STOP REPLICA;,RESET REPLICA ALL;,SET GLOBAL read_only = OFF;. Ajouter l'adresse 10.10.20.34 sur SRV-DB2 (ip address add 10.10.20.34/24 dev ens18, puis dans sa configuration réseau permanente). Vérifier/santesur WEB1 et WEB2, puis l'intranet. - Communication. Message aux utilisateurs dès la coupure constatée (« intranet indisponible, rétablissement en cours, prochaine information dans 30 minutes »), puis à la reprise, en signalant que les dernières modifications peuvent être à refaire.
- Retour à la normale. Empêcher SRV-DB de redémarrer en principal ; le reconstruire comme réplica de SRV-DB2 ; décider ensuite, à froid, s'il redevient principal. Délai visé : bascule en moins de 30 minutes, redondance rétablie sous 2 jours ouvrés.
- Vérification.
SHOW REPLICA STATUS\Gsur le nouveau réplica (les deux fils àYes, retard à 0), sondes de supervision au vert, test de bascule rejoué en maquette. - Contacts. Administrateur d'astreinte, responsable de l'application de l'intranet.
Tu avais trouvé ?