Maison >base de données >Redis >Redis Sentinel Principe, je vous tolère depuis longtemps !

Redis Sentinel Principe, je vous tolère depuis longtemps !

咔咔
咔咔original
2020-08-28 17:22:161817parcourir

Il y a un dicton sur le rôle de la réplication maître-esclave Redis : « La réplication maître-esclave est la pierre angulaire de la haute disponibilité. » Alors, qu'est-ce que la haute disponibilité ? la disponibilité est de réduire le système Le temps qui ne peut pas être fourni est la référence communément entendue aux six 9 et les clusters sont essentiels pour atteindre la haute disponibilité. Cet article présente principalement le mécanisme sentinelle. Avant-propos

Kaka a compilé une feuille de route pour créer un guide d'entretien , je prévois d'écrire des articles selon cette feuille de route, et je le ferai ajoutez quelques points de connaissances qui ne seront pas inclus plus tard. J'ai également hâte de vous voir dans la zone de commentaires !
Redis Sentinel Principe, je vous tolère depuis longtemps !
Insérer la description de l'image ici

Le contenu principal de cet article Présentation de Sentinel autour des aspects suivants

  • Présentation de Sentinel
  • Configuration de Sentinel
  • Principe de fonctionnement de Sentry

Environnement de mise en œuvre de cet article

  • centos7.3 redis4.0
  • répertoire de travail redis /usr/local/redis
  • Exécuter opération de simulation dans une machine virtuelle
    > Il existe une situation où le nœud maître est en panne. Qui fournira le service
Lorsque le nœud maître est en panne, la réplication maître-esclave n'a aucun sens. ère où les données sont reines, à quoi ça sert sans données ? Haute disponibilité

A cette époque, un grand frère nommé est apparu, et le grand frère a dit que je t'aiderai à résoudre ce problème. problème.

Puisque le maître du nœud maître, en tant que patron, ne vous laissera pas jouer. Je sélectionnerai un patron parmi vous quatre, puis vous jouerez avec lui.

Lorsque le patron qui ne joue pas avec vous reviendra, son identité sera invalidée et il ne sera plus votre patron. Il ne peut jouer qu'avec le boss que j'ai sélectionné.

La conversation ci-dessus porte sur la signification de la configuration des sentinelles. Celui qui joue avec elles donnera des données à qui. Une fois que nous connaîtrons le rôle des sentinelles, nous continuerons.

"Enfin, nous utilisons des termes professionnels pour expliquer ce qu'est une sentinelle."

Sentinel, le nom anglais est sentinel, est un système distribué pour une structure maître-esclave Chaque serveur du serveur effectue 监控 Lorsque le nœud maître échoue, un nouveau nœud maître est sélectionné via le mécanisme de vote et tous les nœuds esclaves sont connectés au nouveau nœud maître.

2. Le rôle de la sentinelle

Le processus de dialogue dont nous avons parlé plus haut est l'une des fonctions de la sentinelle.

Quand il s'agit de fonctionner, cela doit être exactement ce que cette sentinelle fait au travail. Décrivons-le d'abord dans un concept relativement sec, puis parlons des principes de fonctionnement un par un ci-dessous.

Trois fonctions des sentinelles监控、通知、自动转移故障

  • Surveillance
    • Qui est surveillé ? Pour prendre en charge la structure maître-esclave, l’un est le nœud maître et l’autre le nœud esclave, il doit donc surveiller ces deux-là.
    • Surveiller si le nœud maître et les nœuds esclaves fonctionnent normalement
    • Détecter si le nœud maître est vivant et l'état d'exécution du nœud maître et nœuds esclaves
  • Notification
    • Lorsqu'il y a un problème avec le serveur détecté par le Sentinel, des notifications seront envoyé à d'autres Sentinelles. Les Sentinelles sont équivalentes à un groupe WeChat, chaque problème découvert par la sentinelle sera publié dans ce groupe.
  • Basculement automatique
    • Lorsque le nœud maître est détecté comme étant en panne, déconnectez-vous du nœud maître en panne de tous nœuds esclaves, sélectionnez l'un des nœuds esclaves comme nœud maître, puis connectez d'autres nœuds esclaves à ce dernier nœud maître. Et informez le client de la dernière adresse du serveur.

Une chose à noter ici est que Sentinel est également un serveur Redis, mais il ne fournit aucun service au monde extérieur.

