Comment configurer la réplication Redis (avec mode de cluster désactivé) dans CentOS 8 - partie 1

Comment configurer la réplication Redis (avec mode de cluster désactivé) dans CentOS 8 - partie 1

Redis (Serveur de dictionnaire distant) est une open source très populaire et largement utilisée, rapide, distribuée et efficace de la base de données de la base de données / structure de données en mémoire.

Il offre un riche ensemble de fonctionnalités qui le rendent efficace pour un large éventail de cas d'utilisation: en tant que base de données, couche de mise en cache, courtier de messages ou file d'attente; applicable dans les applications Web, les applications de chat et de messagerie, les jeux, l'analyse des données en temps réel et bien plus encore.

Il prend en charge les structures de données flexibles, la réplication asynchrone maître-esclave pour mettre à l'échelle les performances de lecture et la garde contre la perte de données, la rupture côté client pour mettre à l'échelle les performances de l'écriture, deux formes de persistance pour écrire des données en mémoire à un disque dans un format compact, un regroupement et partitionnement. Il dispose également de bascules automatiques pour le déploiement de haute disponibilité via Redis Sentinel, Script Lua, transactions, et beaucoup plus.

Être un Pas de SQL ou base de données non relationnelle, Redis offre des avantages de performance par rapport aux systèmes de base de données traditionnels (tels que Mysql / mariadb, Postgresql, etc.), car toutes ses données résident ou sont stockées dans la mémoire, ce qui le rend facilement accessible à une application, tandis que les bases de données traditionnelles doivent écrire toutes les données ou lire à partir d'un disque ou d'une source externe.

Redis est devenu un choix de plus en plus répandu pour la mise en cache, ce qui permet la réutilisation de données mises en cache (stockées dans l'espace mémoire principal d'une application) plutôt que de toujours interroger une base de données pour des données fréquemment utilisées. C'est donc un compagnon fantastique de SHRD (Systèmes de gestion des bases de données relationnelles) pour finalement améliorer les performances des applications.

En trois parties Redis Série de didacticiels, nous couvrirons comment configurer et utiliser certaines des principales fonctionnalités de Redis qui sont la réplication, la haute disponibilité en utilisant Redis Sentinel et Cluster redis, Les articles sont:

Partie 1: Comment configurer la réplication Redis (avec le mode de cluster désactivé) dans CentOS 8 Partie 2: Comment configurer Redis pour la haute disponibilité avec Sentinel dans Centos 8 Partie 3: Comment configurer un cluster redis (avec le mode cluster activé) dans Centos 8

Ce guide montre comment configurer Réplication redis (avec Mode de cluster désactivé) dans Centos 8 Linux, y compris comment installer Redis, configurer le maître et les répliques et tester la réplication.

Important: UN Cluster redis (je.e a Cluster de réplication) avec le mode de cluster désactivé a un seul groupe de nœuds (e.g a maître et une ou deux répliques) où un cluster redis avec le mode de cluster activé peut se comporter en deux groupes de nœuds ou plus (e.G trois maîtres ayant chacun des esclaves ou deux).

Conditions préalables:

  1. Serveurs avec installation CentOS 8

Configuration de l'environnement de test

Redis Master Server: dix.42.0.247 Redis réplique1 / esclave1: dix.42.0.21 Redis réplique2 / esclave2: dix.42.0.34 
Représentation logique du diagramme de réplication redis

Avec la configuration ci-dessus (qui possède un seul nœud primaire / maître de lecture / écriture et 2 nœuds en lecture seule), nous avons un groupe de nœuds unique qui contient toutes les données du cluster dans chaque nœud. Une fois qu'un esclave se connecte à un maître, il reçoit une copie initiale de la base de données complète et toutes les données qui existaient auparavant sur l'esclave seront jetées.

De plus, un client ne peut écrire qu'au maître mais lire à partir de n'importe quel nœud du cluster. Et comme les écritures sont effectuées sur le maître, ils se sont propagés à tous les esclaves connectés pour mettre à jour les ensembles de données esclaves en temps réel.

Étape 1: Installation de redis sur Centos 8

1. Pour commencer, connectez-vous à tous les Centos 8 nœuds via ssh, puis installez le Redis Package sur tous les nœuds (maître et répliques) à l'aide du gestionnaire de package DNF comme indiqué.

# DNF Installer @redis 

2. À la fin du Redis Installation du package, démarrez le Redis Service, activez-le pour démarrer automatiquement à chaque démarrage système et vérifier s'il est opérationnel comme suit.

# systemctl start redis # systemctl activer redis # systemctl status redis 

3. Vous pouvez également confirmer que le Redis Le serveur est opérationnel en vérifiant les ports d'écoute à l'aide de la commande SS, comme suit.

