GNU/Linux >> Tutoriels Linux >  >> Cent OS

Comment configurer un cluster Redis dans CentOS 8 - Partie 3

Cluster Redis est un Redis intégré fonctionnalité qui prend en charge le partitionnement automatique, la réplication et la haute disponibilité qui était auparavant implémentée à l'aide de Sentinels . Il est conçu pour deux objectifs principaux :l'un est de diviser automatiquement votre ensemble de données entre plusieurs instances et, d'autre part, de fournir un certain degré de disponibilité pendant les partitions, de 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 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 consiste à ajouter plus de nœuds ou à créer une asymétrie dans le cluster, pour modifier automatiquement la disposition du cluster).

Selon le Redis documentation du cluster, le "cluster minimal » qui fonctionne comme prévu nécessite de contenir au moins 3 nœuds maîtres. Mais la configuration la plus appropriée pour la haute disponibilité devrait avoir au moins 6 nœuds avec trois maîtres et trois esclaves, chaque maître ayant un esclave.

Important  :Redis Cluster a également certaines limitations qui sont le manque de support pour NATted environnements 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 explique comment configurer un cluster Redis (avec 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.

Prérequis :

  1. Serveurs avec installation de 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

Diagramme logique du cluster Redis

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 partitions contiennent toutes les données du cluster dans chaque nœud. Une application API ou CLI le client ne peut écrire que sur les nœuds maîtres mais lire à partir de n'importe quel nœud du cluster.

Étape 1 :Installer Redis sur tous les nœuds

1. Connectez-vous à toutes les instances via SSH , puis exécutez la commande suivante pour installer Redis module à l'aide du gestionnaire de packages DNF, comme indiqué.

# dnf module install redis

2. Ensuite, démarrez le Redis service, activez-le pour qu'il démarre 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 /etc/redis.conf fichier de configuration pour configurer Redis serveur. 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 lier Le paramètre définit l'interface du serveur Redis sur laquelle écouter, définissez sa valeur sur l'adresse IP LAN de l'instance. Supprimez le 127.0.0.1 parce que nous avons réalisé que le laisser là ralentissait le processus de création du cluster, en particulier l'étape de rejoindre le cluster.

bind  10.42.0.247

Ensuite, définissez le mode protégé à no pour autoriser les connexions à partir des 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

Définir l'interface et le port d'écoute Redis

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

cluster-enabled yes

Ensuite, le cluster-config-file paramètre définit le nom du fichier de configuration du 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éfini à l'aide du dir paramètre) et n'est pas modifiable par l'utilisateur.

cluster-config-file nodes-6379.conf

La prochaine option de cluster utile est cluster-node-timeout , il est utilisé pour définir la durée maximale en millisecondes pendant laquelle une instance peut être indisponible pour qu'elle soit considérée comme en état d'échec. Une valeur de 15000 équivaut à 15 secondes.

cluster-node-timeout 15000

Définir le délai d'expiration du nœud de cluster

6. Nous devons également activer la persistance Redis sur le disque. Nous pouvons utiliser l'un des modes de persistance, c'est-à-dire le Append Only File (AOF ) :il se connecte (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 appendonly paramètre à yes .

appendonly yes

Définir les options de persistance

7. Après avoir apporté toutes les modifications, redémarrez le Redis service sur tous les nœuds pour appliquer les modifications récentes.

# systemctl restart redis

8. À ce stade, chaque nœud de 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

Vérifier le fichier journal du nœud de cluster

9. Ensuite, ouvrez le port 6397 et 16379 sur toutes les instances. Le dernier port est utilisé pour le bus de cluster (un nœud à nœud canal de communication 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 la ligne de commande redis-cli client comme suit. Le --cluster create active 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 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

Créer un cluster Redis

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 en utilisant le -h flag) pour lister 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 illustré dans la capture d'écran suivante.

Vérifier tous les nœuds de cluster sur n'importe quel nœud

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 des liens, emplacements (pour les maîtres).

Étape 4 :Tester le basculement du cluster Redis

12. Dans cette section, nous allons montrer comment tester un basculement de cluster. Tout d'abord, notons les maîtres.

# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Répertorier les clusters maîtres Redis

Notez également les esclaves Redis.

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

Répertorier tous les esclaves du cluster Redis

13. Ensuite, arrêtons le service Redis sur l'un des nœuds maîtres, par exemple 10.42.0.197 et vérifiez 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 son esclave 10.42.0.21:6379 a été promu au statut de maître.

Vérifier l'état de basculement du cluster

14. Commençons maintenant le Redis service à nouveau sur le nœud défaillant et vérifiez tous les maîtres du cluster.

# systemctl start redis
# redis-cli -h 10.42.0.247 -p 6379 cluster nodes  | grep master

Vérifier l'état de tous les maîtres de cluster Redis

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

Vérifier tous les esclaves du cluster Redis

Étape 5 :Tester la réplication des données dans 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 -c commutateur 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

Vérifier la réplication des données du cluster Redis

L'essentiel est le cluster Redis est le meilleur moyen d'obtenir un partitionnement automatique, une réplication et une haute disponibilité. Il existe de nombreux autres paramètres de configuration bien documentés dans le reste de /etc/redis.conf fichier, vous pouvez trouver plus d'informations dans la documentation officielle :didacticiel 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.

Partager c'est aimer…
Partager sur FacebookPartager sur TwitterPartager sur LinkedinPartager sur Reddit
Cent OS
  1. Comment installer et configurer Redis sur CentOS 7

  2. Comment installer et configurer Redis sur CentOS 8

  3. Comment installer le serveur Redis sur CentOS 8 / RHEL 8

  4. Comment configurer les clés SSH sur CentOS 8

  5. Comment installer Redis sur CentOS 7

Comment installer Redis sur CentOS 7

Comment installer phpRedisAdmin sur CentOS 7

Comment installer PhpRedmin sur CentOS 7

Comment installer Redis sur CentOS 8

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

Comment configurer Redis pour une haute disponibilité avec Sentinel dans CentOS 8 - Partie 2