Configurer comme nombre impair lors de la configuration de la sentinelle. Alors pourquoi configurer le nombre de serveurs Sentinel sur un nombre impair ? Avec cette question, vous trouverez ci-dessous la réponse que vous souhaitez.

2. Comment configurer la sentinelle

1. >

Dans ce chapitre, nous commençons à configurer la sentinelle et à préparer les travaux préliminaires. L’image ci-dessous montre les préparatifs de Kaka. Démarrez 8 clients, trois sentinelles, un nœud maître, deux nœuds esclaves, un client de nœud maître et un client de nœud esclave.

Redis Sentinel Principe, je vous tolère depuis longtemps !

2. Interprétation de la configuration Sentinel.conf

Le fichier de configuration utilisé par sentinel est sentinel.confRedis Sentinel Principe, je vous tolère depuis longtemps ! Analysons sentinel Interprétez les informations de configuration du .confRedis Sentinel Principe, je vous tolère depuis longtemps !Mais la plupart sont des commentaires. Ici, Kaka vous propose une commande pour filtrer ces informations inutilescat sentinel.conf | grep -v '#' | grep -v '^$'Redis Sentinel Principe, je vous tolère depuis longtemps !

.
  • port 26379 : numéro de port de service externe
  • dir /tmp : stockage des informations de travail de la sentinelle
  • sentinelle surveiller mymaster 127.0.0.1 6379 2 : Qui est surveillé ? Le nom peut être personnalisé. Le 2 derrière signifie que si deux sentinelles déterminent que le nœud maître est en panne, alors le nœud maître sera généralement défini sur le. nombre de sentinelles. La moitié plus une.
  • sentinelle en panne après millisecondes mymaster 30000 : combien de temps il faut à la sentinelle pour se connecter au nœud maître sans répondre, ce qui signifie qu'elle est en panne. Les 30 000 suivants correspondent à des millisecondes, soit 30 secondes.
  • sentinel parallel-syncs mymaster 1 : cet élément de configuration fait référence au nombre maximum de nœuds esclaves pouvant se synchroniser avec le nouveau nœud maître lors du basculement. Plus la valeur est petite, plus le basculement prendra du temps. Plus la valeur est grande, plus les nœuds esclaves seront indisponibles en raison de la synchronisation des données.
  • sentinel failover-timeout mymaster 180000 : Pendant le processus de synchronisation, le temps nécessaire à l'exécution est considéré comme effectif. La valeur par défaut du système est de 3 minutes.

3. Commencez à configurer

Utilisez la commande cat sentinel.conf | grep -v '#' | grep -v '^$' > ./data/sentinel-26379.conf pour filtrer la sentinelle. conf Déplacez les informations finales vers /usr/local/redis/confRedis Sentinel Principe, je vous tolère depuis longtemps ! puis ouvrez sentinel-26379.conf pour modifier le répertoire de stockage des informations Redis Sentinel Principe, je vous tolère depuis longtemps ! puis copiez rapidement les deux fichiers de configuration sentinelle, les ports sont 26380 et 26381. sed 's/26379/26381/g' sentinel-26379.conf > sentinel-26381.conf

Redis Sentinel Principe, je vous tolère depuis longtemps !
Insérer la description de l'image ici

Testez la réplication maître-esclave en état de fonctionnement normal, démarrez trois serveurs Redis, les ports sont 6379、6380、6381 Redis Sentinel Principe, je vous tolère depuis longtemps !En regardant les informations du nœud maître, il y a deux nœuds esclaves connectés et les ports sont respectivement 6380 et 6381.

Un petit point ici c'est que l'un des décalages est à 1 et l'autre à 0 ! le décalage est le temps de retard. Je teste localement, il y aura donc une situation de 0. Cela arrive rarement lors de l'utilisation d'un serveur cloud. Les valeurs de décalage sont 0 et 1, ce qui est normal. Redis Sentinel Principe, je vous tolère depuis longtemps !Testez le nœud maître pour ajouter une valeur de hachage, hset kaka name kakaRedis Sentinel Principe, je vous tolère depuis longtemps !obtenez la valeur kaka de slave1 et slave2 respectivement, et vérifiez si la réplication maître-esclave fonctionne normalement.

