Redis Cluster est une fonctionnalité intégrée de Redis qui prend en charge le sharding automatique, la réplication et la haute disponibilité qui étaient précédemment implémentés à l’aide de Sentinels. Il est conçu pour deux objectifs majeurs : d’une part, diviser automatiquement votre ensemble de données entre plusieurs instances et, d’autre part, fournir un certain degré de disponibilité pendant les partitions, pour continuer les opérations lorsque certaines instances (en particulier les maîtres) échouent ou ne peuvent pas communiquer avec la majorité des nœuds du cluster.
Cependant, le cluster cesse de fonctionner en cas de défaillances plus importantes (par exemple, lorsque la majorité des instances maîtres ne sont pas disponibles). De plus, si un maître et un esclave échouent en même temps, le cluster ne peut pas continuer les opérations normales (bien que la solution de contournement soit d’ajouter plus de nœuds ou de créer une asymétrie dans le cluster, pour modifier automatiquement la configuration du cluster).
Selon la documentation du cluster Redis, le « cluster minimal » qui fonctionne comme prévu doit contenir au moins 3 nœuds maîtres. Mais la configuration la plus adaptée pour une haute disponibilité devrait comporter au moins 6 nœuds avec trois maîtres et trois esclaves, chaque maître ayant un esclave.
Important : Redis Cluster présente également certaines limitations, telles que le manque de prise en charge des environnements NATted ainsi que ceux où les adresses IP ou les ports TCP sont remappés, par exemple sous Docker. De plus, toutes les bibliothèques clientes ne le prennent pas en charge.
Cet article montre comment configurer un cluster Redis (avec Mode Cluster Désactivé) dans CentOS 8. Il inclut l’installation de Redis, la configuration des nœuds du cluster, la création d’un cluster et le test de la bascule de défaillance du cluster.
Note : Pour ce guide, nous utiliserons des instances Redis fraîches/vierges pour exécuter le mode cluster. Le mode cluster ne fonctionnera pas avec certaines configurations effectuées dans les deux premiers guides de notre Série Redis, en particulier il ne fonctionne pas lorsque le paramètre replica est utilisé.
Prérequis :
Configuration de l’environnement de test
Redis Master1: 10.42.0.247 Redis Master2: 10.42.0.197 Redis Master3: 10.42.0.132 Redis Slave1: 10.42.0.200 Redis Slave2: 10.42.0.21 Redis Slave3: 10.42.0.34

Notre configuration comprend 3 nœuds maîtres en lecture/écriture et 3 nœuds réplicas en lecture seule, chaque maître ayant une réplica, donc trois fragments contiennent toutes les données du cluster dans chaque nœud. Une application API ou un client CLI peut écrire uniquement sur les nœuds maîtres mais lire à partir de n’importe quel nœud du cluster.
Étape 1 : Installation de Redis sur tous les nœuds
1. Connectez-vous à toutes les instances via SSH, puis exécutez la commande suivante pour installer le module Redis en utilisant le gestionnaire de paquets DNF comme indiqué.
# dnf module install redis
2. Ensuite, démarrez le service Redis, activez-le pour qu’il démarre automatiquement au démarrage du système et vérifiez son statut pour vérifier qu’il fonctionne (vérifiez le service sur toutes les 6 instances) :
# systemctl start redis # systemctl enable redis # systemctl status redis
Étape 2 : Configuration des instances Redis sur tous les nœuds
3. Cette section décrit comment configurer les nœuds du cluster Redis. N’oubliez pas d’effectuer les configurations ici sur tous les nœuds.
Utilisez le fichier de configuration /etc/redis.conf pour configurer le serveur Redis. Comme pratique recommandée, créez une sauvegarde du fichier d’origine avant de le modifier en utilisant un éditeur de texte en ligne de commande de votre choix.
# cp /etc/redis.conf /etc/redis.conf.orig # vi /etc/redis.conf
4. Ensuite, trouvez les paramètres de configuration suivants et modifiez leurs valeurs comme indiqué. Le paramètre bind définit l’interface sur laquelle le serveur Redis écoutera, définissez sa valeur sur l’IP LAN de l’instance. Supprimez le 127.0.0.1 car nous avons réalisé que le laisser là ralentit le processus de création de cluster, en particulier à l’étape de rejoindre le cluster.
bind 10.42.0.247
Ensuite, définissez le mode protégé sur non
pour permettre les connexions des autres instances du cluster.
protected-mode no
Le paramètre de port définit le port sur lequel le serveur Redis écoutera les connexions, la valeur par défaut est 6379. C’est le port de données pour communiquer avec les clients.
port 6379

5. Le prochain ensemble de paramètres activera le mode cluster et définira certaines de ses fonctionnalités utiles. Le paramètre cluster-activé, lorsqu’il est réglé sur oui
, active le mode cluster.
cluster-enabled yes
Ensuite, le paramètre fichier de configuration du cluster définit le nom du fichier de configuration du cluster d’un nœud du cluster (par exemple nodes-6379.conf). Le fichier est créé dans le répertoire de travail (par défaut /var/lib/redis défini à l’aide du paramètre dir) et n’est pas modifiable par l’utilisateur.
cluster-config-file nodes-6379.conf
La prochaine option de cluster utile est délai d’expiration du nœud du cluster, elle est utilisée pour définir le temps maximum en millisecondes pendant lequel une instance peut être indisponible avant d’être considérée en état de défaillance. Une valeur de 15000 est équivalente à 15 secondes.
cluster-node-timeout 15000

