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

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

Redis (Serveur de dictionnaire distant ) est un serveur de base de données/structure de données clé-valeur en mémoire très populaire et largement utilisé, rapide, distribué et efficace.

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 l'écriture de données en mémoire sur le disque dans un format compact, le clustering et partitionnement. Il propose également des basculements automatiques pour un déploiement haute disponibilité via Redis Sentinel , Scripts Lua , transactions , et bien d'autres.

Être un NO SQL ou base de données non relationnelle, Redis offre certains avantages en termes de performances par rapport aux systèmes de base 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, tandis 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 pour la mise en cache, qui permet la réutilisation des 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 les données fréquemment utilisées. C'est donc un compagnon fantastique de RDMS (Systèmes de gestion de bases de données relationnelles ) pour finalement améliorer les performances de l'application.

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

Partie 1  :Comment configurer la réplication Redis (avec le mode cluster désactivé) dans CentOS 8 Partie 2  :Comment configurer Redis pour la haute disponibilité avec Sentinel dans CentOS 8 Partie 3  :Comment configurer un cluster Redis (avec le mode cluster activé) dans CentOS 8

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) où un cluster Redis avec le mode cluster activé peut être composé de deux groupes de nœuds ou plus (par exemple, trois maîtres ayant chacun des esclaves ou deux).

Prérequis :

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

Représentation logique du diagramme de réplication Redis