Après les tests, notre structure maître-esclave fonctionne normalement. Redis Sentinel Principe, je vous tolère depuis longtemps !Redis Sentinel Principe, je vous tolère depuis longtemps !Démarrer une sentinelleredis-sentinel 26379-sentinel.confRedis Sentinel Principe, je vous tolère depuis longtemps !Connectez-vous à 26379 sentinelles, principalement la dernière ligne. Le nœud maître surveillé s'appelle mymaster, l'état est normal, il y a deux nœuds esclaves et le nombre de sentinelles est. 1Redis Sentinel Principe, je vous tolère depuis longtemps ! Vérifions les informations de configuration de la sentinelle de 26379. Elles ont été modifiées en ce moment Redis Sentinel Principe, je vous tolère depuis longtemps ! démarre une 26380 sentinelle redis-sentinel 26380-sentinel.conf, veuillez noter qu'il y a une information supplémentaire dans la dernière ligne. . Cet identifiant est notre nouveau 26379 identifiant ajouté Redis Sentinel Principe, je vous tolère depuis longtemps ! Ensuite, nous sommes arrivés au client de Sentinel 26379, qui a également ajouté l'identifiant de 26380 Sentinel Redis Sentinel Principe, je vous tolère depuis longtemps ! À ce moment-là, nous vérifiions le fichier de configuration de 26379. Sentinel. Lorsque nous avons vérifié le fichier de configuration pour la première fois, 26380 n'était pas configuré. Pour Sentinel, les informations ajoutées après 26380 Sentinel ont été configurées lors de sa deuxième visualisation. Redis Sentinel Principe, je vous tolère depuis longtemps !Enfin, nous devons démarrer le client Sentinel 3, le numéro de port est 26381. Après le démarrage, nos informations de configuration et celles du serveur seront également modifiées. Si nous ajoutons les informations de Sentinel 26380, Sentinel 26381 les aura également.

Jusqu'à présent, notre configuration de Sentinel est terminée. Ensuite, nous allons arrêter le master node master Redis Sentinel Principe, je vous tolère depuis longtemps !Après 30 secondes d'attente, nous sommes arrivés au client de 26379 Sentinel. a été ajouté ici. Alors, à quoi servent ces informations ? Décomposons-le.

Redis Sentinel Principe, je vous tolère depuis longtemps !Nous devons d'abord connaître certaines informations ici

  • +sdown : Cette information signifie que l'une des trois sentinelles pense que le nœud maître est en panne
  • +odown : Cette information signifie que les deux autres sentinelles se sont connectées au nœud maître et ont constaté que le nœud maître était effectivement en panne
  • puis initiées après un tour de vote, Kaka utilise ici redis4.0. Ces informations sont légèrement différentes selon les versions
  • +switch-master mymaster 127.0.0.1 6379 127.0.0.1 6380 : Jusqu'à Voici les résultats du vote initié par Sentinel Le redis avec le port 6380 est élu comme nœud maître
  • +esclave esclave 127.0.0.1:6381 127.0.0.1 6381 @ mymaster 127.0.0.1 6380 : Le voici. Établissez une connexion entre les ports 6381 et 6379 et le nouveau nœud maître 6380
  • +sdown slave 127.0.0.1:6379 127.0.0.1 6379 @ mymaster 127.0.0.1 6380 : La dernière phrase est The Le serveur avec le port 6379 n'était toujours pas en ligne, il a donc été mis hors ligne

Lorsque nous avons remis le serveur Redis de 6379 en ligne, nous pouvons voir que le serveur Sentinel a répondu avec deux phrases. Une phrase consiste à supprimer 6379 hors ligne. La dernière phrase consiste à reconnecter le 6379 au nouveau nœud maître. Redis Sentinel Principe, je vous tolère depuis longtemps !Redis Sentinel Principe, je vous tolère depuis longtemps !À l'heure actuelle, le nœud maître est 6380. Définissez la valeur dans le client Redis sur 6380 pour vérifier si la réplication maître-esclave fonctionne correctement.

Ajoutez le type de liste au nouveau nœud maître 6380 Redis Sentinel Principe, je vous tolère depuis longtemps !Obtenez cette valeur à 6379 et 6381, c'est tout ! Notre configuration en mode sentinelle est terminée. Redis Sentinel Principe, je vous tolère depuis longtemps !Redis Sentinel Principe, je vous tolère depuis longtemps !

3. Principe de fonctionnement de la sentinelle

Après avoir configuré la sentinelle, vous devez configurez-le Le principe de fonctionnement a été analysé. Ce n'est qu'en connaissant son processus de fonctionnement que nous pourrons avoir une meilleure compréhension de Sentinel.