# ss -ltpn | grep redis-server 
Confirmer les ports Redis Server

Étape 2: Configuration du serveur maître redis

4. Redis est configuré à l'aide du / etc / redis.confli Fichier de configuration, un exemple d'auto-documentation du fichier de configuration. Tout d'abord, créez une sauvegarde du fichier d'origine, puis ouvrez-la pour l'édition en utilisant votre éditeur de ligne de commande de choix.

# cp / etc / redis.conf / etc / redis.confli.org # vi / etc / redis.confli 

5. Par défaut, un Redis L'instance est configurée pour écouter et accepter les connexions sur le boucler interface, en utilisant la directive Bind. Pour communiquer avec les répliques, le maître doit être configuré pour écouter sur le Ipv4 Adresse de bouclage et son adresse IP LAN I.e dix.42.0.247.

lier 127.0.0.1 10.42.0.247 

6. Ensuite, définissez le paramètre en mode protégé sur Non pour permettre la communication avec les répliques comme indiqué.

mode protégé non 

Aussi, redis écoute le port 6379 qui est défini en utilisant le port directif. Ceci est le port de données pour communiquer avec les API d'application ou les clients CLI.

Port 6379 
Configuration du serveur maître redis

7. Pour sécuriser éventuellement le maître-repli Communications, nous pouvons protéger le maître en utilisant le exigence Directive, afin que les clients / répliques doivent émettre un mot de passe d'authentification avant d'exécuter des commandes ou de démarrer un processus de synchronisation de réplication, sinon le maître refusera la demande client / réplique (n'oubliez pas de définir un mot de passe sécurisé).

Nous utiliserons l'option suivante à des fins de démonstration, pour montrer comment cela fonctionne.

BesoinPass [Protégé par e-mail] 
Définir le mot de passe d'authentification

8. De plus, les journaux redis sont stockés dans le / var / log / redis / redis.enregistrer fichier, ceci est défini en utilisant le fichier journal directive et le niveau de verbosité du serveur par défaut est avis, défini en utilisant le logevel paramètre.

Avis Loglevel Avis Logfile / var / log / redis / redis.enregistrer 
Définir le fichier journal et le niveau du journal redis

9. Depuis systemd est le système et le gestionnaire de services par défaut dans Centos 8, vous pouvez configurer Redis pour interagir avec le systemd Arbre de supervision en définissant le supervisé paramètre systemd.

Systemd supervisé 
Définissez Redis Superviseur sur SystemD

dix. Après avoir effectué toutes les configurations nécessaires, enregistrez le fichier et fermez-le. Puis redémarrez le Redis Service pour appliquer les nouvelles modifications.

# SystemCTL Daemon-Recload # SystemCTL Restart redis 

11. Pour accéder au Redis serveur, nous devons utiliser le redis-Cli (une interface de ligne de commande avec le serveur redis). Par défaut, il se connecte au serveur sur le hôte local127.0.0.1 port 6379). Notez que parce que le serveur est sécurisé à partir des clients à l'aide d'un mot de passe, exécuter une commande avant l'authentification devrait échouer.

Utilisez le authentification Commande pour fournir le mot de passe d'authentification comme indiqué dans la capture d'écran suivante.

# redis-Cli 127.0.0.1: 6379> Liste des clients 127.0.0.1: 6379> Auth [Protégé par e-mail] 127.0.0.1: 6379> Liste des clients 
Access Redis Server via Redis CLI

12. Pour se connecter à un réplique (Après les configurer comme décrit dans la section suivante), utilisez le -H et -p Options pour spécifier respectivement l'adresse IP / nom d'hôte IP et le port (pas ce port 6379 Doit être ouvert dans le pare-feu de la réplique).

# redis-Cli -h 10.42.0.21 -P 6379 

13. Ensuite, ouvrez le Redis Port de données du serveur dans le pare-feu pour permettre des connexions entrantes au maître, puis recharger les règles de pare-feu à l'aide de la commande de pare-feu-CMD comme indiqué.

# Firewall-Cmd --zone = public --permanent --add-port = 6379 / tcp # Firewall-CMD - Reload 

Étape 3: Configuration des serveurs Redis / esclaves

14. Pour définir rapidement un Redis Instance comme réplique à la volée, utilisez le redis-Cli utilité et appelez le Réplique Commande comme indiqué.

# Redis-Cli Replicaof 10.42.0.247 6379 ou # redis-Cli 127.0.0.1: 6379> réplique 10.42.0.247 6379 
Connectez-vous à une instance Master Redis

15. Pour rendre une connexion de réplication permanente, vous devez apporter les modifications suivantes dans le fichier de configuration. Commencez par sauvegarder le fichier d'origine, puis ouvrez-le pour l'édition.