6. Nous devons également activer la persistance de Redis sur disque. Nous pouvons utiliser l’un des modes de persistance, c’est-à-dire le Fichier Append Only (AOF) : il consigne (dans le fichier appendonly.aof créé sous le répertoire de travail) chaque opération d’écriture reçue avec succès par le serveur. Les données seront jouées lors du démarrage du serveur pour reconstruire le jeu de données original.
Pour l’activer, réglez le paramètre appendonly sur oui
.
appendonly yes

7. Après avoir apporté toutes les modifications, redémarrez le service Redis sur tous les nœuds pour appliquer les modifications récentes.
# systemctl restart redis
8. À ce stade, chaque nœud du cluster devrait maintenant avoir un ID. Vous pouvez vérifier cela dans le fichier journal situé à /var/log/redis/redis.log.
# cat /var/log/redis/redis.log

9. Ensuite, ouvrez les ports 6397 et 16379 sur toutes les instances. Le dernier port est utilisé pour le bus de cluster (un canal de communication de nœud à nœud utilisant un protocole binaire). C’est une exigence de base pour les connexions TCP du cluster Redis.
# firewall-cmd --zone=public --permanent --add-port=6379/tcp # firewall-cmd --zone=public --permanent --add-port=16379/tcp # firewall-cmd --reload
Étape 3 : Création du cluster Redis
10. Pour créer le cluster, utilisez le client en ligne de commande redis-cli comme suit. La commande --cluster create
permet la création du cluster et --cluster-replicas 1
signifie créer une réplique par maître.
Pour notre configuration qui comporte 6 nœuds, nous aurons 3 maîtres et 3 esclaves.
Remarquez que les 6 premiers nœuds seront considérés comme des maîtres (M)
et les trois suivants seront considérés comme des esclaves (S)
. Le premier esclave c’est-à-dire 10.42.0.200:6379 réplique le premier maître c’est-à-dire 10.42.0.247:6379, le deuxième esclave réplique le deuxième maître, dans cet ordre.
La commande suivante est formatée de manière à ce que le résultat représente notre configuration logique ci-dessus.
# redis-cli --cluster create 10.42.0.247:6379 10.42.0.197:6379 10.42.0.132:6379 10.42.0.200:6379 10.42.0.21:6379 10.42.0.34:6379 --cluster-replicas 1

11. Une fois la création du cluster réussie, exécutez la commande suivante sur n’importe quel hôte (en spécifiant son adresse IP à l’aide du drapeau -h
) pour répertorier tous les nœuds du cluster.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes
Vous devriez pouvoir voir tous les nœuds du cluster, les esclaves indiquant leurs maîtres, comme le montre la capture d’écran suivante.

Les différents champs sont dans cet ordre : identifiant du nœud, adresse IP:port, indicateurs, dernier ping envoyé, dernier pong reçu, époque de configuration, état du lien, emplacements (pour les maîtres).
Étape 4 : Test de basculement de cluster Redis
12. Dans cette section, nous allons démontrer comment tester un basculement de cluster. Tout d’abord, prenons note des maîtres.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Prenez également note des esclaves Redis.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave

13. Ensuite, arrêtons le service Redis sur l’un des nœuds maîtres par exemple 10.42.0.197 et vérifions tous les nœuds maîtres du cluster.
# systemctl stop redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master
D’après la capture d’écran suivante, vous pouvez voir que le nœud 10.42.0.197:6367 est en état d’échec et que son esclave 10.42.0.21:6379 a été promu au statut de maître.

14. Maintenant, relançons le service Redis sur le nœud défaillant et vérifions tous les maîtres du cluster.
# systemctl start redis # redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep master

Vérifiez également les esclaves du cluster pour confirmer que le maître défaillant est maintenant un esclave.
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes | grep slave

Étape 5 : Test de la réplication des données à travers le cluster Redis
15. Cette dernière section explique comment vérifier la réplication des données du cluster. Nous allons créer une clé et une valeur sur l’un des maîtres, puis essayer de la lire depuis tous les nœuds du cluster comme suit. Utilisez l’interrupteur -c
pour activer le support du cluster sous l’utilitaire redis-cli et accéder aux données en mode cluster.
# redis-cli -c -h 10.42.0.247 -p 6379 set name 'TecMint.com' # redis-cli -c -h 10.42.0.247 -p 6379 get name # redis-cli -c -h 10.42.0.21 -p 6379 get name # redis-cli -c -h 10.42.0.132 -p 6379 get name # redis-cli -c -h 10.42.0.200 -p 6379 get name # redis-cli -c -h 10.42.0.197 -p 6379 get name # redis-cli -c -h 10.42.0.34 -p 6379 get name

En fin de compte, le Redis Cluster est la méthode préférée pour obtenir le sharding automatique, la réplication et une haute disponibilité. Il existe de nombreux autres paramètres de configuration bien documentés dans le reste du fichier /etc/redis.conf, vous pouvez trouver plus d’informations dans la documentation officielle : tutoriel du cluster Redis et spécification du cluster Redis.
Cela nous amène à la fin de la série de tutoriels Redis en trois parties. Le formulaire de retour ci-dessous peut être utilisé pour poster des questions ou des commentaires.
Source:
https://www.tecmint.com/setup-redis-cluster-in-centos-8/