Avec la configuration ci-dessus (qui a 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 copie initiale 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 ne peut écrire que sur le maître mais lire à partir de 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 esclaves en temps réel.

Étape 1 :Installer Redis sur CentOS 8

1. Pour commencer, connectez-vous à tous les CentOS 8 nœuds via SSH, puis installez le Redis package sur tous les nœuds (maître et réplicas) à l'aide du gestionnaire de packages DNF, comme indiqué.

# dnf install @redis

2. À la fin du Redis installation du package, démarrez Redis service, 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 Redis serveur est opérationnel en vérifiant les ports d'écoute à l'aide de la commande ss, comme suit.

# ss -ltpn | grep redis-server

Confirmer les ports du serveur Redis

Étape 2 :Configurer le serveur maître Redis

4. Redis est configuré à l'aide de /etc/redis.conf fichier de configuration, un exemple de fichier de configuration auto-documenté. Commencez par créer 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, un Redis l'instance est configurée pour écouter et accepter les connexions sur le bouclage interface, en utilisant la directive bind. Pour communiquer avec les répliques, le maître doit être configuré pour écouter sur IPv4 adresse de bouclage 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 de mode protégé sur no pour permettre la communication avec les répliques comme indiqué.

protected-mode no

De plus, Redis écoute sur le port 6379 qui est défini à l'aide du port directif. Il s'agit du port de données permettant de communiquer avec les API d'application ou les clients CLI.

port 6379

Configuration du serveur maître Redis

7. Pour éventuellement sécuriser le réplique maître communications, nous pouvons protéger le maître en utilisant le requirepass , de sorte que les clients/réplicas doivent émettre 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  [email protected]

Définir le mot de passe d'authentification

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

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

Définir le fichier journal Redis et le niveau de journal

9. Depuis systemd est le gestionnaire de système et de service par défaut dans CentOS 8 , vous pouvez configurer Redis pour interagir avec le systemd arborescence de supervision en définissant l'arborescence supervisé paramètre à systemd .

supervised systemd

Définissez le superviseur Redis sur Systemd

10. Après avoir effectué toutes les configurations nécessaires, enregistrez le fichier et fermez-le. Redémarrez ensuite le Redis service pour appliquer les nouvelles modifications.

# systemctl daemon-reload
# systemctl restart redis

11. Pour accéder à Redis serveur, 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 localhost127.0.0.1 port 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 l'authentification commande 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 [email protected]
127.0.0.1:6379> client list

Accéder au serveur Redis via la CLI Redis

12. Pour se connecter à une réplication (après les avoir configurés comme décrit dans la section suivante), utilisez le -h et -p options pour spécifier l'adresse IP/le nom d'hôte et le port du réplica respectivement (pas ce port 6379 doit être ouvert dans le pare-feu du réplica).

# redis-cli -h 10.42.0.21 -p 6379

13. Ensuite, ouvrez le Redis port de données du serveur dans le pare-feu pour autoriser les connexions entrantes vers le maître, puis recharger 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 redis/esclaves

14. Pour configurer rapidement un Redis instance en tant que réplica à la volée, utilisez le redis-cli utilitaire et appelez le REPLICAOF commande comme indiqué.

# redis-cli replicaof 10.42.0.247 6379
OR
# redis-cli
127.0.0.1:6379> REPLICAOF 10.42.0.247 6379

Connectez-vous à une instance Master Redis

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 d'origine, 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 au réplica pour lire les données, ajoutez l'adresse IP du 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éfinition d'une instance Redis en tant que réplica

17. Pour configurer une instance Redis en tant que réplica , utilisez la réplique de 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

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, en utilisant le masterauth paramètre.

masterauth [email protected]

19. De plus, lorsqu'un réplica perd sa connexion avec le maître, ou lorsque la réplication est en cours, le réplica est configuré pour répondre aux demandes des clients, éventuellement avec "obsolète " Les 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 replica-serve-stale-data paramètre.

Et, depuis Redis 2.6 par défaut, les répliques sont en lecture seule, ceci est contrôlé par le replica-read-only paramètre. Vous pouvez effectuer d'autres ajustements de configuration de réplica pour répondre aux besoins de votre application.

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

# systemctl restart redis

21. Ouvrez également le port 6379 dans le pare-feu pour autoriser les connexions du maître et des clients aux répliques, et recharger 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 le réplique maître la configuration de la réplication 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 [email protected]
127.0.0.1:6379> info replication

Vérifier les informations de relocalisation Redis sur Master

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

Vérifier les informations de réplication Redis sur Redis Replica 1

Vérifier les informations de réplication Redis sur Redis Replica 2

23. Testons maintenant la réplication en définissant une valeur-clé dans l'instance maître et vérifiez si les données sont synchronisées avec les répliques.

Sur le maître, procédez comme suit :

# redis-cli
127.0.0.1:6379> AUTH [email protected]
127.0.0.1:6379> set domain 'www.tecmint.com'

Définir la valeur de la clé dans l'instance principale

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

Vérifier l'état de la synchronisation des données sur les répliques

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 d'insuffisance de répliques disponibles, à un nombre de secondes spécifié.

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

Pour les définir, décommentez-les et définissez les valeurs en fonction de vos exigences de configuration dans /etc/redis.conf , comme illustré dans la capture d'écran suivante. Cette configuration signifie que, du dernier ping aux 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

Protéger le maître Redis contre la perte d'écriture

Vous pouvez trouver plus d'options dans le reste du /etc/redis.conf fichier de configuration 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 une haute disponibilité avec Sentinel dans CentOS 8 . Jusque-là, restez confinés et n'oubliez pas de partager vos réflexions et questions en utilisant notre formulaire de commentaires ci-dessous est là pour que vous nous contactiez.

Partager c'est aimer…
Partager sur FacebookPartager sur TwitterPartager sur LinkedinPartager sur Reddit
Cent OS
  1. Comment configurer un serveur FTP avec VSFTPD sur CentOS 7

  2. Comment configurer un serveur FTP avec VSFTPD sur CentOS 8

  3. Comment installer et configurer Varnish Cache 6 avec Nginx sur CentOS 8

  4. Comment configurer Pure-FTPD avec MySQL sur CentOS et RedHat

  5. Comment configurer la réplication MySQL sur CentOS

Comment configurer MariaDB Galera Cluster avec HAproxy sur CentOS 7

Comment configurer la réplication MySQL dans RHEL/Centos

Comment installer Redis sur CentOS 6

Comment installer Redis sur CentOS 7

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

Comment configurer un cluster Redis dans CentOS 8 - Partie 3