Redis (Serveur de dictionnaire distant) est une base de données/structure de données clé-valeur en mémoire très populaire et largement utilisée, open source, rapide, distribuée et efficace.
Il offre un ensemble riche de fonctionnalités qui le rendent efficace pour une large gamme 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 de données en temps réel et bien plus encore.
Il prend en charge des structures de données flexibles, une réplication asynchrone maître-esclave pour augmenter les performances en lecture et se prémunir contre les pertes de données, un sharding côté client pour augmenter les performances en écriture, deux formes de persistance pour écrire les données en mémoire sur le disque dans un format compact, le clustering et le partitionnement. Il propose également des basculements automatiques pour un déploiement à haute disponibilité via Redis Sentinel, scripts Lua, transactions, et bien d’autres encore.
Étant une base de données NO SQL ou non relationnelle, Redis offre certains avantages de performance par rapport aux systèmes de base de données traditionnels (comme MySQL/MariaDB, PostgreSQL, etc.), car toutes ses données résident ou sont stockées en mémoire, ce qui les rend facilement accessibles à une application, tandis que les bases de données traditionnelles doivent écrire toutes les données sur le disque ou les lire depuis celui-ci ou une source externe.
Redis est devenu un choix de plus en plus courant pour le caching, ce qui permet de réutiliser des données mises en cache (stockées dans l’espace mémoire principal d’une application) au lieu de toujours interroger une base de données pour des données fréquemment utilisées. C’est donc un excellent compagnon de SGBDR (Systèmes de Gestion de Bases de Données Relationnelles) pour améliorer en fin de compte les performances de l’application.
Dans cette série de tutoriels en trois parties sur Redis, nous couvrirons comment configurer et utiliser certaines des fonctionnalités clés de Redis qui sont la réplication, la haute disponibilité en utilisant Redis Sentinel et Redis Cluster, les articles sont:
Ce guide montre comment configurer la Réplication Redis (avec Mode 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 (c’est-à-dire un Cluster de Réplication) avec le mode cluster désactivé a un seul groupe de nœuds (par exemple un maître et un ou deux réplicas) alors qu’un cluster Redis avec le mode cluster activé peut être composé de deux ou plusieurs groupes de nœuds (par exemple trois maîtres ayant chacun des esclaves ou deux).
Prérequis:
Configuration de l’environnement de test
Redis Master Server: 10.42.0.247 Redis Replica1/Slave1: 10.42.0.21 Redis Replica2/Slave2: 10.42.0.34

Avec la configuration ci-dessus (qui comprend un nœud principal/maître en lecture/écriture unique et 2 nœuds répliques en lecture seule), nous avons un seul groupe de nœuds contenant 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 précédemment sur l’esclave seront supprimées.
De plus, un client ne peut écrire que sur le maître mais peut lire à partir de n’importe quel nœud du cluster. Et comme les écritures sont effectuées sur le maître, elles sont propagées à tous les esclaves connectés pour mettre à jour les ensembles de données des esclaves en temps réel.
Étape 1 : Installation de Redis sur CentOS 8
1. Pour commencer, connectez-vous à tous les nœuds CentOS 8 via SSH, puis installez le paquet Redis sur tous les nœuds (maître et répliques) en utilisant le gestionnaire de paquets DNF comme indiqué.
# dnf install @redis
2. Une fois l’installation du paquet Redis terminée, démarrez le service Redis, activez-le pour démarrer automatiquement à chaque démarrage du système et vérifiez s’il est en cours d’exécution comme suit.
# systemctl start redis # systemctl enable redis # systemctl status redis
3. Vous pouvez également confirmer que le serveur Redis est en cours d’exécution en vérifiant les ports d’écoute à l’aide de la commande ss, comme suit.
# ss -ltpn | grep redis-server

Étape 2 : Configuration du serveur maître Redis
4. Redis est configuré en utilisant le fichier de configuration /etc/redis.conf, un exemple de fichier de configuration auto-documenté. Tout d’abord, créez une sauvegarde du fichier original, puis ouvrez-le pour édition en utilisant votre éditeur de ligne de commande préféré.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
5. Par défaut, une instance de Redis est configurée pour écouter et accepter les connexions sur l’interface loopback, en utilisant la directive bind. Pour communiquer avec les réplicas, le maître doit être configuré pour écouter sur l’adresse de bouclage IPv4 et son adresse IP LAN, c’est-à-dire 10.42.0.247.
bind 127.0.0.1 10.42.0.247
6. Ensuite, définissez le paramètre protected-mode sur no
pour autoriser la communication avec les réplicas comme indiqué.
protected-mode no
De plus, Redis écoute sur le port 6379 qui est défini en utilisant la directive port
. Il s’agit du port de données pour communiquer avec les API d’application ou les clients CLI.
port 6379

7. Pour sécuriser éventuellement les communications maître-réplica, nous pouvons protéger le maître en utilisant la directive requirepass, afin que les clients/réplicas doivent fournir 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 du client/réplica (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.
requirepass Securep@55Here

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

9. Étant donné que systemd est le gestionnaire de système et de service par défaut dans CentOS 8, vous pouvez configurer Redis pour interagir avec l’arborescence de supervision systemd en définissant le paramètre supervised sur systemd.
supervised systemd

10. Après avoir effectué toutes les configurations nécessaires, enregistrez le fichier et fermez-le. Ensuite, redémarrez le service Redis pour appliquer les nouvelles modifications.
# systemctl daemon-reload # systemctl restart redis
11. Pour accéder au serveur Redis, nous devons utiliser redis-cli (une interface en ligne de commande vers le serveur Redis). Par défaut, il se connecte au serveur sur localhost (à l’adresse 127.0.0.1 port 6379). Notez que puisque le serveur est sécurisé contre les clients en utilisant un mot de passe, l’exécution d’une commande avant l’authentification devrait échouer.
Utilisez la commande auth pour fournir le mot de passe d’authentification comme indiqué dans la capture d’écran suivante.
# redis-cli 127.0.0.1:6379> client list 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> client list

12. Pour vous connecter à une réplique (après les avoir configurées comme décrit dans la section suivante), utilisez les options -h
et -p
pour spécifier respectivement l’adresse IP/nom d’hôte de la réplique et le port (notez que le 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 port de données du serveur Redis dans le pare-feu pour autoriser les connexions entrantes vers le maître, puis rechargez les règles du pare-feu en utilisant la commande firewall-cmd comme indiqué.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --reload
Étape 3 : Configuration des serveurs d’esclaves/replicas de Redis
14. Pour définir rapidement une instance Redis en tant que replica sur le vif, utilisez l’utilitaire redis-cli et appelez la commande REPLICAOF comme indiqué.
# redis-cli replicaof 10.42.0.247 6379 OR # redis-cli 127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

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 original, puis ouvrez-le pour l’édition.
# cp /etc/redis.conf /etc/redis.conf.org # vi /etc/redis.conf
16. Pour permettre aux clients de se connecter à la réplica pour lire des données, ajoutez l’adresse IP de la réplica à la directive bind.
# replica1 bind 127.0.0.1 10.42.0.21 # replica2 bind 127.0.0.1 10.42.0.34
Définir une instance Redis en tant que réplica
17. Pour configurer une instance Redis en tant que réplica, utilisez le paramètre replicaof et définissez l’adresse IP (ou le nom d’hôte) et le port du nœud maître comme valeurs.
replicaof 10.42.0.247 6379
Définir la Réplica pour s’authentifier auprès du Maître
18. Ensuite, comme notre instance maître est protégée par un mot de passe, nous devons définir le mot de passe dans la configuration de la réplica pour lui permettre de s’authentifier auprès du maître,
masterauth Securep@55Here
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 des clients, éventuellement avec des données « hors de date ». Mais pour la première synchronisation, l’ensemble de données peut simplement être vide. Ce comportement est contrôlé par le paramètre replica-serve-stale-data.
Et, depuis Redis 2.6, par défaut les répliques sont en lecture seule, cela est contrôlé par le paramètre replica-read-only. Vous pouvez apporter d’autres ajustements de configuration de réplique pour répondre à vos besoins d’application.
20. Une fois que vous avez apporté tous les changements nécessaires, redémarrez le service Redis sur toutes les répliques.
# systemctl restart redis
21. De plus, ouvrez le port 6379 dans le pare-feu pour permettre les connexions du maître et des clients aux répliques, et rechargez les règles du pare-feu.
# firewall-cmd --zone=public --permanenent --add-port=6379/tcp # firewall-cmd --reload
Étape 4 : Vérifier l’état de la réplication maître-réplique
22. Une fois que la configuration de réplication maître-réplique est terminée, nous pouvons vérifier si la configuration fonctionne correctement comme suit.
Sur le maître, exécutez les commandes suivantes.
# redis-cli 127.0.0.1:6379> AUTH Securep@55Here 127.0.0.1:6379> info replication

23. Vérifiez également l’état de la réplication sur les répliques/esclaves comme suit.
# redis-cli 127.0.0.1:6379> info replication


23. Testons maintenant la réplication en définissant une paire clé-valeur dans l’instance maître et vérifions 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 Securep@55Here 127.0.0.1:6379> set domain 'www.tecmint.com'

24. Ensuite, vérifiez si les données ont été synchronisées avec les répliques comme indiqué.
# redis-cli 127.0.0.1:6379> get domain

Protéger l’instance maître contre le risque de perdre certaines écritures
25. Redis dispose d’une fonctionnalité qui permet à une instance maître de limiter le risque de perdre certaines écritures en cas de nombre insuffisant de répliques disponibles, à un nombre spécifié de secondes.
Cela signifie qu’un maître peut cesser d’accepter des écritures s’il y a moins de N répliques connectées, ayant un retard inférieur ou égal à M secondes, comme contrôlé par les options min-replicas-to-write et min-replicas-max-lag respectivement.
Pour les définir, décommentez-les et définissez les valeurs selon vos besoins de configuration dans /etc/redis.conf, comme indiqué dans la capture d’écran suivante. Cette configuration signifie que, depuis le dernier ping vers les répliques, après 10 secondes, s’il y a moins de 2 répliques en ligne, le maître cessera d’accepter des écritures.
min-replicas-to-write 2 min-replicas-max-lag 10

Vous pouvez trouver plus d’options dans le reste du fichier de configuration /etc/redis.conf et pour plus de détails, consultez la documentation de la réplication dans la documentation Redis.
Dans l’article suivant, nous verrons comment configurer Redis pour une haute disponibilité avec Sentinel dans CentOS 8. D’ici là, restez connecté et n’oubliez pas de partager vos pensées et questions en utilisant notre formulaire de commentaire ci-dessous, il est là pour que vous puissiez nous contacter.
Source:
https://www.tecmint.com/setup-redis-replication-in-centos-8/