Environnement de développement basé sur Docker pour Redis Enterprise actif-actif

Environnement de développement basé sur Docker pour Redis Enterprise actif-actif

Redis Enterprise en tant que base de données active-active est idéal pour les applications géo-distribuées. Son architecture est basée sur des recherches universitaires de pointe autour des types de données répliquées sans conflit (CRDT). Cette approche offre de nombreux avantages par rapport aux autres bases de données actives-actives, notamment :

  1. Latence locale pour les opérations de lecture et d’écriture,
  2. Résolution de conflits intégrée pour les types de données simples et complexes,
  3. Basculement entre régions et
  4. Mise en œuvre simplifiée de cas d’utilisation tels que les classements, la mise en cache distribuée, les sessions partagées, la mesure multi-utilisateurs et bien d’autres.

Récemment, nous avons publié un tutoriel sur la façon de développer des applications à l’aide de Redis Enterprise actif-actif. Afin de simuler la configuration de production, les développeurs ou les testeurs ont besoin d’un environnement de développement miniaturisé — quelque chose de facile à créer avec Docker.

Redis Enterprise est disponible sur le hub Docker en tant que redis/rediset nous avons partagé des instructions détaillées étape par étape sur la configuration de Redis Enterprise sur Docker sur Redis Enterprise documentation et le hub docker lui-même.

Dans ce blog, nous vous guiderons à travers les étapes de création de votre cluster Redis Enterprise basé sur Docker, tout au long de la ligne de commande. Voici un aperçu de haut niveau du processus (plus de détails ci-dessous):

  1. Mettre en place une base de données
    1. Créer un cluster Redis Enterprise à trois nœuds avec chaque nœud sur un sous-réseau distinct
    2. Créer une base de données Redis Enterprise basée sur le CRDT
    3. Connectez-vous aux trois instances différentes
  2. Vérifiez votre configuration
  3. Diviser les réseaux
  4. Restaurer les connexions
  5. Arrêtez Redis Entreprise

Avant de commencer, assurez-vous d’avoir un shell bash en place et suffisamment de mémoire allouée à vos processus docker. Vous pouvez vérifier votre mémoire en allant dans Docker -> Préférences -> Avancé.

Préférences de mémoire Docker avancées

1. Configurer une base de données

Le script suivant crée une base de données Redis Enterprise basée sur CRDT sur un cluster à 3 nœuds. Enregistrez-le dans un fichier et donnez-lui un nom, comme “create_3_node_cluster.sh. Changez ensuite le mode en exécutable (chmod +x create_3_node_cluster.sh), et exécutez le script ([path]/create_3_node_cluster.sh).

#!/bin/bash

# Supprimer les réseaux de ponts s’ils existent déjà
réseau docker rm network1 2>/dev/null
réseau docker rm network2 2>/dev/null
réseau docker rm network3 2>/dev/null

# Créer de nouveaux réseaux de ponts
echo “Création de nouveaux sous-réseaux…”
réseau docker créer network1 –subnet=172.18.0.0/16 –gateway=172.18.0.1
réseau docker créer network2 –subnet=172.19.0.0/16 –gateway=172.19.0.1
réseau docker créer network3 –subnet=172.20.0.0/16 –gateway=172.20.0.1

# Démarrez 3 conteneurs Docker. Chaque conteneur est un nœud dans un réseau séparé
# Ces commandes extraient redis/redis du hub docker. En raison de l
# règles de mappage de ports, les instances Redis Enterprise sont disponibles sur les ports
# 12000, 12002, 12004
écho “”
echo “Démarrage de Redis Enterprise en tant que conteneurs Docker…”
docker run -d –cap-add sys_resource -h rp1 –name rp1 -p 8443:8443 -p 9443:9443 -p 12000:12000 –network=network1 –ip=172.18.0.2 redis/redis
docker run -d –cap-add sys_resource -h rp2 –name rp2 -p 8445:8443 -p 9445:9443 -p 12002:12000 –network=network2 –ip=172.19.0.2 redis/redis
docker run -d –cap-add sys_resource -h rp3 –name rp3 -p 8447:8443 -p 9447:9443 -p 12004:12000 –network=network3 –ip=172.20.0.2 redis/redis

# Connecter les réseaux
docker réseau connecter network2 rp1
docker réseau connecter network3 rp1
docker réseau connecter network1 rp2
docker réseau connecter network3 rp2
docker réseau connecter network1 rp3
docker réseau connecter network2 rp3

# Veille pendant que les nœuds démarrent. Augmentez le temps de veille si vos nœuds prennent
# plus de 60 secondes pour démarrer

