Qu’est-ce que la haute disponibilité?

introduction

Face à la demande croissante d’infrastructures fiables et performantes conçues pour desservir les systèmes critiques, les termes d’extensibilité et de haute disponibilité ne pourraient être plus populaires. La gestion d’une charge système accrue est une préoccupation commune, mais il est tout aussi important de réduire les temps d’arrêt et d’éliminer les points de défaillance uniques. La haute disponibilité est une qualité de la conception des infrastructures à grande échelle qui répond à ces dernières considérations.

Dans ce guide, nous verrons ce que signifie exactement haute disponibilité et comment elle peut améliorer la fiabilité de votre infrastructure.

Qu’est-ce que la haute disponibilité?

En informatique, le terme disponibilité est utilisé pour décrire la période de temps pendant laquelle un service est disponible, ainsi que le temps requis par un système pour répondre à une demande faite par un utilisateur. La haute disponibilité est la qualité d’un système ou d’un composant qui assure un haut niveau de performance opérationnelle pour une période de temps donnée.

Mesurer la disponibilité

La disponibilité est souvent exprimée en pourcentage indiquant le temps de disponibilité attendu d’un système ou d’un composant particulier sur une période donnée, la valeur de 100% indiquant que le système n’échoue jamais. Par exemple, un système garantissant 99% de disponibilité sur une période d’un an peut comporter jusqu’à 3,65 jours d’indisponibilité (1%).

Ces valeurs sont calculées en fonction de plusieurs facteurs, notamment les périodes de maintenance planifiée et non planifiée, ainsi que le temps nécessaire pour remédier à une éventuelle défaillance du système.

Comment fonctionne la haute disponibilité?

La haute disponibilité fonctionne comme un mécanisme de réponse aux pannes pour l’infrastructure. La façon dont cela fonctionne est assez simple d’un point de vue conceptuel, mais nécessite généralement des logiciels et une configuration spécialisés.

Quand la haute disponibilité est-elle importante?

Lors de la mise en place de systèmes de production robustes, la réduction des temps d’arrêt et des interruptions de service est souvent une priorité. Quels que soient le niveau de fiabilité de vos systèmes et de vos logiciels, des problèmes peuvent se produire et nuire à vos applications ou à vos serveurs. + + La mise en œuvre de la haute disponibilité pour votre infrastructure est une stratégie utile pour réduire l’impact de ces types d’événements. Les systèmes hautement disponibles peuvent récupérer automatiquement après une panne de serveur ou de composant.

Qu’est-ce qui rend un système hautement disponible?

L’un des objectifs de la haute disponibilité est d’éliminer les points de défaillance uniques de votre infrastructure. Un point de défaillance unique est un composant de votre pile technologique qui provoquerait une interruption de service si ce dernier devenait indisponible. En tant que tel, tout composant requis pour le bon fonctionnement de votre application sans redondance est considéré comme un point de défaillance unique. + + Pour éliminer les points de défaillance uniques, chaque couche de votre pile doit être préparée à la redondance. Par exemple, imaginez que vous disposiez d’une infrastructure composée de deux serveurs Web identiques et redondants derrière un équilibreur de charge. Le trafic provenant des clients sera distribué de manière égale entre les serveurs Web, mais si l’un des serveurs tombe en panne, l’équilibreur de charge redirige tout le trafic vers le serveur en ligne restant.

La couche de serveur Web dans ce scénario ne constitue pas un point d’échec unique pour les raisons suivantes:

  • les composants redondants pour la même tâche sont en place

  • le mécanisme au-dessus de cette couche (l’équilibreur de charge) est capable de détecter les défaillances des composants et d’adapter son comportement pour une récupération rapide

Mais que se passe-t-il si l’équilibreur de charge passe hors ligne?

Avec le scénario décrit, qui n’est pas inhabituel dans la vie réelle, la couche d’équilibrage de charge elle-même reste un point de défaillance unique. L’élimination de ce dernier point d’échec peut toutefois s’avérer difficile. Même si vous pouvez facilement configurer un équilibreur de charge supplémentaire pour assurer la redondance, il n’ya pas de solution évidente au-dessus des équilibreurs de charge pour implémenter la détection et la reprise sur incident.

La redondance ne peut à elle seule garantir une haute disponibilité. Un mécanisme doit être en place pour détecter les défaillances et prendre des mesures lorsque l’un des composants de votre pile devient indisponible.

La détection et la récupération des défaillances pour les systèmes redondants peuvent être implémentées en utilisant une approche de haut en bas: la couche supérieure devient responsable de la surveillance de la couche immédiatement inférieure pour détecter les défaillances. Dans notre exemple de scénario précédent, l’équilibreur de charge est la couche supérieure. Si l’un des serveurs Web (couche inférieure) devient indisponible, l’équilibreur de charge arrête de rediriger les demandes pour ce serveur spécifique.

image: https: //assets.digitalocean.com/articles/high-availability/Diagram_2.png [Diagramme 01: équilibreurs de charge / de haut en bas]

