Maison  >  Article  >  base de données  >  Comment analyser le principe du mode sentinelle dans Redis

Comment analyser le principe du mode sentinelle dans Redis

WBOY
WBOYavant
2023-05-28 19:18:361390parcourir

Cet article vous donnera une compréhension approfondie des principes du mode Sentinel de 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 !

1. Qu'est-ce que Redis Sentinel ?

Redis Sentinel est une solution officielle fournie par Redis pour atteindre une haute disponibilité. 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. [Recommandation associée : didacticiel 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.

Comment analyser le principe du mode sentinelle dans RedisComment analyser le principe du mode sentinelle dans Redis

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 Lorsqu'il dépasse le quorum (. configuré dans la configuration sentinelle À ce stade, le nœud sentinelle pense 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, qui 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 de base du radeau : 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 esclave 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.

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:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer