Maison  >  Article  >  base de données  >  Découvrez le mode sentinelle dans Redis dans un article

Découvrez le mode sentinelle dans Redis dans un article

青灯夜游
青灯夜游avant
2022-01-04 10:10:452230parcourir

Cet article vous présentera le mode sentinelle dans Redis. J'espère qu'il vous sera utile !

Découvrez le mode sentinelle dans Redis dans un article

Redis mode maître-esclave. Une fois le nœud maître défaillant, le nœud esclave peut être mis à niveau vers le nœud maître. En même temps, le client doit être averti pour mettre à jour l'adresse du nœud maître. . Par conséquent, Redis fournit le Redis Sentinel Redis Sentinel 哨兵机制 来解决这个问题。【相关推荐:Redis视频教程

主从复制的问题

Découvrez le mode sentinelle dans Redis dans un article

1. 主从复制的好处

  • 主节点发生故障,从节点会升级为主节点
  • 扩展主节点的读能力,分担主节点压力

2. 存在的问题

  • 从节点升级主节点的过程需要人工干预,同时要更改客户端Redis服务地址
  • 主节点写能力、存储能力受到单机限制
  • 性能的影响:Redis 复制中断 后从节点会发起 psync。此时如果同步不成功,则会进行全量同步,主库执行全量备份的同时,可能会造成毫秒或秒级的 卡顿

Sentinel 实现原理

1. 一些概念

主要功能

  • 监控 : 不断检查主从服务器是否正常运行
  • 通知 : 一旦某个节点发生故障,会通知其他节点
  • 自动故障转移 : 当主节点不能正常工作会自动进行故障转移,从其中一个从节点升级为主节点
  • 配置提供者 : 客户端不是配置单个节点,而是 Sentinel 节点集合

主观下线和客观下线

一般来说,每个 Sentinel 节点会不断的 对其他 Sentinel 节点和 Redis 节点发送 PING,通过是否回复来确认是否在线

  • 主观下线 : 适用于所有主节点和从节点,如果在 down-after-milliseconds 毫秒内,Sentinel 没有收到目标节点的有效回复,则会判定该节点为主观下线。
  • 客观下线 : 只使用于主节点,如果主节点发生故障,Sentinel 节点会通过 sentinel is-master-down-by-addr 命令,向其它 Sentinel 节点询问对该节点的状态判断。如果超过 <quorum></quorum> 个数的节点判定主节点不可达,则该 SentinelMécanisme Sentinel
  • pour résoudre ce problème. [Recommandations associées : Tutoriel vidéo Redis]

Problèmes de réplication maître-esclave

Découvrez le mode sentinelle dans Redis dans un article