Cette approche a tendance à être plus simple, mais elle a des limites: il y aura un point dans votre infrastructure où une couche supérieure est inexistante ou inaccessible, comme dans le cas de la couche d’équilibrage de charge. La création d’un service de détection des défaillances pour l’équilibreur de charge sur un serveur externe créerait simplement un nouveau point de défaillance unique.

Avec un tel scénario, une approche distribuée est nécessaire. Plusieurs nœuds redondants doivent être connectés ensemble en tant que cluster, chaque nœud devant être capable de détecter et de récupérer les pannes.

image: https: //assets.digitalocean.com/articles/high-availability/Diagram_1.png [Diagramme 02: Cluster / distribué]

Cependant, dans le cas de l’équilibreur de charge, il existe une complication supplémentaire due au mode de fonctionnement des serveurs de noms. La récupération après un échec de l’équilibreur de charge signifie généralement un basculement vers un équilibreur de charge redondant, ce qui implique qu’une modification DNS doit être effectuée afin de pointer un nom de domaine vers l’adresse IP de l’équilibreur de charge redondant. Un changement comme celui-ci peut prendre un temps considérable pour se propager sur Internet, ce qui causerait un temps d’arrêt important pour ce système.

Une solution possible consiste à utiliser DNS, l’équilibrage de la charge à tour de rôle. Toutefois, cette approche n’est pas fiable car elle laisse le basculement de l’application côté client.

Une solution plus robuste et fiable consiste à utiliser des systèmes permettant un remappage d’adresses IP flexibles, tels que les https://www.digitalocean.com/community/tutorials/how-to-use-floating-ips-on-digitalocean ]. Le remappage d’adresse IP à la demande élimine les problèmes de propagation et de mise en cache inhérents aux modifications DNS en fournissant une adresse IP statique qui peut être facilement remappée en cas de besoin. Le nom de domaine peut rester associé à la même adresse IP, tandis que l’adresse IP elle-même est déplacée entre les serveurs.

Voici à quoi ressemble une infrastructure hautement disponible utilisant des adresses IP flottantes:

image: https: //assets.digitalocean.com/articles/high_availability/ha-diagram-animated.gif [Diagramme 03: IP flottantes]

Quels composants système sont requis pour la haute disponibilité?

Plusieurs composants doivent être soigneusement pris en compte pour mettre en pratique la haute disponibilité. Bien plus qu’une implémentation logicielle, la haute disponibilité dépend de facteurs tels que:

  • * Environnement: * si tous vos serveurs sont situés dans la même zone géographique, des conditions environnementales telles qu’un tremblement de terre ou une inondation peuvent entraîner la panne de votre système. Avoir des serveurs redondants dans différents datacenters et zones géographiques augmentera la fiabilité.

  • * Matériel: * Les serveurs à haute disponibilité doivent être résilients aux pannes de courant et aux pannes matérielles, y compris les disques durs et les interfaces réseau.

  • * Logiciels: * toute la pile de logiciels, y compris le système d’exploitation et l’application elle-même, doit être préparée à la gestion des défaillances imprévues pouvant par exemple nécessiter un redémarrage du système.

  • * Données: * Plusieurs facteurs peuvent être à l’origine de la perte et de l’incohérence des données, et cela n’est pas limité aux pannes de disque dur. Les systèmes hautement disponibles doivent prendre en compte la sécurité des données en cas de défaillance.

  • * Réseau: * Les pannes réseau non planifiées représentent un autre point de défaillance possible pour les systèmes hautement disponibles. Il est important de mettre en place une stratégie de réseau redondant en cas de défaillance éventuelle.

Quel logiciel peut-on utiliser pour configurer la haute disponibilité?

Chaque couche d’un système hautement disponible aura des besoins différents en termes de logiciel et de configuration. Cependant, au niveau de l’application, les équilibreurs de charge représentent un logiciel essentiel pour la création de toute configuration à haute disponibilité.

HAProxy (proxy haute disponibilité) est un choix courant pour l’équilibrage de la charge, car il peut gérer la charge. équilibrage sur plusieurs couches et pour différents types de serveurs, y compris https://www.digitalocean.com/community/tutorials/how-to-use-haproxy-to-set-up-mysql-load-balancing—​3 [ serveurs de base de données].

En montant dans la pile système, il est important de mettre en œuvre une solution redondante fiable pour votre point d’entrée d’application, généralement l’équilibreur de charge. Comme mentionné précédemment, pour supprimer ce point de défaillance unique, nous devons implémenter un cluster d’équilibreurs de charge derrière une adresse IP flottante. Corosync et Pacemaker sont des choix populaires pour créer une telle configuration, à la fois sur https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-corosync-pacemaker-and- floating-ips-on-ubuntu-14-04 [Ubuntu] et https://www.digitalocean.com/community/tutorials/how-to-create-a-high-availability-setup-with-pacemaker-corosync-and -floating-ips-on-centos-7 [CentOS].

Conclusion

La haute disponibilité est un sous-ensemble important de l’ingénierie de la fiabilité, axée sur la garantie qu’un système ou un composant présente un niveau de performance opérationnelle élevé sur une période donnée. À première vue, sa mise en œuvre peut paraître assez complexe. Toutefois, cela peut apporter d’énormes avantages aux systèmes exigeant une fiabilité accrue.

Related