Cet article vous apporte une introduction aux principes de la réplication maître-esclave Redis (images et textes). Il a une certaine valeur de référence. Les amis dans le besoin peuvent s'y référer.
Faire face à des problèmes
Panne de machine. Nous déployons sur un serveur Redis Lorsqu'une panne de machine se produit, nous devons migrer vers un autre serveur et nous assurer que les données sont synchronisées. Les données sont la chose la plus importante si vous ne vous en souciez pas, vous n'utiliserez pratiquement pas Redis.
Goulot d'étranglement de capacité. Lorsque nous aurons besoin d'étendre la mémoire Redis, de 16 Go de mémoire à 64 Go, une seule machine ne pourra certainement pas la satisfaire. Bien sûr, vous pouvez acheter une nouvelle machine 128G.
Pour obtenir une plus grande capacité de stockage de la base de données distribuée et résister à un accès simultané élevé, nous stockerons les données de la base de données centralisée d'origine séparément sur plusieurs autres réseaux. nœuds.
Afin de résoudre ce problème de nœud unique, Redis déploiera également plusieurs copies de données sur d'autres nœuds pour la réplication afin d'obtenir une haute disponibilité de Redis et une sauvegarde redondante des données pour garantir la haute disponibilité des données et des services.
La réplication maître-esclave fait référence à la copie des données d'un serveur Redis vers d'autres serveurs Redis. Le premier est appelé nœud maître et le second nœud esclave. La réplication des données est unidirectionnelle et ne peut s'effectuer que du nœud maître vers le nœud esclave.
Par défaut, chaque serveur Redis est un nœud maître ; et un nœud maître peut avoir plusieurs nœuds esclaves (ou aucun nœud esclave), mais un nœud esclave ne peut avoir qu'un seul nœud maître.
Redondance des données : la réplication maître-esclave implémente la sauvegarde à chaud des données, qui est une méthode de redondance des données en plus de la persistance.
Récupération après panne : lorsque le nœud maître a un problème, le nœud esclave peut fournir des services pour obtenir une récupération rapide après panne ; il s'agit en fait d'une sorte de redondance de service.
Équilibrage de charge : sur la base de la réplication maître-esclave, combinée à une séparation lecture-écriture, le nœud maître peut fournir des services d'écriture et les nœuds esclaves peuvent fournir des services de lecture (c'est-à-dire lors de l'écriture de données Redis, appliquez le nœud maître de connexion, lors de la lecture des données Redis, connectez-vous au nœud esclave) pour partager la charge du serveur, en particulier dans les scénarios où il y a moins d'écriture et plus de lecture, le partage de la charge de lecture via plusieurs nœuds esclaves peut grandement ; augmenter la concurrence du serveur Redis.
Séparation en lecture et en écriture : elle peut être utilisée pour réaliser la séparation en lecture et en écriture, l'écriture de la bibliothèque principale et la lecture de la bibliothèque esclave. La séparation en lecture et en écriture peut non seulement améliorer la capacité de charge du serveur. , mais peut également être utilisé en fonction de l'évolution de la demande. Modifier le nombre de bibliothèques esclaves
Pierre angulaire de la haute disponibilité : en plus des fonctions ci-dessus, la réplication maître-esclave est également la clé. base pour la mise en œuvre des sentinelles et des clusters.Par conséquent, la réplication maître-esclave est la base de la haute disponibilité de Redis.
Les nœuds esclaves activent la réplication maître-esclave. Il existe trois manières :
Fichier de configuration. : Dans Ajouter depuis le fichier de configuration du serveur : slaveof
Commande de démarrage : Ajouter --slaveof
Commande client : Une fois le serveur Redis démarré, exécutez la commande directement via le client : slaveof
Vous pouvez voir certaines informations de réplication via la commande info replication
Le processus de réplication maître-esclave peut être grossièrement divisé en 3 étapes : Phase d'établissement de la connexion (c'est-à-dire phase de préparation), phase de synchronisation des données, phase de propagation des commandes.
Après avoir exécuté la commande slaveof à partir du nœud, le processus de réplication commence à fonctionner. Vous pouvez le voir grossièrement dans l'image ci-dessous
Sur l'image, vous pouvez voir que le processus de réplication est grossièrement divisé. en 6 processus
Les enregistrements du journal après la configuration maître-esclave peuvent également voir ce processus
1) Enregistrez les informations du nœud maître (maître) .
Après avoir exécuté slaveof, Redis imprimera le journal suivant :
2) Le nœud esclave (esclave) maintient la logique liée à la réplication via des tâches planifiées qui s'exécutent toutes les secondes. Lorsque la tâche planifiée Après avoir découvert l'existence d'un nouveau nœud maître, il tentera d'établir une connexion réseau avec le nœud
Le nœud esclave établira une connexion réseau avec le nœud nœud maître
Le nœud esclave établira un socket socket, le nœud esclave établit un socket avec le port 51234, qui est spécialement utilisé pour accepter les commandes de réplication envoyées par le nœud maître. Une fois le nœud esclave connecté avec succès, le journal suivant est imprimé :
Si le nœud esclave ne parvient pas à établir une connexion, la tâche planifiée réessayera indéfiniment jusqu'à ce que la connexion soit réussie ou exécutera slaveof no one pour annuler la réplication
Concernant l'échec de connexion , vous pouvez l'exécuter sur la réplication des informations du nœud esclave. Affichez la métrique master_link_down_since_seconds, qui enregistre l'heure système lorsque la connexion au nœud maître a échoué. Lorsque le nœud esclave ne parvient pas à se connecter au nœud maître, le journal suivant sera imprimé toutes les secondes pour faciliter la découverte du problème :
# Error condition on socket for SYNC: {socket_error_reason}
3) Envoyez la commande ping.
Une fois la connexion établie avec succès, le nœud esclave envoie une requête ping pour la première communication. L'objectif principal de la requête ping est le suivant :
·Détecter si la prise réseau entre le maître et l'esclave est disponible.
·Détectez si le nœud maître peut actuellement accepter les commandes de traitement.
Si après l'envoi de la commande ping, le nœud esclave ne reçoit pas la réponse pong du nœud maître ou expire, par exemple si le réseau expire ou si le nœud maître est bloqué et ne peut pas répondre à la commande, le nœud esclave le fera. déconnectez la connexion de réplication et la prochaine tâche planifiée lancera une reconnexion.
La commande ping envoyée depuis le nœud est renvoyée avec succès, Redis imprime le journal suivant et continue le processus de réplication suivant :
4) Vérification des autorisations. Si le paramètre requirepass est défini sur le nœud maître, la vérification du mot de passe est requise. Le nœud esclave doit configurer le paramètre masterauth pour garantir que le mot de passe est le même que celui du nœud maître pour réussir la vérification. Si la vérification échoue, la réplication sera effectuée ; terminé et le nœud esclave relancera le processus de réplication.
5) Synchronisez les ensembles de données. Une fois la connexion de réplication maître-esclave communiquée normalement, lorsque la réplication est établie pour la première fois, le nœud maître enverra toutes les données qu'il détient au nœud esclave. Cette partie de l'opération est l'étape la plus longue.
6) Commande pour continuer la copie. Lorsque le nœud maître synchronise les données actuelles avec le nœud esclave, le processus d'établissement de la réplication est terminé. Ensuite, le nœud maître enverra en permanence des commandes d'écriture aux nœuds esclaves pour garantir la cohérence des données maître-esclave.
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!