Redis Sentinel

Redis Sentinel

Supposons un scénario où vous n'avez qu'une seule instance Redis dans votre production et il échoue à un moment donné pour une raison. Votre application cache les données dans le magasin de données Redis et maintenant votre seule source de données est morte. Une façon de contrôler ce type de scénarios est de maintenir l'architecture maître-esclave où les esclaves peuvent reproduire le nœud maître jusqu'à ce qu'il revienne. Les clusters Redis prennent en charge la haute disponibilité jusqu'à une certaine mesure avec l'approche maître-replice. Redis Sentinel est une autre approche qui fournit un moyen plus fiable de maintenir la haute disponibilité des instances Redis. Il surveille le nœud maître Redis pour les échecs et déclenche immédiatement le processus de basculement qui favorisera un nœud esclave existant à un tout nouveau maître.

De plus, Redis Sentinel agit comme un homme du milieu où les clients se connectent et demandent la dernière adresse IP du nœud maître. Ainsi, le Sentinel connecté fournit immédiatement l'adresse du nœud maître.

De plus, une défaillance du nœud maître est confirmée si plusieurs sentinelles ont convenu qu'un maître donné n'est pas accessible ou disponible. Cela conclut la phase de détection de défaillance et le processus de basculement commence immédiatement. Par conséquent, le Redis Sentinel peut être considéré comme un système distribué avec des propriétés spécifiques.

L'accord de Sentinelles est basé sur une valeur quorum qui sera discutée dans la section suivante.

Valeur quorum

La valeur du quorum est le nombre maximum de sentinelles qui doivent être convenues lorsque le nœud maître est en panne. Cette valeur est uniquement utilisée pour identifier une défaillance du nœud maître. Le processus de basculement commence par l'autorisation de plusieurs nœuds sentinelles disponibles pour poursuivre une sentinelle sélectionnée en tant que leader.

Caractéristiques de Redis Sentinel

La Sentinel est connue pour fournir un mécanisme de haute disponibilité pour le magasin de données redis. En dehors de cela, plusieurs autres capacités peuvent être répertoriées.

  • Sentinel surveille en permanence le statut des nœuds maître et esclave dans votre système redis.
  • Chaque fois qu'il y a un échec ou quelque chose qui ne va pas avec vos instances Redis, la sentinelle est capable de notifier l'administrateur ou les applications connectées à l'aide de l'API Sentinel.
  • La phase de basculement est dirigée par la Sentinelle en faisant la promotion d'une réplique en tant que nouveau maître. Répliques restantes configurées pour utiliser le nouveau maître. Enfin, les clients correspondants seront informés de la nouvelle adresse de nœud maître.
  • De plus, le redis Sentinel est un fournisseur de configuration pour les clients connectés où les clients peuvent demander l'adresse de l'instance de maître actuellement disponible et si un effondrement soudain s'est produit, la sentinelle s'est engagée à pousser la nouvelle adresse de nœud maître immédiatement.

Dans la section suivante, nous configurerons Redis Sentinelles avec des instances de maîtrise et utiliserons l'API Sentinel pour surveiller les nœuds.

Configuration de sentinelle

Tout d'abord, nous créons deux instances Redis aux ports 7000 et 7001. Le port 7000 sera le nœud maître et l'autre reproduit le maître. Les deux instances utilisent respectivement les fichiers de configuration suivants:

Configuration du nœud maître

Port 7000
NON compatible en cluster
nœuds en cluster-config-fichier.confli
cluster-node-timeout 5000
APPENDONLY OUI

Configuration du nœud esclave

Port 7001
NON compatible en cluster
nœuds en cluster-config-fichier.confli
cluster-node-timeout 5000
APPENDONLY OUI

Les deux instances commenceront par fournir le fichier de configuration associé à chaque. Nous pouvons utiliser la commande suivante pour démarrer séparément les instances Redis:

redis-server redis.confli

Connectons-nous à l'instance Redis démarrée au port 7001 comme suit:

redis-Cli -p 7001

Maintenant, nous pouvons faire de cette instance une réplique du maître qui s'exécute au port 7000. La commande réplique peut être utilisée comme suit:

réplique 127.0.0.1 7000

Comme prévu, l'instance exécutée au port 7001 est devenue le nœud de réplique du maître fonctionnant au port 7000.

Maintenant, nous sommes prêts à configurer trois sentinelles redis pour surveiller l'instance de maîtrise ci-dessus. Nous devons avoir trois fichiers de configuration pour créer trois instances Sentinel aux ports 5000, 5001 et 5002 comme indiqué dans les éléments suivants.

Chaque sentinelle.confli Le fichier ressemble à ce qui suit, sauf que le numéro de port sera modifié:

Port 5000
Sentinel Monitor Masternode 127.0.0.1 7000 2
Sentinel Down-After-Milliseconds Masternode 5000
Sentinel de basculement TimeOut Masternode 60000

Maintenant, il est temps d'exécuter les trois sentinelles. Vous pouvez utiliser l'exécutable redis-sentinel avec le chemin vers sentinelle.confli Fichier de configuration pour créer une instance sentinelle. Sinon, nous pouvons toujours appeler l'exécutable Redis-Server en spécifiant le chemin vers sentinelle.confli Et le drapeau -sentinelle.

Commençons chaque sentinelle en utilisant la commande suivante:

Sentinelle redis-server.confr --sentinel

La première sentinelle a été lancée au port 5000. De même, vous pouvez également commencer les deux autres instances.

