Heartbeat, failover et quorum dans un cluster Windows ou Linux

Heartbeat, failover et quorum dans un cluster Windows ou Linux

Comment fonctionne les heartbeats et le failover dans les clusters SafeKit sur Windows ou Linux

Le mécanisme basique pour synchroniser deux serveurs et détecter les défaillances d'un serveur est le heartbeat (battement de cœur), qui consiste en un échange de petits paquets UDP entre les serveurs. Avec SafeKit, on peut mettre autant de heartbeats qu'il y a de réseaux connectant les deux serveurs.

Le mécanisme de heartbeat de SafeKit permet de mettre en œuvre des clusters Windows et Linux. Il est intégré aux autres fonctionnalités d'un module miroir et notamment à la réplication temps réel et continue dans un cluster actif-passif.

Dans une situation normale, les deux serveurs échangent leurs états (PRIM, SECOND, les états des ressources) à travers les heartbeats et synchronisent ainsi les procédures de démarrage et arrêt applicatif. Notamment en situation de basculement sur panne logicielle ou sur opération manuelle, le script d'arrêt de l'application est exécuté sur le serveur primaire, avant d'exécuter le script de démarrage sur le serveur secondaire. Ainsi on récupère des données répliquées sur le secondaire dans un état sain correspondant à un arrêt applicatif propre.

Si tous les heartbeats sont perdus, cela signifie que l'autre serveur est en panne. Le serveur local décide de devenir ALONE. S'il s'agit du serveur SECOND qui passe ALONE, il y a alors un failover applicatif avec relance de l'applicatif sur le serveur secondaire. Bien que non obligatoire, il est préférable d'avoir deux voies de heartbeats sur deux réseaux différents afin de distinguer une panne réseau d'une panne serveur.

Problème du quorum avec un cluster écarté entre deux salles machines

La plupart du temps, un cluster de haute disponibilité sécurisant une application critique dans un data center est mis en œuvre dans deux salles géographiquement distantes pour supporter le sinistre d'une salle complète.

Dans la situation d'une isolation réseau transitoire entre les 2 salles machines, le problème dit de split brain se pose. Les 2 serveurs peuvent exécuter l'application.

Avec un cluster de failover matériel, cette situation ne doit pas se produire car une double exécution signifie un accès concurrent au stockage partagé et une corruption potentielle des données de l'application critique. C'est pourquoi dans un cluster matériel, le mécanisme de quorum est mis en œuvre avec un troisième serveur de quorum ou un disque spécial de quorum ou même un reset hardware de la machine distante lorsque c'est possible.

Malheureusement, ce nouveau dispositif augmente le coût et la complexité de l'architecture de clustering global. Et le système n'est pas à l'abri d'un OS qui gèle: lorsque l'OS sort du gel, on se retrouve dans la situation de double exécution de l'application, même avec les mécanismes précédemment cités et avec un risque de corruption des données sur le stockage partagé entre les deux machines.

Simplicité du quorum dans un cluster SafeKit

Avec le logiciel de haute disponibilité SafeKit, la gestion du quorum dans un cluster Windows ou Linux ne nécessite pas de troisième serveur de quorum, ni de disque de quorum spécial, ni de reset hardware à distance. Un simple split brain checker est suffisant pour le quorum SafeKit et pour éviter la double exécution d'une application.

Le split brain checker, sur détection d’isolation réseau entre les serveurs, sélectionne un unique serveur pour devenir primaire. L’autre serveur devient non à jour et se bloque dans l’état WAIT, jusqu’à ce qu’il reçoive à nouveau les heartbeats de l’autre serveur, auquel cas il resynchronise automatiquement les données répliquées à partir de l'autre serveur.

L’élection du serveur primaire via le split brain checker de SafeKit repose sur le ping d’un composant externe, appelé witness (témoin). Le witness est typiquement un routeur qui ne tombe pas en panne. En cas d'isolation réseau, seul le serveur ayant accès au witness sera primaire ALONE, l'autre partira en WAIT. Le witness n'est pas testé en permanence mais uniquement lorsque le système bascule. Si au moment du basculement, le witness est down, le cluster part dans l'état WAIT-WAIT et un administrateur peut choisir de redémarrer l'un des nœuds en tant que primaire via l'interface web de SafeKit.

Envisageons le cas critique d'un gel OS ou d'une isolation réseau sans split brain checker configuré. Un cluster de haute disponibilité SafeKit supporte une double exécution d'une application critique sans corruption de données.  Dans ce cas, le serveur primaire continue d'exécuter l'application dans l'état ALONE. Et le serveur secondaire redémarre l'application et passe aussi dans l'état ALONE. Les répertoires répliqués sont isolés et chaque application en cours d'exécution travaille sur ses propres données dans son propre répertoire.

Lorsque le réseau est reconnecté, un sacrifice est réalisé en arrêtant l'application sur un des deux serveurs. Ce sacrifice arrête donc l'application sur un serveur et provoque la réintégration des données à partir de l'autre serveur primaire. Après cette réintégration, les données sont à nouveau en mode mirroir entre un serveur primaire et un serveur secondaire.

Notez que lorsque le cluster de haute disponibilité est basé surun disque partagé, il faut s'assurer qu'après un gel OS, le serveur qui sort du gel ne peut plus accéder au disque sinon c'est la corruption des données.

Toutes ces opérations sont automatiques. La complexité de gestion des heartbeats, du failover et du quorum dans le cluster est intégrée au produit SafeKit et transparent pour les utilisateurs de SafeKit. Ainsi, les personnes déployant SafeKit sans compétence particulière peuvent le faire sur deux serveurs standards locaux ou distants. De plus, la configuration est la même que ce soit un cluster Windows ou Linux.

