Aller au contenu
Réussir mon BTS SIO

Tape une notion, une commande ou le nom d'une épreuve.

Par exemple

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 :

  1. 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. »
  2. 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.
  3. Prévenir les utilisateurs concernés, même si aucune coupure n'est attendue.
  4. 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.
  5. 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 :

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énarioComment le provoquerCe qu'il vérifie
Arrêt propre d'un nœudsystemctl stop keepalived, arrêt du systèmeLa bascule « polie » : le nœud prévient qu'il s'en va
Panne brutaleArrêt forcé de la VM (Stop dans Proxmox, pas Shutdown), câble débranché, alimentation coupéeLa détection par absence d'annonces, la vraie durée de bascule
Panne du service seulsystemctl stop haproxy sur un nœud vivantLe suivi : la priorité baisse-t-elle, le secours prend-il le relais ?
Panne d'un composant internemdadm --fail sur un disque, interface d'agrégat désactivéeLa tolérance de panne, et surtout l'alerte
Coupure entre les nœudsDébrancher le lien entre deux nœuds d'un cluster, en maquette uniquementLe quorum et le fencing : un seul groupe garde-t-il les ressources ?
Retour du composantRedémarrer le nœud arrêtéLa préemption : y a-t-il une seconde coupure, la configuration est-elle restée cohérente ?
ChargeFaire tourner un outil de test de charge pendant la panneLe survivant tient-il seul la charge normale ?
Coupure électriqueDébrancher l'onduleur du secteur, en dehors des heures de serviceL'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°TestActionRésultat attenduRésultat obtenuConforme
T1Répartition6 appels de qui.html sans cookieRéponses alternées web1 et web2web1, web2, web1, web2, web1, web2Oui
T2Panne d'un serveur webArrêt de Nginx sur WEB2WEB2 retiré en moins de 10 s, aucune erreur côté clientRetiré en 6 s, aucune erreur (redispatch)Oui
T3Retour du serveur webRedémarrage de Nginx sur WEB2WEB2 réintégré en moins de 10 sRéintégré en 4 sOui
T4Panne brutale du répartiteur actifArrêt forcé de la VM LB1VIP reprise par LB2, coupure inférieure à 5 s19 paquets perdus sur un ping toutes les 0,2 s : 3,8 sOui
T5Panne de HAProxy seulsystemctl stop haproxy sur LB1LB2 prend la VIP (priorité de LB1 à 120)VIP sur LB2 en 5 sOui
T6Retour de LB1Redémarrage de LB1LB1 reprend la VIP (préemption), coupure inférieure à 2 sCoupure de 0,4 sOui
T7Panne d'un hyperviseurArrêt forcé de pve2, qui porte WEB2Intranet sans coupure ; WEB2 redémarré sur un autre nœud en moins de 5 minAucune coupure ; WEB2 de nouveau UP après 3 min 10 sOui
T8AlertesPendant T2 à T7Une alerte par panne, reçue par courriel en moins de 2 minReçues, sauf pour T5 : aucune alerte sur la bascule VRRPNon

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 :

  1. 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.
  2. Chaque membre de chaque redondance, séparément : sinon, la panne d'un membre reste invisible.
ÉlémentIndicateurAlerte
Service intranet (VIP)Code 200 en moins de 5 sDésastre après 2 échecs consécutifs
Chaque serveur web/sante interrogée directement sur .31 et .32Haute
HAProxyNombre de serveurs UP dans le groupe web_intranetAvertissement si inférieur à 2
keepalivedChangement d'état dans le journal ; un seul des deux nœuds porte la VIPAvertissement à chaque bascule ; haute si les deux portent la VIP
RAID/proc/mdstat contient un disque absent (_)Haute
Réplication de la baseSlave_SQL_Running et Slave_IO_Running ; retard Seconds_Behind_MasterHaute si arrêtée ; avertissement au-delà de 60 s de retard
Active DirectoryÉchecs de repadmin /replsummary ; services NTDS et DNSHaute
DHCPÉtat du basculement ; taux d'occupation de l'étendueHaute si le partenaire est hors service ; avertissement au-delà de 90 %
Cluster Proxmox VEQuorum ; état des ressources HADésastre si le quorum est perdu
OnduleurSur batterie ; autonomie restante ; état de la batterieHaute sur batterie, désastre sous 10 minutes d'autonomie
CertificatsDate d'expiration sur chaque répartiteurAvertissement à 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 :

  1. La situation : quelle panne, comment on la reconnaît (l'alerte reçue, les symptômes).
  2. L'impact : ce qui fonctionne encore, ce qui ne fonctionne plus, les performances attendues.
  3. Le risque : ce qui se passera à la prochaine panne.
  4. Les actions immédiates, dans l'ordre, avec les commandes.
  5. La communication : qui prévenir, avec quel message.
  6. Le retour à la normale : la procédure pour rétablir la redondance, et le délai visé.
  7. La vérification : comment prouver que tout est revenu à l'état nominal.
  8. 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 ».

  1. Estime la durée de la coupure.
  2. Ce résultat est-il cohérent avec VRRP réglé sur une annonce par seconde ?
  3. 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
  1. 300 − 281 = 19 paquets perdus, à 0,2 seconde d'intervalle : environ 3,8 secondes.
  2. 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.
  3. 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 curl sur 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.

  1. L'intranet ne répond plus sur la VIP depuis 2 minutes.
  2. LB2 est arrêté ; LB1 porte la VIP et l'intranet répond.
  3. Le disque sdc de WEB1 est sorti de son RAID 1.
  4. La réplication de la base a 8 secondes de retard pendant la sauvegarde nocturne.
  5. 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
  1. 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.
  2. Haute : le service fonctionne, mais sans redondance. Intervention le jour ouvré, pas la nuit.
  3. Haute : le serveur fonctionne sur un seul disque, et WEB2 assure de toute façon le service. Remplacement du disque rapidement, en journée.
  4. 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.
  5. 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 /sante en 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 /sante sur 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\G sur 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é ?

Chapitre terminé !

Fais les 4 exercices avant de passer à la suite : c'est en t'entraînant que tout se fixe.

chapitres
–
de série
–
du cours
–
Chapitre suivant : Réalisation type E6 SISR : un intranet hautement disponibleRevoir le sommaire du cours