Les principes expliqués dans cet article ne sont pas si secs ! Permet de lire un article technique sous forme d'histoire.

Pour en venir au fait, le rôle de la sentinelle est la surveillance, la notification et le basculement. Ensuite, le principe de fonctionnement s’articule également autour de ces trois points.

1. Surveillance du flux de travail

Redis Sentinel Principe, je vous tolère depuis longtemps !
Insérer la description de l'image ici
  1. La sentinelle envoie la commande info et enregistre toutes les informations sur l'état de la sentinelle, le nœud maître et le nœud esclave
  2. Le nœud maître enregistrera l'instance Redis Les informations enregistrées par le nœud maître et les informations enregistrées par la sentinelle semblent être les mêmes, mais en fait il existe encore quelques différences.
  3. La sentinelle enverra également la commande info au nœud esclave correspondant en fonction des informations du nœud esclave obtenues du nœud maître
  4. Puis Sentinelle 2 viendra De la même manière, le nœud maître sera modifié pour envoyer la commande info et une connexion cmd sera établie
  5. À ce moment, Sentinel 2 enregistrera également les mêmes informations comme Sentinel 1, mais il enregistrera les informations de Sentinel It's 2.
  6. A ce moment, une publication et un abonnement sont établis entre eux afin que les informations de chaque sentinelle soient cohérentes. Afin d’assurer à long terme la symétrie des informations entre les sentinelles, elles s’enverront également des commandes ping.
  7. Lorsqu'un autre Sentinel 3 arrive, il fera la même chose et enverra des informations au nœud maître et au nœud esclave. Et établissez des connexions avec Sentinel 1 et Sentinel 2.

2. Workflow de notification

Sentinel l'enverra à tous les nœuds du maître. et esclave La commande obtient son statut et publie les informations sur l'abonnement Sentinel. Redis Sentinel Principe, je vous tolère depuis longtemps !

3. Principe de basculement (objet de cet article)

Redis Sentinel Principe, je vous tolère depuis longtemps !
Ici, insérez la description de l'image
  • La sentinelle continuera à envoyer publier la sentinelle : bonjour au nœud maître jusqu'à ce que la sentinelle se calme. Ce mot peut vous sembler familier. C'est vrai, ce sont les informations rapportées par le serveur Sentinel après avoir déconnecté le nœud maître ci-dessus. Une fois que Sentinel a signalé l'arrêt du nœud maître, ce n'est pas encore terminé. Sentinel publiera également un message sur l'intranet pour indiquer que le nœud maître est en panne. La commande envoyée est sentinel is-master-down-by-address-port
  • Après que les autres sentinelles ont reçu la commande, le nœud maître a-t-il raccroché ? Laisse-moi aller voir si ça bloque ou pas. Le message envoyé est également bonjour. Les sentinelles restantes enverront également les informations qu'elles ont reçues et la commande sentinel is-master-down-by-address-port sur leur propre intranet, confirmant que la première sentinelle qui a envoyé sentinel is-master-down-by-address-port a dit que vous aviez raison, ce type est bien mort. Lorsque tout le monde pense que le nœud maître est en panne, son statut sera modifié en odown. Lorsqu'une sentinelle pense que le nœud maître est raccroché, le statut est sdown, et lorsque la moitié des sentinelles pense que le nœud maître est raccroché, le statut est odown. C'est pourquoi la sentinelle est configurée avec un nombre impair.
  • Pour une sentinelle qui pense que le nœud maître est en panne, cela est appelé subjectif hors ligne, et la moitié des sentinelles pensent que le nœud maître est en panne, ce qui est appelé officiel invité hors ligne.
  • Une fois que l'officier invité du nœud maître est considéré comme hors ligne, la sentinelle passera à l'étape suivante

À ce moment-là, la sentinelle a détecté le problème, alors quelle sentinelle est responsable de la sélection du nouveau nœud maître ? Il ne se peut pas que Zhang San y aille aussi, Li Si y aille aussi, et Wang Wu y aille aussi, donc ce sera chaotique . Il faut choisir le leader parmi toutes les sentinelles, alors comment choisir