Important: si vous choisissez une autre solution basée sur un disque partagé ou répliqué, il faut s'assurer qu'après un gel OS, le serveur qui sort du gel ne peut plus accéder au disque partagé  ou répliqué sinon deux serveurs accédant au même disque via son système de fichiers amène à une corruption des données.

Différenciateurs clés de la solution de réplication et de haute disponibilité avec le cluster miroir d'Evidian SafeKit

Cluster miroir d'Evidian SafeKit avec réplication de fichiers temps réel et reprise sur panne

Toutes les fonctionnalités de clustering All clustering features

Like  La solution inclut toutes les fonctionnalités de clustering: surveillance de la défaillance des serveurs, surveillance de la défaillance réseau, surveillance de la défaillance logicielle, redémarrage automatique de l'application avec un temps de reprise rapide, une adresse IP virtuelle basculée en cas de panne pour rerouter automatiquement les clients

Dislike  Ce n'est pas le cas avec les solutions de réplication pure comme la réplication au niveau base de données

Dislike  Un redémarrage rapide de l'application n'est pas assuré avec une réplication complète de machines virtuelles. En cas de panne d'un hyperviseur, une machine virtuelle doit être rebootée sur un nouvel hyperviseur avec un temps de redémarrage inconnu

Like   La configuration du cluster est très simple et réalisée au moyen d'un module de haute disponibilité applicatif. Il n'y a pas de contrôleur de domaine ou d'Active Directory à configurer sur Windows. La solution fonctionne sur Windows et Linux

Réplication synchrone Synchronous replication

Like  La réplication en temps réel est synchrone sans perte de données en cas de panne

Dislike  Ce n'est pas le cas avec une réplication asynchrone

Retour d'un serveur tombé en panne totalement automatisé (failback) Automatic failback

Like  Suite à une panne lorsqu'un serveur reboot, le retour du serveur tombé en panne se fait de manière totalement automatique dans le cluster avec une resynchronisation de ses données et sans arrêter l'application sur le seul serveur restant

Dislike  Ce n'est pas le cas avec la plupart des solutions de réplication particulièrement celles avec une réplication au niveau base de données. Des opérations manuelles sont requises pour resynchroniser le serveur défaillant. Il peut être même nécessaire d'arrêter l'application sur le seul serveur restant

Réplication de n'importe quel type de données

Like  La réplication fonctionne pour les bases de données mais aussi pour n'importe quel fichier qui doit-être répliqué

Dislike  Ce n'est pas le cas pour la réplication au niveau base de données

Réplication de fichiers vs réplication de disque File replication vs disk replication

Like  La réplication est basée sur des répertoires de fichiers qui peuvent être localisés n'importe où (même dans le disque système)

Disike  Ce n'est pas le cas avec la réplication de disque où une configuration spéciale de l'application est nécessaire pour placer les données applicatives dans un disque spécial

Réplication de fichiers vs disque partagé File replication vs shared disk

Like  Les serveurs peuvent être placés dans deux sites distants

Dislike  Ce n'est pas le cas avec les solutions à disque partagé

Sites distants Remote sites

Like  Toutes les fonctionnalités de clustering SafeKit fonctionnent pour 2 serveurs sur des sites distants. Les performances de la réplication dépendent de la latence d'interconnexion pour la réplication synchrone en temps réel et de la bande passante pour la resynchronisation des données sur un serveur défaillant.

Like   Si les deux serveurs sont connectés au même réseau IP via un réseau local étendu entre deux sites distants, l'adresse IP virtuelle de SafeKit fonctionne avec une redirection au niveau 2

Like   Si les deux serveurs sont connectés à deux réseaux IP différents entre deux sites distants, l'adresse IP virtuelle peut être configurée au niveau d'un load balancer. SafeKit propose un "health check": le load balancer est configuré avec une URL gérée par SafeKit qui renvoie OK sur le serveur primaire et NOT FOUND sinon. Cette solution est implémentée pour SafeKit dans le Cloud, mais elle peut être également mise en œuvre avec un load balancer sur site

Quorum Quorum

Like   Avec des sites distants, la solution fonctionne avec seulement 2 serveurs et pour le quorum (isolation réseau), un simple split brain checker vers un routeur est offert pour supporter une seule exécution

Dislike  Ce n'est pas le cas pour la plupart des solutions de clustering où un 3ième serveur est nécessaire pour le quorum

Solution de haute disponibilité uniforme Uniform high availability solution

Like  SafeKit implémente un cluster miroir avec une réplication et une reprise sur panne. Mais il implémente aussi un cluster ferme avec load balancing et reprise sur panne. Ainsi une architecture N-tiers peut-être rendue hautement disponible et load balancée avec la même solution sur Windows et Linux (même installation, configuration, administration avec la console SafeKit ou les commandes en ligne). Ceci est unique sur le marché

Dislike  Ce n'est pas le cas avec une architecture mixant des technologies différentes pour le load balancing, la réplication et la reprise sur panne

Exemples de modules miroirs

Cliquez sur le bouton bleu pour accéder à la solution

Modules miroirs (réplication et reprise sur panne)

Windows

Linux

Microsoft SQL Server-
Oracle
MySQL
PostgreSQL
Firebird
Hyper-V-
Milestone XProtect (basé sur Microsoft SQL Server)-
Hanwha SSM (basé sur PostgreSQL Server)-
Module miroir générique pour n'importe quelle application

FAQ sur Evidian SafeKit [+]