Recherche de site Web

Comment configurer un cluster Redis dans CentOS 8 - Partie 3


Redis Cluster est une fonctionnalité Redis intégrée qui prend en charge le partitionnement automatique, la réplication et la haute disponibilité, précédemment implémentée à l'aide de Sentinels. Il est conçu pour deux objectifs principaux : l'un consiste à diviser automatiquement votre ensemble de données entre plusieurs instances et, d'autre part, à fournir un certain degré de disponibilité lors des partitions, pour poursuivre les opérations lorsque certaines instances (en particulier les maîtres) échouent ou ne sont pas en mesure de communiquer avec la majorité des instances. nœuds du cluster.

Cependant, le cluster cesse de fonctionner en cas de pannes plus importantes (par exemple lorsque la majorité des instances maîtres sont indisponibles). De plus, si un maître et un esclave échouent en même temps, le cluster ne peut pas continuer ses opérations normales (bien que la solution de contournement consiste à ajouter plus de nœuds ou à créer une asymétrie dans le cluster, pour modifier automatiquement la disposition du cluster).

Selon la documentation du cluster Redis, le « cluster minimal » qui fonctionne comme prévu nécessite de contenir au moins 3 nœuds maîtres. Mais la configuration la plus adaptée à la haute disponibilité doit 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, notamment le manque de prise en charge des environnements NATted ainsi que de ceux pour lesquels les adresses IP ou les ports TCP sont remappés. instance sous Docker. De plus, toutes les bibliothèques clientes ne le prennent pas en charge.

Cet article montre comment configurer un Cluster Redis (avec le Mode cluster désactivé) dans CentOS 8. Il explique comment installer Redis, configurer les nœuds du cluster, créer un cluster et tester le basculement du cluster.

Remarque : Pour ce guide, nous utiliserons des instances Redis fraîches/vides 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 la réplique du paramètre est utilisée.

Conditions préalables:

  1. Serveurs avec installation CentOS 8

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 comporte 3 nœuds maîtres en lecture/écriture et 3 nœuds de réplique en lecture seule, chaque maître ayant une réplique, donc trois fragments contiennent toutes les données du cluster dans chaque nœud. Un client API ou CLI d'application 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 à l'aide du gestionnaire de packages DNF comme indiqué.

dnf module install redis

2. Ensuite, démarrez le service Redis, activez-le pour démarrer automatiquement au démarrage du système et vérifiez son état pour vérifier qu'il est en cours d'exécution (vérifiez le service sur 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. Il est recommandé de créer une sauvegarde du fichier d'origine avant de le modifier à l'aide d'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, recherchez les paramètres de configuration suivants et modifiez leurs valeurs comme indiqué. Le paramètre bind définit l'interface du serveur Redis qui écoutera, définit sa valeur sur l'adresse IP LAN de l'instance. Supprimez le 127.0.0.1 car nous avons réalisé que le laisser là ralentissait le processus de création du cluster, en particulier l'étape de connexion au cluster.

bind  10.42.0.247

Définissez ensuite le mode protégé sur no pour autoriser les connexions depuis les autres instances du cluster.

protected-mode no

Le paramètre port définit le port sur lequel le serveur Redis écoutera les connexions, la valeur par défaut est 6379. Il s'agit du port de données pour communiquer avec les clients.

port 6379

5. L'ensemble de paramètres suivant activera le mode cluster et définira certaines de ses fonctionnalités utiles. Le paramètre cluster-enabled, lorsqu'il est défini sur yes, active le mode cluster.

cluster-enabled yes

Ensuite, le paramètre cluster-config-file définit le nom du fichier de configuration de cluster d'un nœud de cluster (par exemple nodes-6379.conf). Le fichier est créé dans le répertoire de travail (la valeur par défaut est /var/lib/redis définie à 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 cluster-node-timeout, elle est utilisée pour définir la durée maximale en millisecondes pendant laquelle une instance peut être indisponible pour qu'elle soit considérée dans un état d'échec. Une valeur de 15 000 équivaut à 15 secondes.

cluster-node-timeout 15000

6. Nous devons également activer la persistance Redis sur le disque. Nous pouvons utiliser l'un des modes de persistance, à savoir le Append Only File (AOF) : il enregistre (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 lues lors du démarrage du serveur pour reconstruire l'ensemble de données d'origine.

Pour l'activer, définissez le paramètre appendonly sur yes.

appendonly yes

7. Après avoir effectué 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 de cluster doit désormais avoir un ID. Vous pouvez vérifier cela dans le fichier journal situé à l'adresse /var/log/redis/redis.log.

cat /var/log/redis/redis.log

9. Ensuite, ouvrez les ports 6397 et 16379 sur toutes les instances. Ce dernier port est utilisé pour le bus de cluster (un canal de communication de nœud à nœud utilisant un protocole binaire). Il s'agit d'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 de ligne de commande redis-cli comme suit. Le --cluster create permet la création de 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.

Notez 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 (spécifiez son adresse IP à l'aide de l'indicateur -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 indiqué dans la capture d'écran suivante.

Les différents champs sont dans cet ordre : ID de nœud, adresse IP : port, drapeaux, dernier ping envoyé, dernier pong reçu, époque de configuration, état du lien, emplacements (pour les maîtres).

Étape 4 : Test du basculement du cluster Redis

12. Dans cette section, nous montrerons 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

Dans 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. Redémarrons maintenant 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 désormais un esclave.

redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep slave

Étape 5 : tester la réplication des données sur 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 à partir de tous les nœuds du cluster comme suit. Utilisez le commutateur -c pour activer la prise en charge 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 cluster Redis est le moyen privilégié pour obtenir le partitionnement, la réplication et la haute disponibilité automatiques. 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 didacticiels Redis en trois parties. Le formulaire de commentaires ci-dessous peut être utilisé pour poster des questions ou des commentaires.