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