Groupes de réplication Redis ElastiCache et mode cluster
Créez un groupe de réplication Redis pour augmenter la capacité de lecture et activez le mode cluster afin de répartir les données entre plusieurs groupes de nœuds.
Groupes de réplication Redis ElastiCache et mode cluster est une leçon AWS Solutions Architect gratuite sur CoddyKit. Ceci est la leçon 2 sur 4. Tu peux lire la leçon complète ci-dessous gratuitement — puis la pratiquer en direct dans le navigateur avec un éditeur de code intégré et un tuteur IA 24/7. Elle fait partie du parcours d'apprentissage AWS Solutions Architect, et ta progression se synchronise sur le web et l'application CoddyKit. Le cours AWS Solutions Architect comprend 4 leçons au total.
Présentation des groupes de réplication Redis
Un groupe de réplication ElastiCache est un regroupement logique composé d’un nœud Redis primaire et de jusqu’à 5 réplicas en lecture. Le nœud primaire gère toutes les opérations d’écriture ; les réplicas reçoivent une réplication asynchrone depuis le primaire et servent le trafic de lecture. Les groupes de réplication permettent deux fonctionnalités essentielles : la mise à l’échelle des lectures (répartition des demandes de lecture entre plusieurs réplicas) et la haute disponibilité avec basculement automatique (promotion d’un réplica au rang de primaire en cas de défaillance du primaire). Tous les nœuds d’un groupe de réplication partagent le même jeu de données.
# Create a replication group with 1 primary and 2 read replicas
aws elasticache create-replication-group \
--replication-group-id web-cache \
--replication-group-description 'Web application cache' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.large \
--engine redis \
--engine-version '7.0' \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name my-multi-az-subnet-groupPoint de terminaison primaire ou point de terminaison de lecture
ElastiCache fournit deux points de terminaison DNS pour un groupe de réplication : le point de terminaison primaire pointe toujours vers le nœud primaire actuel (il est automatiquement mis à jour lors d’un basculement) — utilisez-le pour toutes les opérations d’écriture. Le point de terminaison de lecture répartit la charge des demandes de lecture entre tous les réplicas disponibles — utilisez-le pour les opérations de lecture afin de distribuer la charge. Votre application doit gérer deux pools de connexions : un pour le point de terminaison primaire destiné aux écritures et un pour le point de terminaison de lecture destiné aux lectures. Il s’agit du modèle de connexion recommandé pour les groupes de réplication Redis d’ElastiCache.
# Get primary and reader endpoints
aws elasticache describe-replication-groups \
--replication-group-id web-cache \
--query 'ReplicationGroups[].{
Primary:NodeGroups[].PrimaryEndpoint.Address,
Reader:ReaderEndpoint.Address
}'
# Application connection pattern:
# write_client = redis.Redis(host='primary-endpoint', port=6379)
# read_client = redis.Redis(host='reader-endpoint', port=6379)Processus de basculement automatique
Lorsque le nœud primaire tombe en panne (ce qu’ElastiCache détecte en quelques secondes grâce aux vérifications d’état), le basculement automatique sélectionne l’un des réplicas en lecture pour le promouvoir au rang de primaire. Le processus de promotion se déroule comme suit : (1) le réplica sélectionné est promu au rang de primaire, (2) l’enregistrement DNS du point de terminaison primaire est mis à jour pour pointer vers le nouveau primaire (TTL d’environ 1 seconde), (3) l’ancien primaire est remplacé par un nouveau réplica. La durée totale du basculement est généralement comprise entre 30 et 60 secondes. Les applications qui utilisent le DNS du point de terminaison primaire se reconnectent automatiquement une fois la propagation DNS effectuée — aucune adresse IP codée en dur n’est nécessaire.
# Test failover manually (triggers primary failover)
aws elasticache test-failover \
--replication-group-id web-cache \
--node-group-id 0001
# Monitor failover events
aws elasticache describe-events \
--source-identifier web-cache \
--source-type replication-group \
--duration 60 \
--query 'Events[].{Time:Date,Message:Message}'Placement des réplicas dans plusieurs AZ
Pour une résilience maximale, répartissez les réplicas entre plusieurs zones de disponibilité. Lorsque vous activez Multi-AZ sur un groupe de réplication, ElastiCache place automatiquement le primaire et les réplicas dans des AZ différentes. Si une AZ entière devient indisponible, le basculement promeut un réplica situé dans une AZ encore opérationnelle. Vous pouvez également spécifier explicitement les AZ préférées pour chaque nœud lors de la création du groupe de réplication à l’aide de l’option --preferred-cache-cluster-a-zs.
# Create replication group with explicit AZ placement
aws elasticache create-replication-group \
--replication-group-id ha-redis \
--replication-group-description 'Multi-AZ Redis' \
--num-cache-clusters 3 \
--cache-node-type cache.r7g.xlarge \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--preferred-cache-cluster-a-zs us-east-1a us-east-1b us-east-1c \
--cache-subnet-group-name multi-az-subnetsQu’est-ce que le Redis Cluster Mode ?
Redis Cluster Mode Enabled (CME) partitionne le jeu de données entre plusieurs groupes de nœuds (partitions), chacun contenant un primaire et jusqu’à 5 réplicas. Il s’agit de la solution de partitionnement horizontal de Redis. Le Cluster Mode vous permet de dépasser la capacité mémoire d’un seul nœud : vous pouvez disposer de jusqu’à 500 groupes de nœuds de 500 GB chacun, ce qui permet à un seul cluster Redis de stocker jusqu’à 500 × 500 GB = 250 TB de données. Le Cluster Mode multiplie également le débit d’écriture, car chaque groupe de nœuds traite indépendamment les écritures correspondant à sa plage de clés.
# Create a Redis Cluster Mode Enabled replication group
# with 3 shards, each with 1 primary and 2 replicas
aws elasticache create-replication-group \
--replication-group-id clustered-redis \
--replication-group-description 'Cluster mode: 3 shards x 3 nodes' \
--num-node-groups 3 \
--replicas-per-node-group 2 \
--cache-node-type cache.r7g.large \
--engine redis \
--automatic-failover-enabled \
--multi-az-enabled \
--cache-subnet-group-name multi-az-subnetsEmplacements de hachage et distribution des clés
Le Redis Cluster Mode divise l’espace des clés en 16 384 emplacements de hachage. Chaque groupe de nœuds possède une plage contiguë d’emplacements de hachage. Lorsqu’une clé est écrite, Redis calcule CRC16(key) % 16384 afin de déterminer l’emplacement de hachage et, par conséquent, le groupe de nœuds responsable. Votre application doit utiliser un client Redis compatible avec les clusters (tel que redis-py-cluster ou Jedis en mode cluster) qui connaît la carte des emplacements et achemine chaque commande vers le nœud approprié. Les clients standard renvoient des erreurs de redirection MOVED s’ils envoient une clé vers la mauvaise partition.
# Python cluster-aware client example
# pip install redis[hiredis]
# from redis.cluster import RedisCluster
# cluster_client = RedisCluster(
# host='clustered-redis.abc123.clustercfg.use1.cache.amazonaws.com',
# port=6379,
# decode_responses=True
# )
# The client automatically resolves slot-to-node mapping
# cluster_client.set('user:1', 'Alice') # routes to correct shard
# cluster_client.get('user:1') # routes to correct shardMode cluster ou mode sans cluster
Pour l’examen SAA-C03, choisissez le mode sans cluster lorsque : vos données tiennent sur un seul nœud (< ~400 GB après prise en compte de la marge), vous avez besoin d’une configuration primaire/réplica simple ou votre application utilise des opérations complexes sur plusieurs clés (les transactions portant sur plusieurs clés nécessitent que toutes les clés se trouvent dans le même emplacement). Choisissez le mode cluster lorsque : votre jeu de données dépasse la mémoire d’un seul nœud, vous avez besoin d’une mise à l’échelle horizontale du débit d’écriture ou vous prévoyez une croissance future nécessitant un repartitionnement en ligne. Le mode cluster permet d’ajouter des partitions sans interruption de service (repartitionnement en ligne).
# Scale out a cluster-mode Redis by adding shards
aws elasticache modify-replication-group-shard-configuration \
--replication-group-id clustered-redis \
--node-group-count 5 \
--apply-immediately \
--resharding-configuration \
NodeGroupId=0004,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c \
NodeGroupId=0005,PreferredAvailabilityZones=us-east-1a,us-east-1b,us-east-1c
# No downtime — slots are migrated incrementallyGlobal Datastore pour la réplication interrégionale
ElastiCache Global Datastore étend la réplication Redis à plusieurs Régions AWS. Vous désignez une Région comme cluster principal et ajoutez des clusters secondaires dans d’autres Régions. Les écritures sont dirigées vers le cluster principal ; les clusters secondaires reçoivent une réplication asynchrone, avec un délai généralement inférieur à une seconde. Les clusters secondaires peuvent traiter les lectures locales avec une latence très faible. Global Datastore permet de créer des applications mondiales, dans lesquelles les utilisateurs de différents continents lisent les données depuis la Région la plus proche, ainsi qu’une DR interrégionale, dans laquelle vous pouvez promouvoir un cluster secondaire au rang de cluster principal si la Région principale tombe en panne.
# Create a Global Datastore (adds a secondary region to an existing cluster)
aws elasticache create-global-replication-group \
--global-replication-group-id-suffix my-global-cache \
--primary-replication-group-id prod-redis
# Add a secondary cluster in another region
aws elasticache create-replication-group \
--replication-group-id prod-redis-eu \
--replication-group-description 'EU secondary' \
--global-replication-group-id ldgnf-my-global-cache \
--region eu-west-1Redis Pub/Sub à grande échelle
Dans un groupe de réplication Redis sans clustering, les messages de publication/abonnement sont distribués à tous les réplicas : tout abonné connecté à n’importe quel nœud reçoit les messages publiés sur un canal. En revanche, en mode cluster, la publication/abonnement est limitée aux notifications d’espace de clés, et la publication/abonnement fondée sur les canaux ne fonctionne qu’au sein d’un seul fragment, sauf si vous utilisez Redis 7+ avec le partitionnement Pub/Sub (SSUBSCRIBE / SPUBLISH pour une publication/abonnement tenant compte des fragments). Il s’agit d’une limitation importante lors de la conception d’un système de publication/abonnement à grande échelle en mode cluster.
# Keyspace notification (fires when a key expires)
# Enable in parameter group: notify-keyspace-events Ex
# Subscriber in Python:
# pubsub = redis_client.pubsub()
# pubsub.psubscribe('__keyevent@0__:expired')
# for message in pubsub.listen():
# if message['type'] == 'pmessage':
# expired_key = message['data']
# print(f'Key expired: {expired_key}')Surveiller le délai de réplication
Surveillez la métrique ReplicationLag de CloudWatch sur les réplicas de lecture afin de vérifier qu’ils suivent correctement le nœud principal. Un délai supérieur à quelques secondes indique un goulot d’étranglement sur le réplica (nœud surchargé, problèmes réseau ou volume d’écritures trop important pour être traité par le réplica). Dans les scénarios utilisant Global Datastore, surveillez GlobalDatastoreReplicationLag. Un délai de réplication élevé signifie que les réplicas de lecture peuvent renvoyer des données obsolètes, ce qui est important pour les applications qui exigent une cohérence éventuelle dans des limites strictes.
# Monitor replication lag for all replicas
aws cloudwatch get-metric-statistics \
--namespace AWS/ElastiCache \
--metric-name ReplicationLag \
--dimensions Name=ReplicationGroupId,Value=web-cache \
--statistic Maximum \
--period 60 \
--start-time $(date -u -d '1 hour ago' +%Y-%m-%dT%H:%M:%SZ) \
--end-time $(date -u +%Y-%m-%dT%H:%M:%SZ)
# Alert if ReplicationLag > 10 secondsMise à l’échelle des groupes de réplication
Vous pouvez effectuer une mise à l’échelle verticale (modifier le type de nœud) ou une mise à l’échelle horizontale (ajouter ou supprimer des réplicas). La modification du type de nœud nécessite un appel modify-replication-group et entraîne un bref basculement lorsqu’elle est appliquée immédiatement : le nœud principal est remplacé par un nouveau nœud du nouveau type. L’ajout de réplicas s’effectue en ligne, sans interruption de service. Pour passer d’un mode sans cluster au mode cluster, vous devez créer un nouveau groupe en mode cluster et effectuer une migration : il n’existe pas de conversion sur place entre les modes cluster et sans cluster.
# Scale up node type with maintenance window
aws elasticache modify-replication-group \
--replication-group-id web-cache \
--cache-node-type cache.r7g.xlarge \
--apply-immediately false
# Add a read replica
aws elasticache increase-replica-count \
--replication-group-id web-cache \
--new-replica-count 4 \
--apply-immediatelyVérification rapide
Vérifiez votre compréhension des concepts AWS Solutions Architect (SAA-C03) présentés dans cette leçon.
Récapitulatif de la leçon
Dans cette leçon, vous avez appris que les groupes de réplication permettent de mettre les lectures à l’échelle grâce aux réplicas et d’assurer une haute disponibilité grâce au basculement automatique, avec des points de terminaison principal et lecteur ; que le mode cluster répartit les données entre jusqu’à 500 groupes de nœuds en utilisant 16 384 emplacements de hachage afin d’effectuer une mise à l’échelle horizontale au-delà de la mémoire d’un seul nœud ; et que Global Datastore réplique les données entre les Régions pour fournir des lectures mondiales à faible latence et une DR interrégionale. Nous allons maintenant étudier les stratégies de mise en cache : le chargement différé et l’écriture directe.
Questions Fréquemment Posées
La leçon « Groupes de réplication Redis ElastiCache et mode cluster » est-elle gratuite ?
Oui — le texte complet de « Groupes de réplication Redis ElastiCache et mode cluster » est gratuit à lire ici sur le web. Pour la pratiquer de manière interactive (un éditeur de code intégré et un tuteur IA 24/7) et déverrouiller le reste du cours AWS Solutions Architect, passe à CoddyKit PRO. Le cours AWS Solutions Architect comprend 4 leçons au total.
Qu'est-ce que j'apprendrai dans « Groupes de réplication Redis ElastiCache et mode cluster » ?
Créez un groupe de réplication Redis pour augmenter la capacité de lecture et activez le mode cluster afin de répartir les données entre plusieurs groupes de nœuds. Tu pratiques AWS Solutions Architect avec du code pratique que tu exécutes directement dans le navigateur, et un tuteur IA 24/7 répond à tes questions au fur et à mesure que tu avances dans la leçon.
Dois-je avoir de l'expérience pour commencer AWS Solutions Architect ?
Aucune expérience préalable n'est requise. AWS Solutions Architect sur CoddyKit est structuré pour les débutants jusqu'aux apprenants avancés, donc tu peux commencer ici ou depuis le début et avancer à ton rythme. Ceci est la leçon 2 sur 4.
Combien de temps prend la leçon « Groupes de réplication Redis ElastiCache et mode cluster » ?
La plupart des leçons CoddyKit prennent environ 5–10 minutes. Chacune est courte et interactive, tu progresses régulièrement et tu repiques exactement où tu t'es arrêté sur le web et l'app.
Peux-tu écrire et exécuter du code dans cette leçon AWS Solutions Architect ?
Oui. Chaque leçon AWS Solutions Architect inclut un éditeur de code intégré, tu écris et exécutes du vrai code directement dans ton navigateur et tu reçois des retours IA instantanés — aucune configuration locale requise.
Toutes les leçons de ce cours
- Redis ou Memcached : choisir le moteur adapté
- Groupes de réplication Redis ElastiCache et mode cluster
- Stratégies de mise en cache : chargement différé et écriture directe
- Stockage des sessions et modèles de classements