0Pricing
Cloud & IT Cert Prep · Aula

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 Cloud & IT Cert Prep 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 Cloud & IT Cert Prep, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de Cloud & IT Cert Prep 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-group

Endpoint 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-subnets

O 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-subnets

Slots 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 shard

Cluster 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 incrementally

Global 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-1

Redis 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 seconds

Dimensionamento 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-immediately

Verificaçã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 Cloud & IT Cert Prep, atualize para CoddyKit PRO. O curso de Cloud & IT Cert Prep 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 Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?

Nenhuma experiência prévia é necessária. Cloud & IT Cert Prep 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 Cloud & IT Cert Prep?

Sim. Cada aula de Cloud & IT Cert Prep 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

  1. Redis versus Memcached: Escolha do mecanismo adequado
  2. Grupos de replicação e modo de cluster do ElastiCache Redis
  3. Estratégias de cache: carregamento sob demanda e gravação simultânea
  4. Armazenamento de sessões e padrões de classificação
← Voltar para Cloud & IT Cert Prep