écho “”
echo “En attente du démarrage des serveurs…”

dormir 60

# Créez 3 clusters Redis Enterprise – un pour chaque réseau. Vous pouvez vous connecter à
# un cluster comme https://localhost:8443/ (ou 8445, 8447). Le nom d’utilisateur est
# r@r.com, le mot de passe est le mot de passe. Changer d’utilisateur

écho “”
echo “Création de clusters”
docker exec -it rp1 /opt/redis/bin/rladmin cluster créer un nom cluster1.local nom d’utilisateur r@r.com mot de passe test
docker exec -it rp2 /opt/redis/bin/rladmin cluster créer un nom cluster2.local nom d’utilisateur r@r.com mot de passe test
docker exec -it rp3 /opt/redis/bin/rladmin cluster créer un nom cluster3.local nom d’utilisateur r@r.com mot de passe test

# Créer la CRDB
écho “”
echo “Création d’un CRDB”
docker exec -it rp1 /opt/redis/bin/crdb-cli crdb create –name mycrdb –memory-size 512mb –port 12000 –replication false –shards-count 1 –instance fqdn=cluster1.local,username=r@r. com,password=test –instance fqdn=cluster2.local,username=r@r.com,password=test –instance fqdn=cluster3.local,username=r@r.com,password=test

2. Vérifiez la configuration

Exécutez redis-cli sur les ports 12000, 12002 et 12004 pour vérifier que vous pouvez vous connecter aux trois nœuds Redis Enterprise. Si vous connectez votre application à Redis Enterprise, vous aurez besoin de trois instances de votre application se connectant aux trois ports différents. Par exemple:

$ redis-cli -p 12000
127.0.0.1:12000> incrément compteur
(entier) 1
127.0.0.1:12000> obtenir le compteur
“1”

3. Diviser les réseaux

Le fractionnement des réseaux vous aide à introduire une “partition réseau” entre les réplicas Redis Enterprise. Lorsque vous concevez votre application, vous devez la concevoir pour qu’elle fonctionne de manière transparente lorsque les répliques sont déconnectées. Ce script vous aide à isoler les trois répliques. Enregistrez ce script dans le fichier “split_networks.sh”, et changez le mode pour le rendre exécutable (chmod +x split_networks.sh) avant de l’exécuter.

#!/bin/bash

déconnexion du réseau docker network2 rp1
déconnexion du réseau docker network3 rp1
déconnexion du réseau docker network1 rp2
déconnexion du réseau docker network3 rp2
déconnexion du réseau docker network1 rp3
docker réseau déconnecter network2 rp3

4. Rétablir les connexions

Lorsque vous exécutez le script “split_netorks.sh”, les répliques locales cesseront de partager leurs mises à jour de base de données avec leurs pairs. La restauration de la connexion leur permettra d’échanger toutes les mises à jour et d’arriver au même état final, grâce à la forte cohérence éventuelle offerte par Redis Enterprise. Le script ci-dessous restaure les connexions réseau entre les répliques. Enregistrez-le dans un fichier “restore_networks.sh”, et changez le mode pour le rendre exécutable (chmod +x restore_networks.sh).

#!/bin/bash

docker réseau connecter network2 rp1
docker réseau connecter network3 rp1
docker réseau connecter network1 rp2
docker réseau connecter network3 rp2
docker réseau connecter network1 rp3
docker réseau connecter network2 rp3

5. Arrêtez Redis Entreprise

Lorsque vous avez terminé votre développement et vos tests, vous pouvez arrêter les trois nœuds de Redis Enterprise en exécutant le script suivant. Enregistrez le script dans un fichier, nommez-le “stop.sh”, et changez le mode pour le rendre exécutable (chmod +x stop.sh).

#!/bin/bash

docker stop rp1 rp2 rp3
docker rm rp1 rp2 rp3
réseau docker réseau rm1
réseau docker réseau rm2
réseau docker réseau rm3

C’est ça. Avec cela comme point de départ, vous disposez maintenant de votre propre configuration active-active Redis Enterprise basée sur Docker. Si vous avez des questions, n’hésitez pas à nous envoyer un courriel à produit@redis.com.

Si vous cherchez à démarrer avec Redis Enterprise dans le cloud, vous pouvez vous inscrire gratuitement ici.

Development Source

Related Posts

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

RLEC 4.2.1 apporte des contrôles granulaires à la haute disponibilité et aux performances

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Comment HolidayMe utilise Redis Enterprise comme base de données principale

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Annonce de RedisGears 1.0 : un moteur sans serveur pour Redis

Clés Redis dans la RAM |  Redis

Clés Redis dans la RAM | Redis

No Comment

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *