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.
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.
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.