Dans cet article, je souhaite montrer comment il est facile et gratuit de mettre en place un schĂ©ma de basculement pour un site web (ou tout autre service Internet) en combinant la surveillance et un service DNS dynamique. En d'autres termes, en cas de problĂšme avec le site principal (que ce soit une erreur « PHP », un manque d'espace ou simplement un nombre de commandes suspectement bas dans le cas d'un e-commerce), les nouveaux visiteurs seront redirigĂ©s vers un serveur secondaire (tertiaire, etc.) qui fonctionne dĂ©jĂ , ou vers une page « DĂ©solĂ© », oĂč il leur sera poliment expliquĂ© qu'« il y a un problĂšme, nous en sommes informĂ©s et nous le rĂ©parons, cela sera corrigĂ© sous peu » (et dans ce cas, vous serez dĂ©jĂ au courant et pourrez effectuer la rĂ©paration).
Vivre avec ou sans basculement ?
Tant qu'il n'y a pas de problÚme, cela ne fait pas vraiment de différence. Mais quand il y a un problÚme, sans basculement, il se passe souvent ceci : vous essayez de comprendre rapidement la source du problÚme, sans succÚs (les sauvegardes ne se déploient pas, le logiciel ne fonctionne pas comme il devrait selon la documentation, etc.), et le temps presse, les serveurs/sites sont en panne, les clients appellent, tout le monde est nerveux, vous tentez de réparer de maniÚre approximative et chaotique, puis ça redémarre plus ou moins avec des rustines et ça continue. Vous pensez qu'il faudra un jour approfondir le sujet et tout refaire correctement, mais rien n'est plus permanent qu'un temporaire.
Maintenant, voyons comment cela se passe dans une version optimale avec un basculement :
- L'erreur se produit
- L'erreur est détectée automatiquement
- Une notification est envoyée
- La bascule vers un des serveurs de secours est effectuée
- On gÚre le problÚme tranquillement et sans panique, on corrige l'erreur et le serveur est à nouveau opérationnel.
Dans ce schĂ©ma, il peut Ă©galement y avoir des soucis, mais en fin de compte, le processus est linĂ©aire, chaque Ă©tape est simple et surtout â elle peut ĂȘtre testĂ©e sĂ©parĂ©ment, donc le risque d'Ă©chec de ce schĂ©ma est bien plus faible, et toutes les actions peuvent ĂȘtre automatisĂ©es et exĂ©cutĂ©es rapidement (contrairement Ă la tĂąche de trouver et de corriger une erreur Ă©pique inexplicable). Votre avion a atterri dans un pays lointain, vous allumez votre tĂ©lĂ©phone et voyez dans Telegram qu'une notification indique que le serveur est tombĂ©, mais tout va bien, le serveur de secours a Ă©tĂ© activĂ©, vous pouvez continuer votre voyage, vous n'avez pas besoin de retourner ou de rĂ©parer par SSH depuis le cafĂ© le plus proche avec WiFi. Vous vous occuperez de cela quand cela vous conviendra mieux.
Le futur est déjà là !
Auparavant, le principal problĂšme qui rendait le failover souvent inacceptable Ă©tait le coĂ»t Ă©levĂ© associĂ©. Il fallait soit acheter du matĂ©riel coĂ»teux (et faire appel Ă des spĂ©cialistes encore plus onĂ©reux), soit bricoler quelque chose de complexe en suivant des guides (je suis mĂȘme tombĂ© sur un exemple oĂč deux serveurs Ă©taient reliĂ©s par un cĂąble null modem, Ă©changeant des signaux heartbeat pour que le serveur secondaire sache Ă quel moment prendre le relais). Aujourd'hui, il existe des solutions plus simples et gratuites. Si vous avez un site de chats, il nây a aucune excuse pour ne pas avoir mis en place le failover !
En outre, un serveur (ou peut-ĂȘtre plusieurs) est nĂ©cessaire pour le schĂ©ma de failover, et cela engendrait des coĂ»ts importants par le passĂ©. Maintenant, vous pouvez obtenir un VDS pour une bouchĂ©e de pain.
Le site le plus fiable sur les chats
Pour illustrer pratiquement la solution avec okerr + dns dynamique, nous avons lancĂ© notre propre site de chats . Nous dĂ©testons les chats, donc il y en aura presque pas. Il y a au total trois sites, chacun ressemblant Ă peu prĂšs Ă l'autre (tous sur le mĂȘme modĂšle), mais avec diffĂ©rents chatons pour faciliter la distinction, et chacun fournit des informations techniques pour observer le fonctionnement du failover. La page se met Ă jour automatiquement toutes les minutes, mais vous pouvez toujours cliquer sur recharger dans votre navigateur.
Dans les informations techniques, il y a une ligne « status=OK ». De temps en temps, les serveurs simulent des problĂšmes et indiquent status=ERR. Le serveur principal « tombe » Ă 20 minutes de chaque heure (0:20, 1:20, 2:20, âŠ). Le serveur de secours (backup) le fait Ă 40 minutes. Le dernier serveur (« sorry »-server) fonctionne toujours. Ă 0 minute de chaque heure, le serveur principal et le serveur de secours « redĂ©marrent ».