Cette fois-ci ? Les cinq sentinelles se réuniront ensemble. Toutes les sentinelles sont dans un intranet. Ensuite, une chose qu'elles feront est que les cinq sentinelles enverront des commandes sentinel is-master-down-by-address-port en même temps et porteront leurs propres heures d'élection et runid. Redis Sentinel Principe, je vous tolère depuis longtemps !Chaque sentinelle est à la fois candidate et électeur. Chaque sentinelle dispose d'une voix, et l'enveloppe représente ses droits de vote. Redis Sentinel Principe, je vous tolère depuis longtemps !Quand sentinel1 et sentinel4 envoient des instructions au groupe en même temps pour préparer l'élection, sentinel2 dit à ce moment-là que je voterai pour celui qui recevra l'instruction en premier. Si sentinel1 est libéré plus tôt, alors le vote de sentinel2 sera porté sur sentinel1. Redis Sentinel Principe, je vous tolère depuis longtemps !Le vote sera lancé selon cette règle jusqu'à ce que les votes d'une sentinelle représentent la moitié du nombre total de sentinelles. Supposons que sentinelle1 sera élue une fois que le nombre de voix sentinelle1 aura atteint plus de la moitié du nombre total de sentinelles. A ce moment, l’étape suivante est atteinte. Redis Sentinel Principe, je vous tolère depuis longtemps ! Ci-dessus, Sentinel a sélectionné sentinel1 comme représentant pour accéder à tous les nœuds esclaves pour en trouver un comme nœud maître. Il existe certaines règles pour sélectionner un nœud maître, et pas seulement pour en choisir un au hasard.

Tuez d'abord ceux qui ne sont pas en ligne

Redis Sentinel Principe, je vous tolère depuis longtemps !Tuez celui avec une réponse lente. Sentinel enverra des informations à tous les redis, et celui avec une réponse lente sera tué Redis Sentinel Principe, je vous tolère depuis longtemps !Tuez celui qui a été déconnecté du nœud maître d'origine pendant le plus longtemps. . Comme la démonstration n'est pas suffisante ici, tout un nouveau slave5 a été ajouté, ce qui n'a aucun sens ! Redis Sentinel Principe, je vous tolère depuis longtemps !Après avoir jugé des trois points ci-dessus, il reste encore salve4 et slave5, et ils seront examinés selon le principe de priorité.

  • Dans un premier temps, cela sera basé sur la priorité. Si la priorité est la même, d'autres jugements seront portés
  • pour juger du décalage. décalage et synchronisation des données. Si disons, le décalage de slave4 est de 90 et celui de slave5 est de 100. Alors la sentinelle pensera qu'il y a quelque chose qui ne va pas avec le réseau de slave4 ! Ensuite, slave5 sera sélectionné comme nouveau nœud maître. Et si les décalages de slave4 et slave5 étaient les mêmes ? Il y a aussi la dernière étape pour juger
  • La dernière étape consiste à juger le runid, qui est l'ancienneté dans le lieu de travail. Autrement dit, elle est jugée en fonction du temps de création de. le runid Celui avec le temps le plus ancien sera classé.

Redis Sentinel Principe, je vous tolère depuis longtemps !Après avoir sélectionné un nouveau nœud maître, les instructions doivent être envoyées à tous les nœuds. Redis Sentinel Principe, je vous tolère depuis longtemps !

4. Résumé

C'est tous les points de connaissances sur Sentinel, cet article est le plus important. C'est ainsi que fonctionne Sentinel. Passons brièvement en revue son principe de fonctionnement.

  • La surveillance est effectuée en premier, et toutes les sentinelles synchronisent les informations

  • Les sentinelles publient des informations sur les abonnements

  • Basculement

    • Sentinel a constaté que le nœud maître était hors ligne
    • Sentinel a commencé à voter pour le responsable
    • Le le responsable élira une nouvelle personne. Le nouveau nœud maître de
    • déconnecte le nœud maître d'origine et les autres nœuds esclaves se connectent au nouveau nœud maître. Le nœud maître d'origine se connecte en tant qu'esclave. nœud après sa mise en ligne.

Ce qui précède est la compréhension de Kaka des sentinelles. Si des erreurs peuvent être commises, Kaka les corrigera à temps.

La persévérance dans l'apprentissage, la persévérance dans les blogs et la persévérance dans le partage sont les convictions auxquelles Kaka adhère depuis sa carrière. J'espère que les articles de Kaka dans l'immense Internet. peut vous apporter un peu Rendez-vous dans le prochain numéro

Recommandé : "Tutoriel Redis"

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn