Recherche de site Web

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


Redis (Remote Dictionary Server) est un serveur de base de données/structure de données open source très populaire et largement utilisé, rapide, distribué et efficace 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 de données en temps réel et bien plus encore.

Il prend en charge des structures de données flexibles, la réplication asynchrone maître-esclave pour faire évoluer les performances de lecture et se prémunir contre la perte de données, le partitionnement côté client pour faire évoluer les performances d'écriture, deux formes de persistance pour écrire des données en mémoire sur disque dans un format compact, le clustering et partitionnement. Il propose également des basculements automatiques pour un déploiement haute disponibilité via Redis Sentinel, des scripts Lua, des transactions et bien d'autres encore.

Étant une base de données NO SQL ou non relationnelle, Redis offre certains avantages en termes de performances par rapport aux systèmes de bases de données traditionnels (tels que 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, alors que les bases de données traditionnelles doivent écrire ou lire toutes les données sur un disque ou une source externe.

Redis est devenu un choix de plus en plus répandu en matière de mise en cache, qui permet de réutiliser les 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 connaître les données fréquemment utilisées. C'est donc un compagnon fantastique du RDMS (Relational Database Management Systems) pour, à terme, améliorer les performances des applications.

Dans cette série de didacticiels Redis en trois parties, nous expliquerons comment configurer et utiliser certaines des fonctionnalités clés de Redis, à savoir la réplication, la haute disponibilité à l'aide de Redis Sentinel et Redis Cluster, les articles sont :

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

Important : un cluster Redis (c'est-à-dire un cluster de réplication) avec le mode cluster désactivé possède un seul groupe de nœuds ( par exemple un maître et un ou deux réplicas), tandis qu'un cluster Redis avec le mode cluster activé peut être constitué de deux groupes de nœuds ou plus (par exemple 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: 10.42.0.247
Redis Replica1/Slave1: 10.42.0.21
Redis Replica2/Slave2: 10.42.0.34

Avec la configuration ci-dessus (qui comporte un seul nœud principal/maître en lecture/écriture et 2 nœuds de réplique en lecture seule), nous avons un seul groupe de nœuds 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 première copie de la base de données complète et toutes les données qui existaient auparavant sur l'esclave seront supprimées.

De plus, un client peut écrire uniquement sur le maître mais lire depuis n'importe quel nœud du cluster. Et au fur et à mesure que les écritures sont effectuées sur le maître, elles se propagent à 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 package Redis sur tous les nœuds (maître et réplicas). ) à l'aide du gestionnaire de packages DNF comme indiqué.


dnf install @redis

2. Une fois l'installation du package Redis terminée, démarrez le service Redis, activez-le pour qu'il démarre automatiquement à chaque démarrage du système et vérifiez s'il est opérationnel comme suit.

systemctl start redis
systemctl enable redis
systemctl status redis

3. Vous pouvez également confirmer que le serveur Redis est opérationnel 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é à l'aide du fichier de configuration /etc/redis.conf, un exemple de fichier de configuration auto-documenté. Tout d’abord, créez une sauvegarde du fichier d’origine, puis ouvrez-le pour le modifier à l’aide de l’éditeur de ligne de commande de votre choix.

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

5. Par défaut, une instance Redis est configurée pour écouter et accepter les connexions sur l'interface loopback, à l'aide de la directive bind. Pour communiquer avec les réplicas, le maître doit être configuré pour écouter 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 à l'aide de la directive port. Il s'agit du port de données permettant de communiquer avec les API d'application ou les clients CLI.

port 6379

7. Pour éventuellement sécuriser les communications maître-réplique, nous pouvons protéger le maître à l'aide de la directive requirepass, de sorte que les clients/réplicas doivent émettez 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 elle fonctionne.

requirepass  Securep@55Here

8. De plus, les journaux Redis sont stockés dans le fichier /var/log/redis/redis.log, celui-ci est défini à l'aide de la directive logfile et le niveau de verbosité du serveur par défaut est notice, défini à l'aide du paramètre loglevel.

loglevel  notice
logfile  /var/log/redis/redis.log

9. Puisque systemd est le gestionnaire de système et de services 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. Redémarrez ensuite le service Redis pour appliquer les nouvelles modifications.

systemctl daemon-reload
systemctl restart redis

11. Pour accéder au serveur Redis, nous devons utiliser le redis-cli (une interface de ligne de commande vers le serveur redis). Par défaut, il se connecte au serveur sur le localhost (sur le port 127.0.0.1 6379). Notez que, comme le serveur est sécurisé contre les clients à l'aide d'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éplication (après l'avoir configurée comme décrit dans la section suivante), utilisez -h et -p pour spécifier respectivement l'adresse IP/le nom d'hôte et le port de la réplique (le port 6379 ne doit pas ê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 à l'aide de la commande firewall-cmd comme indiqué.

firewall-cmd --zone=public --permanent --add-port=6379/tcp 
firewall-cmd --reload

Étape 3 : Configuration des serveurs de réplication/esclaves Redis

14. Pour définir rapidement une instance Redis comme réplique à la volée, utilisez l'utilitaire redis-cli et appelez 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 le modifier.

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

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

replica1
bind 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 paramètre replicaof et définissez l'adresse IP (ou le nom d'hôte) et le port du nœud maître comme suit. valeurs.

replicaof 10.42.0.247 6379

Configuration du réplica pour s'authentifier auprès du maître

18. Ensuite, puisque notre instance maître est protégée par un mot de passe, nous devons définir le mot de passe dans la configuration du réplica pour lui permettre de s'authentifier auprès du maître, à l'aide de masterauth. paramè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 « obsolète  » données. Mais s'il s'agit de 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 comme les réplicas Redis 2.6 par défaut sont en lecture seule, cela est contrôlé par le paramètre replica-read-only. Vous pouvez effectuer d'autres ajustements de configuration de réplica en fonction des besoins de votre application.

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

systemctl restart redis

21. Ouvrez également le port 6379 dans le pare-feu pour autoriser les connexions du maître et des clients vers les 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éplica

22. Une fois la configuration de la réplication maître-réplique 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 valeur-clé dans l'instance principale et vérifions si les données sont synchronisées avec les réplicas.

Sur le maître, faites ceci :

redis-cli
127.0.0.1:6379> AUTH Securep@55Here
127.0.0.1:6379> set domain 'linux-console.net'

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

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

25. Redis dispose d'une fonctionnalité qui permet à une instance principale de limiter le risque de perte de certaines écritures en cas de nombre insuffisant de réplicas disponibles, à un nombre de secondes spécifié.

Cela signifie qu'un maître peut cesser d'accepter les écritures s'il y a moins de N répliques connectées, avec un décalage inférieur ou égal à M secondes, tel que contrôlé par le min -replicas-to-write et min-replicas-max-lag respectivement.

Pour les définir, supprimez les commentaires et définissez les valeurs en fonction de vos exigences 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 les é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, lisez sur la réplication dans la documentation Redis.

Dans le prochain article, nous expliquerons comment configurer Redis pour la haute disponibilité avec Sentinel dans CentOS 8. D'ici là, restez verrouillé et n'oubliez pas de partager vos réflexions et vos questions en utilisant notre formulaire de commentaires ci-dessous, à votre disposition.