Si vous ouvrez le site et le laissez dans un onglet, vous constaterez qu'il ne tombe jamais (bien que chaque serveur individuel simule pĂ©riodiquement un problĂšme), et en cas de problĂšme avec un serveur, il « court » simplement entre les serveurs actifs. L'image, le nom et l'adresse du serveur ainsi que son rĂŽle changeront. Parfois, vous pouvez attraper le moment oĂč status=ERR (le problĂšme est dĂ©jĂ lĂ , mais tout le schĂ©ma de failover n'a pas encore rĂ©agi), mais la mise Ă jour suivante vous montrera la page d'un serveur actif.
Failover sur okerr + DNS dynamique
Voyons comment cela fonctionne en coulisses. La tĂąche du failover est de garantir que l'adresse cat.okerr.com pointe toujours vers l'adresse IP du serveur actif.
Pour chacun des serveurs qui maintiennent notre site de chats à okerr, il y a un indicateur qui vérifie son état une fois par minute.

Sur cette capture d'Ă©cran, nous voyons comment le site cat.okerr.com est vĂ©rifiĂ© depuis le serveur alpha.okerr.com. La page doit contenir status=OK, et comme nous pouvons le voir en haut, l'Ă©tat de l'indicateur est actuellement OK. Lorsque le serveur tombe en panne, l'indicateur affichera ERR. (Ceci n'est qu'un exemple d'indicateur, okerr est un service de surveillance, donc nous pouvons attacher n'importe quel type d'indicateur, par exemple, vĂ©rifier l'espace disque libre, le nombre de nouvelles commandes dans la base, et mĂȘme des indicateurs logiques, par exemple, la nuit, il y aura des critĂšres d'erreur diffĂ©rents que le jour).
Dans les paramÚtres du projet, nous avons créé un schéma de basculement avec ces indicateurs :

Le schĂ©ma comporte trois indicateurs (trois serveurs), de diffĂ©rentes prioritĂ©s. Le serveur principal pour le site est charlie, s'il ne fonctionne pas (ne sera pas 'status=OK' ou est simplement inaccessible), alors bravo et dans le dernier cas â alpha. Dans la partie droite de la page, l'Ă©tat de l'enregistrement DNS sur diffĂ©rents serveurs est affichĂ©.
Pour ceux qui ont remarqué l'utilisation du nom cat.he.okerr.com : Nous utilisons un schéma un peu plus complexe. Au lieu de simplement modifier l'enregistrement DNS de cat.okerr.com, nous modifions cat.he.okerr.com (sur le fournisseur de DNS dynamique ), et cat.okerr.com est un CNAME (alias), qui ne change pas, indiquant toujours vers cat.he.okerr.com. Nous préférons Hurricane comme DNS dynamique, et il dispose de clés pour gérer un enregistrement spécifique (et non toute la zone), ce qui nous semble plus sûr. Vous pouvez également ne pas spécifier de mots de passe-clés dans okerr pour gérer tout le domaine, mais seulement pour le sous-domaine ou l'enregistrement.
De la chute à la remontée
Ătape par Ă©tape, voici comment fonctionne ce schĂ©ma :
- Un problÚme se produit (simulé) sur le serveur
- Le capteur okerr vérifie l'état de chaque serveur chaque minute et informe le serveur principal du projet à okerr
- L'indicateur du serveur concerné change d'état de OK à ERR
- Lors du changement de statut de l'indicateur, le basculement est recalculĂ©, et l'adresse Ă dĂ©finir est dĂ©terminĂ©e (si besoin. Par exemple, si le serveur principal fonctionne, mais que le secours est tombĂ© en panne â il n'y aura aucun changement)
- Cette adresse est communiquée au service DNS dynamique. Une fois cette étape terminée, à droite, vous verrez le statut 'synced'
- BientĂŽt (en quelques secondes), l'enregistrement atteindra les serveurs DNS de votre domaine (pour le site de chat, il s'agit de ns1-ns5.he.net).
- Ă partir de maintenant, certains utilisateurs commenceront Ă accĂ©der au nouveau serveur en direct. Cependant, tous les serveurs DNS dans le monde n'ont pas encore mis Ă jour leurs enregistrements, et il se peut que l'ancien enregistrement soit encore mis en cache quelque part. On peut voir comment les donnĂ©es sur les serveurs DNS publics "dansent", montrant tantĂŽt la nouvelle, tantĂŽt l'ancienne valeur. Si vous actualisez la page de configuration du failover, okerr demandera lui-mĂȘme de nouvelles donnĂ©es aux serveurs DNS.
- Une fois que les donnĂ©es se stabilisent, l'ancien enregistrement mis en cache a disparu de partout â 100 % des requĂȘtes vont au nouveau serveur.
Pour accélérer la 7e étape (souvent la plus longue), il faut définir le TTL de l'enregistrement DNS dynamique aussi bas que possible. En général, les services autorisent des intervalles de 90 à 120 secondes. C'est un compromis tout à fait raisonnable.
Supplémentaire
Tout cela peut ĂȘtre configurĂ© en une soirĂ©e (si vous avez dĂ©jĂ un serveur de secours). Et okerr ainsi que les services DNS dynamiques sont gratuits. Pour obtenir davantage de vĂ©rifications dans okerr et un dĂ©lai de vĂ©rification plus court, il faut suivre une formation (sur la page du profil). AprĂšs cela, le niveau augmente immĂ©diatement (20 indicateurs par heure + 1 rapide, de 10 minutes). Et s'il y en a peu â Ă©crivez Ă support@okerr.com, il y a de fortes chances qu'on puisse augmenter (jusqu'Ă prĂ©sent, il y a toujours eu une possibilitĂ©, je n'ai jamais Ă©tĂ© refusĂ©, au contraire, j'ai moi-mĂȘme proposĂ©). Je ne veux juste pas promettre Ă tout le monde tout, car je ne suis pas sĂ»r d'avoir assez de ressources pour tenir ma parole. Mais pour l'instant, il y a peu d'utilisateurs, donc il n'y a pas de problĂšme pour augmenter les limites.
Que peut faire okerr en gĂ©nĂ©ral â consultez le site . En fait, il s'agit de surveillance (Zabbix dans le cloud), et le fichierur est une fonction supplĂ©mentaire agrĂ©able. De plus, on peut accĂ©der Ă une dĂ©mo sans inscription depuis le site.
Lors de la modification de l'Ă©tat de l'indicateur, une notification est envoyĂ©e par e-mail ou sur Telegram. (Nous avons observĂ© ce qui se passe et rĂ©alisĂ© que, apparemment, Telegram est le messager le plus fiable. Merci au RKN pour le test de stress !) Avec un rĂ©glage correct de okerr, toute notification est soit un signal "laissez tout tomber, il faut rĂ©parer !", soit "tout va bien !". Il ne devrait pas y avoir d'alertes superflues de la part d'okerr (s'il y en a, il faut configurer diffĂ©remment). Par exemple, pour notre site dĂ©diĂ© aux chats, le serveur alpha est le dernier et n'imite jamais une erreur. S'il s'Ă©croule â nous devons le savoir. En revanche, les autres serveurs simulent constamment des erreurs, donc, pour ne pas recevoir d'alertes plusieurs fois par heure, ces indicateurs ont le statut "silencieux".
Il est Ă©galement judicieux de crĂ©er un serveur de secours (sur n'importe quel hĂ©bergement bon marchĂ©) qui aura soit votre page d'excuses (au cas oĂč tous les serveurs principaux et de secours seraient hors ligne), soit un redirection vers la page d'Ă©tat sur okerr (comme notre ) ou statuspage.io.
Source : habr.com