Maintenant, notre configuration Redis Sentinel est opérationnelle comme indiqué dans l'illustration suivante:

Dans la section suivante, nous explorerons davantage sur l'API Sentinel et comment nous pouvons l'utiliser pour récupérer des informations liées au nœud maître redis.

API Sentinel

Redis fournit une API Sentinel séparée pour surveiller les maîtres et répliques associés, abonner aux notifications et modifier les paramètres sentinelles. De plus, plusieurs usages sont répertoriés dans les éléments suivants.

  • Vérifiez l'état des instances de maître redis et d'esclaves surveillées
  • Détails sur les autres sentinelles
  • Recevez des notifications de style push de Sentinels en cas de basculement

La commande Sentinel peut être utilisée avec ses sous-commandes associées pour interroger, mettre à jour ou définir les sentilles redis et les nœuds surveillés.

Vérifiez l'état du nœud maître

Il est très important de surveiller ou de vérifier la santé des nœuds maître de temps en temps. La commande API Sentinel suivante peut être utilisée pour récupérer les détails maîtres:

Maître Sentinel

surveillé_master_name: Le nom du nœud maître spécifié dans le fichier de configuration Sentinel que nous avons créé à l'étape précédente.

Utilisons cette commande pour interroger l'état maître dans notre configuration. Dans notre cas, le nom du nœud maître est 'MasterNode'.

Sentinel Master MasterNode

Plusieurs informations ont été récupérées et quelques-unes d'entre elles sont importantes, comme les esclaves, les drapeaux et les nombres.

Le drapeaux la propriété est définie sur maître ce qui signifie que le maître est en bonne santé. Chaque fois que le nœud maître est en panne, le s_down ou O_DOWN Le drapeau sera affiché. La propriété nombres est réglé sur 2, ce qui signifie que le Sentinel Redis a déjà reconnu les deux autres sentinelles du nœud maître. De plus, le num-esclaves la propriété affiche les répliques disponibles pour le nœud maître. Dans ce cas, il est défini sur 1 puisque nous n'avons qu'une seule réplique.

Obtenez des informations sur les répliques connectées

Nous pouvons vérifier les répliques connectées avec le nœud maître à l'aide de la commande Sentinel suivante:

Répliques sentinelles

Dans cet exemple, le nom de maître est «MasterNode».

Masternode des répliques Sentinel

Comme prévu, la sentinelle a détecté le nœud esclave fonctionnant au port 7001.

Obtenez des informations sur les sentinelles associées

De même, nous pouvons interroger les détails liés aux autres sentinelles associées au nœud maître actuel à l'aide de la sous-commande Sentinel suivante:

Sentinel Sentinelles

Dans ce cas, nous allons récupérer les informations liées au nœud maître nommé «MasterNode».

Sentinel Sentinels Masternode

Obtenez l'adresse du nœud maître

Comme mentionné dans la section précédente, Redis Sentinel est un fournisseur de configuration pour les clients connectés. Ainsi, il est capable de fournir l'adresse IP et le port du nœud maître en cours d'exécution aux clients demandés. La sous-commande API Sentinel suivante peut être utilisée pour récupérer les informations mentionnées.

Sentinel Get-Master-Addr-by-Name

Exécutons la commande ci-dessus pour notre scénario comme suit:

Sentinel Get-Master-Addr-by-Name MasterNode

Nous n'avons discuté que de quelques commandes API Sentinel. Plusieurs autres sous-commandes sont disponibles telles que Sentinel-Failover, Sentinel Info-Cache, Sentinel Masters, et etc. En outre, de nombreuses commandes sont également disponibles à des fins d'administration. Dans la section suivante, nous nous concentrerons sur le processus de basculement de Redis Sentinel.

Processus de basculement Sentinel

Étant donné que notre sentinelle est configurée, nous pouvons tester la phase de mise en panne. Envoyons notre nœud maître pour dormir pendant 300 secondes, ce qui simule une défaillance dans le nœud maître.

Debug Sleep 300

Le nœud maître qui s'exécute au port 7000 devrait être inaccessible maintenant. Ainsi, les sentinelles associées remarqueront que le maître n'est pas disponible avec le +sot événement. Ensuite, cela sera défini sur +faire passer où 2 sentinelles confirment que le nœud maître est en panne en fonction de la valeur du quorum. Enfin, la phase de basculement commencera et, idéalement, la réplique devrait être promue au nouveau maître.

Vérifions l'adresse IP du nœud maître et le port à nouveau.

Sentinel Get-Master-Addr-by-Name MasterNode

Comme prévu, la réplique précédente a été promue au nouveau maître, ce qui signifie que le processus de basculement Sentinel est réussi. Ceci conclut le déploiement et les tests de nos trois configurations sentinelles pour une paire de maître-replice unique.

Conclusion

Redis Sentinel est l'approche la plus fiable pour garantir la haute disponibilité d'une instance de réplique Master Redis donnée. Une sentinelle est capable de surveiller, de notifier et de lancer un basculement automatique sans intervention humaine. De plus, plusieurs sentinelles ensemble s'accordent sur le fait que le nœud maître est inaccessible et que la valeur du quorum est utilisée comme nombre maximum de sentinelles qui doivent être convenues lors de la vérification de la disponibilité de l'instance de maître. Redis Sentinel propose une API facile à utiliser pour récupérer des informations sur la santé du nœud maître et des répliques associées et effectuer également des tâches administratives.