Grupos de replicação e modo de cluster do ElastiCache Redis
Crie um grupo de replicação do Redis para escalonar leituras e habilite o modo de cluster para fragmentar dados entre vários grupos de nós.
Grupos de replicação e modo de cluster do ElastiCache Redis é uma aula grátis de AWS Solutions Architect no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AWS Solutions Architect, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AWS Solutions Architect inclui 4 aulas no total.
Visão geral dos grupos de replicação do Redis
Um grupo de replicação do ElastiCache é um agrupamento lógico de um nó primário do Redis e até 5 réplicas de leitura. O nó primário processa todas as operações de gravação; as réplicas recebem a replicação assíncrona do primário e atendem ao tráfego de leitura. Os grupos de replicação permitem duas capacidades principais: escalabilidade de leitura (distribuir as solicitações de leitura entre várias réplicas) e alta disponibilidade com failover automático (promover uma réplica a primária se a primária falhar). Todos os nós de um grupo de replicação compartilham o mesmo conjunto de dados.
# 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-groupEndpoint primário vs Endpoint de leitura
O ElastiCache fornece dois endpoints DNS para um grupo de replicação: o endpoint primário sempre aponta para o nó primário atual (atualizado automaticamente durante o failover) — use-o para todas as operações de gravação. O endpoint de leitura distribui as solicitações de leitura entre todas as réplicas disponíveis — use-o para operações de leitura para distribuir a carga. Sua aplicação deve manter dois pools de conexão: um para o endpoint primário, destinado às gravações, e outro para o endpoint de leitura, destinado às leituras. Esse é o padrão de conexão recomendado para grupos de replicação do ElastiCache Redis.
# 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)Processo de failover automático
Quando o nó primário falha (detectado pelo ElastiCache em poucos segundos por meio de verificações de integridade), o failover automático seleciona uma das réplicas de leitura para promovê-la a primária. O processo de promoção é: (1) a réplica selecionada é promovida a primária; (2) o registro DNS do endpoint primário é atualizado para apontar para a nova primária (TTL de aproximadamente 1 segundo); (3) a primária antiga é substituída por uma nova réplica. O tempo total de failover normalmente é de 30 a 60 segundos. As aplicações que usam o DNS do endpoint primário se reconectam automaticamente assim que o DNS se propaga — não são necessários endereços IP codificados.
# 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}'Posicionamento de réplicas em Multi-AZ
Para obter a máxima resiliência, distribua as réplicas entre várias Zonas de disponibilidade. Quando você ativa o Multi-AZ em um grupo de replicação, o ElastiCache coloca automaticamente o primário e as réplicas em AZs diferentes. Se uma AZ inteira ficar offline, o failover promove uma réplica de uma AZ que permaneceu ativa. Você também pode especificar explicitamente as AZs preferenciais para cada nó ao criar o grupo de replicação usando a opção --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-subnetsO que é o Redis Cluster Mode
O Redis Cluster Mode Enabled (CME) particiona o conjunto de dados entre vários grupos de nós (fragmentos), cada um contendo um primário e até 5 réplicas. Essa é a solução de fragmentação horizontal do Redis. O Cluster Mode permite superar a memória de um único nó — você pode ter até 500 grupos de nós, cada um com 500 GB, permitindo que um único cluster Redis armazene até 500 × 500 GB = 250 TB de dados. O Cluster Mode também multiplica a capacidade de gravação, pois cada grupo de nós processa de forma independente as gravações referentes ao seu intervalo de chaves.
# 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-subnetsSlots de hash e distribuição de chaves
O Redis Cluster Mode divide o espaço de chaves em 16.384 slots de hash. Cada grupo de nós possui um intervalo contíguo de slots de hash. Quando uma chave é gravada, o Redis calcula CRC16(key) % 16384 para determinar o slot de hash e, consequentemente, o grupo de nós responsável. Sua aplicação deve usar um cliente Redis compatível com cluster (como redis-py-cluster ou Jedis no modo de cluster) que conheça o mapa de slots e encaminhe cada comando para o nó correto. Clientes padrão retornarão erros de redirecionamento MOVED se enviarem uma chave para o fragmento errado.
# 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 shardCluster Mode vs modo sem cluster
Para o exame SAA-C03, escolha o modo sem cluster quando: seus dados couberem em um único nó (< ~400 GB após considerar a margem), você precisar de uma configuração simples de primário e réplica ou sua aplicação usar operações complexas com várias chaves (as transações que abrangem várias chaves exigem que todas as chaves estejam no mesmo slot). Escolha o Cluster Mode quando: seu conjunto de dados exceder a memória de um único nó, você precisar expandir horizontalmente a capacidade de gravação ou prever um crescimento futuro que exigirá um novo particionamento online. O Cluster Mode permite adicionar fragmentos sem tempo de inatividade (novo particionamento online).
# 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 para Replicação entre Regiões
ElastiCache Global Datastore estende a replicação do Redis por várias Regiões da AWS. Você designa uma Região como o cluster primário e adiciona clusters secundários em outras Regiões. As gravações são direcionadas ao primário; os secundários recebem replicação assíncrona, com atraso típico inferior a 1 segundo. Os clusters secundários podem atender leituras locais com latência muito baixa. O Global Datastore permite aplicações globais, nas quais usuários em diferentes continentes leem dados da Região mais próxima, e DR entre Regiões, no qual você pode promover um cluster secundário a primário se a Região primária falhar.
# 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 em Scale
Em um grupo de replicação Redis sem cluster, as mensagens de pub/sub são distribuídas para todas as réplicas — qualquer assinante em qualquer nó recebe as mensagens publicadas em um canal. No entanto, no Modo de Cluster, o pub/sub é limitado a notificações de keyspace, e o pub/sub baseado em canais funciona apenas dentro de um único fragmento, a menos que você use o Redis 7+ com fragmentação de Pub/Sub (SSUBSCRIBE / SPUBLISH para pub/sub com reconhecimento de fragmentos). Essa é uma limitação importante ao projetar pub/sub em grande escala com o modo de 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}')Monitoramento do Atraso de Replicação
Monitore a métrica do CloudWatch ReplicationLag nas réplicas de leitura para garantir que elas estejam acompanhando o primário. Um atraso superior a alguns segundos indica um gargalo na réplica (nó sobrecarregado, problemas de rede ou mais gravações do que a réplica consegue processar). Em cenários de Global Datastore, monitore GlobalDatastoreReplicationLag. Um atraso elevado na replicação significa que as réplicas de leitura podem retornar dados desatualizados — algo importante para aplicações que esperam consistência eventual dentro de limites rigorosos.
# 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 secondsDimensionamento de Grupos de Replicação
Você pode fazer dimensionamento vertical (alterar o tipo de nó) ou dimensionamento horizontal (adicionar ou remover réplicas). Alterar o tipo de nó exige uma chamada modify-replication-group e causa um breve failover quando aplicado imediatamente — o primário é substituído por um novo nó do novo tipo. A adição de réplicas ocorre online, sem tempo de inatividade. Ao fazer a transição do modo sem cluster para o modo de cluster, você deve criar um novo grupo no modo de cluster e migrar os dados — não há conversão direta entre os modos com e sem 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-immediatelyVerificação Rápida
Teste sua compreensão dos conceitos do AWS Solutions Architect (SAA-C03) apresentados nesta lição.
Recapitulação da Lição
Nesta lição, você aprendeu que: grupos de replicação fornecem dimensionamento de leitura por meio de réplicas e alta disponibilidade por meio de failover automático com endpoints primário/de leitura; o Modo de Cluster fragmenta os dados entre até 500 grupos de nós usando 16.384 intervalos de hash para permitir o dimensionamento horizontal além da memória de um único nó; e o Global Datastore replica dados entre Regiões para oferecer leituras globais com baixa latência e DR entre Regiões. A seguir, exploraremos estratégias de armazenamento em cache: carregamento lento e gravação direta no cache.
Perguntas Frequentes
A aula “Grupos de replicação e modo de cluster do ElastiCache Redis” é grátis?
Sim — o texto completo de “Grupos de replicação e modo de cluster do ElastiCache Redis” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AWS Solutions Architect, atualize para CoddyKit PRO. O curso de AWS Solutions Architect inclui 4 aulas no total.
O que vou aprender em “Grupos de replicação e modo de cluster do ElastiCache Redis”?
Crie um grupo de replicação do Redis para escalonar leituras e habilite o modo de cluster para fragmentar dados entre vários grupos de nós. Você pratica AWS Solutions Architect com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.
Preciso ter experiência prévia para começar AWS Solutions Architect?
Nenhuma experiência prévia é necessária. AWS Solutions Architect no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.
Quanto tempo leva a aula “Grupos de replicação e modo de cluster do ElastiCache Redis”?
A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.
Posso escrever e executar código nesta aula de AWS Solutions Architect?
Sim. Cada aula de AWS Solutions Architect inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.
Todas as aulas deste curso
- Redis versus Memcached: Escolha do mecanismo adequado
- Grupos de replicação e modo de cluster do ElastiCache Redis
- Estratégias de cache: carregamento sob demanda e gravação simultânea
- Armazenamento de sessões e padrões de classificação