Une brève analyse du principe du mode sentinelle dans Redis
Cet article vous donnera une compréhension approfondie des principes du mode sentinelle Redis, parlera de ce que Sentinel peut faire, démarrera la méthode Sentinel et le workflow Sentinel. J'espère qu'il vous sera utile !
Ce qui précède présente le principe de la Réplication maître-esclave Redis, qui résout le problème de la sauvegarde des données Redis, un nouveau nœud maître ne peut pas être automatiquement élu et le nœud esclave doit l'être. défini manuellement comme nœud maître, faible efficacité et impossible de réaliser un basculement automatique, Redis fournit officiellement une solution à haute disponibilité Sentinel.
1. Qu'est-ce que Redis Sentinel ?
Redis Sentinel est la solution officielle de haute disponibilité pour Redis. Redis Sentinel offre une haute disponibilité pour Redis. En pratique, cela signifie qu'en utilisant Sentinel, vous pouvez créer un cluster Redis résistant à certains types de pannes et implémentant automatiquement le basculement sans intervention humaine. [Recommandations associées : Tutoriel vidéo Redis]
2. Que peut faire Sentinel ?
1. Surveillez l'état de santé des nœuds du cluster Redis (maître + réplique) et des nœuds sentinelles
2. Basculement automatique : si le maître échoue, sentinel peut implémenter le basculement et demander au client de se connecter au nouveau maître.
3. Notification : via l'API, des notifications peuvent être envoyées aux administrateurs, aux développeurs, et l'instance Redis surveillée échoue.
4. Centre de configuration : le client se connecte à Sentinel et Sentinel peut accéder au maître et renvoyer les informations sur le nœud. le client.
3. Comment démarrer sentinel
1. redis-sentinel /path/to/sentinel.conf
2. redis-server /path/to/sentinel.conf --sentinel
sentinel. Les instructions de configuration de conf sont les suivantes
# 配置需要监控的master节点信息 2代表法定人数 作用是表示需要最少需要多少个sentinel节点同意 #master节点不可达才标记为客观下线 #举例 5个sentinel实例 quorum设置成2 那么有2个sentinel节点认为master不可达, #则其中一个会启动故障转移#如果至少有三个哨兵可到达,故障转移将被授权并实际启动。 sentinel monitor mymaster 127.0.0.1 6379 2 #只需要配置master sentinel会自动检测slave信息 sentinel down-after-milliseconds mymaster 60000 #如果master在指定时间内没有响应ping命令/或报错,则认为主观下线了。 sentinel failover-timeout mymaster 180000 sentinel parallel-syncs mymaster 1 #指定故障转移的时候,同时支持多少个replica并行的与master同步数据,越小故障转移越久 #以上配置可以通过SENTINEL SET command.来实时修改。 sentinel monitor resque 192.168.1.3 6380 4 sentinel down-after-milliseconds resque 10000 sentinel failover-timeout resque 180000 sentinel parallel-syncs resque 5
Remarque :
Redis-sentinel doit être démarré à l'aide du fichier de configuration. Le redémarrage doit être restauré selon le fichier de configuration. L'accès au port doit être ouvert entre les sentinelles. faciliter l’accès mutuel.
4. Workflow Sentinel
1 Tout d'abord, la sentinelle réalise une perception dynamique via le mécanisme de pub/abonnement de redis.
2. Comment la sentinelle sent-elle que le maître est mort ?
Il y a deux situations ici, l'une est lorsque le maître se déconnecte subjectivement, et l'autre est lorsque le maître se déconnecte objectivement.
Hors ligne subjectif : chaque sentinelle envoie une commande ping au maître toutes les 1 s. Si le maître ne répond pas dans les millisecondes qui suivent, le nœud sentinelle considère que le maître est subjectivement hors ligne.
Objectif hors ligne :
Lorsque le nœud qui est subjectivement hors ligne est le nœud maître, le nœud sentinelle demandera le jugement des autres nœuds sentinelles sur le nœud maître via la commande sentinel is-masterdown-by-addr
Lorsque le quorum (le quorum configuré. dans la configuration sentinelle est dépassé) (nombre de personnes). À ce moment, le nœud sentinelle estime qu'il y a effectivement un problème avec le nœud maître, il est donc objectivement hors ligne. La plupart des nœuds sentinelles acceptent le fonctionnement hors ligne, ce qui est vrai. est dit objectivement hors ligne.
Notez que l'objectif hors ligne ne prend effet que pour le nœud maître, il déclenchera un basculement
3 Le maître est hors ligne et un basculement est requis
Ceci est divisé en deux étapes. Tout d'abord, vous devez sélectionner le maître sentinelle. et utilisez le nœud maître sentinelle pour effectuer le basculement Redis.
Tout d'abord, la sentinelle élit le chef. Utilisez l'algorithme du radeau (algorithme de consensus d'état).
Chaque nœud Sentinel peut devenir leader. Lorsqu'un nœud Sentinel confirme que le nœud maître du cluster Redis est subjectivement hors ligne, il demandera aux autres nœuds Sentinel de s'élire comme leader. Si le nœud Sentinel demandé n'a pas accepté la demande d'élection des autres nœuds Sentinel, il acceptera la demande (vote d'élection + 1), sinon il ne sera pas d'accord.
Si le nombre de votes d'élection obtenus par un nœud Sentinel atteint le nombre minimum de votes Leader (la valeur maximale du quorum et du nombre de nœuds Sentinel/2+1), le nœud Sentinel sera élu Leader sinon, l'élection ; sera réexécuté.
Idée centrale de Raft : premier arrivé, premier servi, la minorité obéit à la majorité.
Une fois que Sentinel a élu le nœud maître, le nœud maître Sentinelle doit élire le nœud maître du cluster Redis pour construire une nouvelle relation de cluster.
La base pour l'élection d'un nouveau nœud maître Redis est :
1. Le temps de déconnexion de Sentinel. Filtrez les répliques esclaves déconnectées du serveur sentinelle principal pendant une durée supérieure au délai d'expiration de l'hôte configuré après millisecondes
2. Donnez la priorité à ceux dont la priorité de réplication est faible.
3. Si les priorités sont les mêmes, le décalage de copie a été traité. Plus la valeur est grande, plus la priorité est élevée, ce qui est plus conforme à la fonction de scénario métier.
4. Si les décalages de copie sont les mêmes, regardez l'ID en cours d'exécution. Préférez les petits.
Après avoir sélectionné le nœud maître, commencez à maintenir la relation de cluster.
1. Nœud Sentinel, envoyez la commande slave no one au nouveau nœud maître pour en faire un nœud indépendant
2. Nœud Sentinel, envoyez le port IP slave aux autres nœuds, suivez jusqu'au nœud maître
5. Résumé .
Grâce à l'analyse ci-dessus, Sentinel peut réaliser un basculement automatique grâce à une surveillance planifiée. Cependant, Sentinel a encore quelques problèmes. Par exemple, dans le cas d'un seul nœud maître, il existe une possibilité de perte de données et de performances. une seule machine est limitée, il n’y a pas de capacité d’expansion horizontale.
Pour plus de connaissances sur la programmation, veuillez visiter : Introduction à la programmation ! !
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Le mode Redis Cluster déploie les instances Redis sur plusieurs serveurs grâce à la rupture, à l'amélioration de l'évolutivité et de la disponibilité. Les étapes de construction sont les suivantes: Créez des instances de redis étranges avec différents ports; Créer 3 instances Sentinel, Moniteur Redis Instances et basculement; Configurer les fichiers de configuration Sentinel, ajouter des informations d'instance Redis de surveillance et des paramètres de basculement; Configurer les fichiers de configuration d'instance Redis, activer le mode de cluster et spécifier le chemin du fichier d'informations de cluster; Créer un fichier nœuds.conf, contenant des informations de chaque instance redis; Démarrez le cluster, exécutez la commande CREATE pour créer un cluster et spécifiez le nombre de répliques; Connectez-vous au cluster pour exécuter la commande d'informations de cluster pour vérifier l'état du cluster; faire

L'utilisation de la directive Redis nécessite les étapes suivantes: Ouvrez le client Redis. Entrez la commande (Verbe Key Value). Fournit les paramètres requis (varie de l'instruction à l'instruction). Appuyez sur Entrée pour exécuter la commande. Redis renvoie une réponse indiquant le résultat de l'opération (généralement OK ou -err).

Les étapes pour démarrer un serveur Redis incluent: Installez Redis en fonction du système d'exploitation. Démarrez le service Redis via Redis-Server (Linux / MacOS) ou Redis-Server.exe (Windows). Utilisez la commande redis-Cli Ping (Linux / MacOS) ou redis-Cli.exe Ping (Windows) pour vérifier l'état du service. Utilisez un client redis, tel que redis-cli, python ou node.js pour accéder au serveur.

Redis utilise des tables de hachage pour stocker les données et prend en charge les structures de données telles que les chaînes, les listes, les tables de hachage, les collections et les collections ordonnées. Redis persiste les données via des instantanés (RDB) et ajoutez les mécanismes d'écriture uniquement (AOF). Redis utilise la réplication maître-esclave pour améliorer la disponibilité des données. Redis utilise une boucle d'événement unique pour gérer les connexions et les commandes pour assurer l'atomicité et la cohérence des données. Redis définit le temps d'expiration de la clé et utilise le mécanisme de suppression paresseux pour supprimer la clé d'expiration.

Comment effacer les données Redis: utilisez la commande flushall pour effacer toutes les valeurs de clé. Utilisez la commande flushdb pour effacer la valeur clé de la base de données actuellement sélectionnée. Utilisez SELECT pour commuter les bases de données, puis utilisez FlushDB pour effacer plusieurs bases de données. Utilisez la commande del pour supprimer une clé spécifique. Utilisez l'outil Redis-CLI pour effacer les données.

Pour lire une file d'attente à partir de Redis, vous devez obtenir le nom de la file d'attente, lire les éléments à l'aide de la commande LPOP et traiter la file d'attente vide. Les étapes spécifiques sont les suivantes: Obtenez le nom de la file d'attente: Nommez-le avec le préfixe de "Fitre:" tel que "Fitre: My-Quyue". Utilisez la commande LPOP: éjectez l'élément de la tête de la file d'attente et renvoyez sa valeur, telle que la file d'attente LPOP: My-Queue. Traitement des files d'attente vides: si la file d'attente est vide, LPOP renvoie NIL et vous pouvez vérifier si la file d'attente existe avant de lire l'élément.

La meilleure façon de comprendre le code source redis est d'aller étape par étape: familiarisez-vous avec les bases de Redis. Sélectionnez un module ou une fonction spécifique comme point de départ. Commencez par le point d'entrée du module ou de la fonction et affichez le code ligne par ligne. Affichez le code via la chaîne d'appel de fonction. Familiez les structures de données sous-jacentes utilisées par Redis. Identifiez l'algorithme utilisé par Redis.

L'utilisation des opérations Redis pour verrouiller nécessite l'obtention du verrouillage via la commande setnx, puis en utilisant la commande Expire pour définir le temps d'expiration. Les étapes spécifiques sont les suivantes: (1) Utilisez la commande setnx pour essayer de définir une paire de valeurs de clé; (2) Utilisez la commande Expire pour définir le temps d'expiration du verrou; (3) Utilisez la commande del pour supprimer le verrouillage lorsque le verrouillage n'est plus nécessaire.