1. Avantages de la réplication maître-esclave

  • Si le nœud maître échoue, le nœud esclave être mis à niveau vers le nœud maître Découvrez le mode sentinelle dans Redis dans un article
  • Agrandissez la capacité de lecture du nœud maître et partagez la pression du nœud maître🎜

    🎜2 Problèmes existants🎜🎜
      .
    • Le processus de mise à niveau du nœud maître à partir du nœud esclave Une intervention manuelle est requise et l'adresse du service Redis du client doit être modifiée en même temps🎜
    • La capacité d'écriture et la capacité de stockage du nœud maître sont limitées par une seule machine🎜
    • Impact sur les performances : une fois la réplication Redis interrompue, le nœud esclave lancera psync . Si la synchronisation échoue à ce moment-là, une synchronisation complète sera effectuée pendant que la base de données principale effectue une sauvegarde complète, un décalage d'une milliseconde ou de deuxième niveau peut se produire🎜🎜🎜

      Principe de mise en œuvre de Sentinel

      🎜1. Quelques concepts🎜🎜

      🎜Fonctions principales🎜

      • 🎜 Surveillance : 🎜 Vérifiez constamment si les serveurs maître et esclave fonctionnent normalement 🎜
      • 🎜Notification : 🎜 Lorsqu'un nœud tombe en panne, les autres nœuds seront avertis 🎜
      • 🎜Basculement automatique : 🎜 Lorsque le nœud maître ne peut pas fonctionner correctement, il basculera automatiquement , mise à niveau de l'un des nœuds esclaves vers le nœud maître🎜
      • 🎜Fournisseur de configuration :🎜 Le client ne configure pas un seul nœud, mais une collection de nœuds Sentinel🎜🎜

        🎜Subjectif hors ligne et objectif hors ligne🎜

        🎜De manière générale, chaque nœud Sentinel surveillera en permanence les autres nœuds Sentinel et Redis Le nœud envoie un PING et confirme s'il est en ligne en répondant ou non 🎜
        • 🎜Subjectif hors ligne : 🎜 Applicable à tous les nœuds maîtres et nœuds esclaves, si en Si <code>Sentinel ne reçoit pas de réponse valide du nœud cible dans les millisecondes d'arrêt après millisecondes millisecondes, il déterminera que le nœud est subjectivement hors ligne. 🎜
        • 🎜Objectif hors ligne : 🎜 Utilisé uniquement pour le nœud maître Si le nœud maître échoue, le nœud Sentinel passera sentinel is-master-down-by-addr commande pour interroger d'autres nœuds <code>Sentinel pour déterminer l'état de ce nœud. Si plus de nœuds <quorum></quorum> déterminent que le nœud principal est inaccessible, le nœud Sentinel déterminera que le nœud principal est objectivement hors ligne. 🎜🎜🎜🎜2.Principe de fonctionnement🎜🎜🎜🎜🎜
          • Chaque Sentinel envoie à d'autres nœuds Sentinel et Redis nœuds maître-esclave à une fréquence de 1 fois/s Commande PING.
          • Sentinel1次/s 频率,向其他 Sentinel 节点、Redis 主从节点发送 PING 指令。
        • 如果一个实例,距离最后有效回复 PING 命令超过 down-after-milliseconds,这个实例被 Sentinel 标记为 主观下线
        • 如果一个 主服务器 被标记为主观下线,那么正在监视这个主服务器的所有 Sentinel 节点,以 1次/s 确认此主服务器是否进入主观下线状态
        • 如果超过 <quorum></quorum> 个数的节点判定主节点不可达,则该 Sentinel 节点会判断主节点为 客观下线
        • 当主服务器被标记为客观下线时,Sentinel 向下线服务器的所欲服务器发送 INFO 命令,会从10次/s 改为 1次/s
        • Sentinel 节点之间协商主节点状态,如果主节点处于 SDOWN 状态,则投票自动选出新的 主节点。将剩余的 从节点 指向 新的主节点 进行 数据复制
        • 当没有足够数量的 Sentinel 同意 主服务器 下线时, 主服务器客观下线状态 就会被移除。当 主服务器 重新向 SentinelPING 命令返回 有效回复 时,主服务器主观下线状态 就会被移除。

        3. 消息丢失

        Redis 采用主从复制的模式,一旦主节点挂掉,从节点正在同步的数据可能会丢失,延迟越大,丢失的越多。

        Redis 提供了两个配置项来限制主库的请求处理,分别是 min-slaves-to-writemin-slaves-max-lag

        • min-slaves-to-write:这个配置项设置了主库能进行数据同步的最少从库数量;
        • min-slaves-max-lag:这个配置项设置了主从库间进行数据复制时,从库给主库发送 ACK 消息的最大延迟(以秒为单位)。

        这两个配置项组合后的要求是,主库连接的从库中至少有 N 个从库,和主库进行数据复制时的 ACK 消息延迟不能超过 T 秒,否则,主库就不会再接收客户端的请求了

        所以,Sentine 无法保证消息完全不丢失,但是也能尽量保证消息少丢失。

        小结

        SentinelSi une instance est à plus de down-after-milliseconds de la dernière réponse valide à la commande PING, cette instance est marquée comme Sentinel strong>Sujectif hors ligne.

      • Si un serveur principal est marqué comme subjectivement hors ligne, alors tous les nœuds Sentinel de ce serveur principal sont surveillés à 1 fois/s Confirmez si le serveur principal est entré dans un état subjectif hors ligne

  • Si plus de <quorum></quorum> nœuds déterminent que le nœud principal est inaccessible, alors le Sentinel Le nœud déterminera que le nœud maître est objectivement hors ligne.

Lorsque le serveur principal est marqué comme objectivement hors ligne, Sentinel enverra la commande INFO à tous les serveurs du serveur hors ligne. Ce sera . 10 fois/s est remplacé par 1 fois/s. Les nœuds Sentinel négocient le statut du nœud maître. Si le nœud maître est dans l'état SDOWN, le vote sélectionnera automatiquement un nouveau nœud maîtrefort >. Pointez les nœuds esclaves restants vers le nouveau nœud maître pour la réplication des données. Lorsqu'il n'y a pas suffisamment de Sentinel pour accepter la mise hors ligne du serveur principal, le statut hors ligne objectifserveur principal /strong> sera supprimé. Lorsque le serveur principal renvoie une réponse valide à la commande PING de Sentinel, le serveur principalstatut hors ligne subjectif de /strong> > sera supprimé.

3. Perte de message

🎜Redis adopte le mode de réplication maître-esclave une fois le nœud maître bloqué. vers le haut, les données synchronisées par les nœuds esclaves peuvent être perdues, et plus le délai est grand, plus la perte est importante. 🎜🎜Redis fournit deux éléments de configuration pour limiter le traitement des requêtes de la bibliothèque principale, à savoir min-slaves-to-write et min-slaves-max-lag. 🎜🎜🎜min-slaves-to-write : cet élément de configuration définit le nombre minimum de bibliothèques esclaves avec lesquelles la bibliothèque principale peut synchroniser les données ; 🎜min-slaves-max-lag : cet élément de configuration définit le nombre minimum ; des bibliothèques esclaves entre les bibliothèques maître et esclave lors de la réplication des données, délai maximum (en secondes) nécessaire à la bibliothèque esclave pour envoyer un message ACK à la bibliothèque maître. 🎜L'exigence après avoir combiné ces deux éléments de configuration est qu'il y ait au moins N bibliothèques esclaves connectées à la bibliothèque maître, et que le délai du message ACK lors de la réplication des données avec la bibliothèque maître ne puisse pas dépasser T. secondes, sinon la bibliothèque principale ne recevra plus les demandes des clients. 🎜🎜Ainsi, Sentine ne peut pas garantir que les messages ne seront pas perdus du tout, mais il peut également essayer de faire en sorte que les messages soient perdus le moins possible. 🎜

Résumé

🎜Sentinel résout le problème de la haute disponibilité, mais ne résout pas le problème de l'expansion d'un nœud unique du nœud maître. 🎜🎜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!

Déclaration:
Cet article est reproduit dans:. en cas de violation, veuillez contacter admin@php.cn Supprimer