# cp / etc / redis.conf / etc / redis.confli.org # vi / etc / redis.confli 

16. Pour permettre aux clients de se connecter à la réplique pour lire les données, ajoutez l'adresse de réplique IP à la directive Bind.

# réplique1 liant 127.0.0.1 10.42.0.21 # Replica2 Bind 127.0.0.1 10.42.0.34 

Définition d'une instance redis en tant que réplique

17. Pour configurer une instance redis en tant que réplique, Utilisez le réplique paramètre et définir l'adresse IP du nœud maître (ou nom d'hôte) et le port sous forme de valeurs.

réplique 10.42.0.247 6379 

Définition des répliques pour s'authentifier au maître

18. Ensuite, puisque notre instance de maître est protégée à l'aide d'un mot de passe, nous devons définir le mot de passe dans la configuration de réplique pour lui permettre de s'authentifier auprès du maître, en utilisant le MasterAuth paramètre.

MasterAuth [e-mail protégé] 

19. De plus, lorsqu'une réplique perd sa connexion avec le maître, ou lorsque la réplication est en cours, la réplique est configurée pour répondre aux demandes du client, éventuellement avec «périmé" données. Mais pour si c'est la première synchronisation, alors l'ensemble de données peut être simplement vide. Ce comportement est contrôlé par le répliques de données de service-section paramètre.

Et depuis Redis 2.6 Par défaut, les répliques sont en lecture seule, ceci est contrôlé par le réplique de lecture uniquement paramètre. Vous pouvez effectuer d'autres ajustements de configuration de réplique en fonction des besoins de votre application.

20. Une fois que vous avez apporté toutes les modifications nécessaires, redémarrez le service redis sur toutes les répliques.

# systemctl redémarrer redis 

21. Aussi, port ouvert 6379 dans le pare-feu pour permettre les connexions du maître et des clients aux répliques, et recharger les règles du pare-feu.

# Firewall-Cmd --zone = public --permanentent --add-port = 6379 / tcp # Firewall-CMD - Reload 

Étape 4: Vérifiez le statut de réplication du maître-replica

22. Une fois la maître-repli La configuration de réplication est complète, nous pouvons vérifier si la configuration fonctionne bien comme suit.

Sur le maître, exécutez les commandes suivantes.

# redis-Cli 127.0.0.1: 6379> Auth [Protégé par e-mail] 127.0.0.1: 6379> réplication d'informations 
Vérifiez les informations de relocalisation redis sur maître

23. Vérifiez également l'état de réplication sur les répliques / esclaves comme suit.

# redis-Cli 127.0.0.1: 6379> réplication d'informations 
Vérifiez les informations de réplication Redis sur la réplique de redis 1 Vérifiez les informations de réplication Redis sur Redis Replica 2

23. Testons maintenant la réplication en paramètres valeur clé dans l'instance maître et vérifier si les données sont synchronisées avec les répliques.

Sur le maître, faites ceci:

# redis-Cli 127.0.0.1: 6379> Auth [Protégé par e-mail] 127.0.0.1: 6379> Set Domain 'www.Tecmint.com ' 
Définir la valeur clé dans l'instance maîtresse

24. Vérifiez ensuite si les données ont été synchronisées avec les répliques comme indiqué.

# redis-Cli 127.0.0.1: 6379> Get Domain 
Vérifier l'état de synchronisation des données sur les répliques

Protéger l'instance de maître contre le risque de perdre certaines écritures

25. Redis a une fonctionnalité qui permet à une instance de maître de limiter le risque de perdre certaines écritures en cas de suffisamment de répliques disponibles, à un nombre spécifié de secondes.

Cela signifie qu'un maître peut arrêter d'accepter les écritures s'il y a moins que N répliques connectées, ayant un décalage moins ou égal que M secondes, comme contrôlé par le min-replicas à l'écriture et min-replicas-max-drag Options respectivement.

Pour les définir, les décrocher et définir les valeurs en fonction de vos exigences de configuration dans / etc / redis.confli, comme indiqué dans la capture d'écran suivante. Cette configuration signifie que, du dernier ping aux répliques, après 10 secondes, s'il y a moins de 2 répliques en ligne, le maître cessera d'accepter les écritures.

min-replicas-to write 2 min-replicas-max-lig 10 
Protéger le maître redis contre la perte d'écriture

Vous pouvez trouver plus d'options dans le reste du / etc / redis.confli Fichier de configuration et pour plus de détails, lisez la réplication dans la documentation redis.

Dans le prochain article, nous couvrirons comment configurer Redis pour la haute disponibilité avec Sentinel Centos 8. Jusque-là, restez verrouillé et n'oubliez pas de partager vos whatrs et vos questions en utilisant notre formulaire de commentaire ci-dessous pour que vous nous atteigniez.