Guia para Configurar Replicação de Redis Primário-Réplica.

Este guia especializado oferece um tutorial abrangente, passo a passo, sobre a configuração da replicação Primário-Réplica do Redis para alta disponibilidade e escalabilidade de leitura. Aprenda como o Redis gerencia a sincronização completa e parcial, implemente a diretiva crucial `replicaof` através de arquivos de configuração ou dinamicamente, e monitore eficazmente a saúde da sincronização usando o comando `INFO replication`. Detalhamos as melhores práticas para configurações de produção, incluindo configurações de segurança e dicas de otimização para grandes conjuntos de dados.

43 visualizações

Guia para Configurar Replicação Primária-Réplica do Redis

A replicação do Redis é um padrão fundamental para alcançar alta disponibilidade, redundância de dados e escalabilidade de leitura. Ao configurar uma instância primária (anteriormente chamada de master) e uma ou mais réplicas (anteriormente chamadas de slaves), você garante que os dados gravados na primária sejam copiados automaticamente para todas as réplicas conectadas.

Este guia fornece um tutorial abrangente e passo a passo sobre a configuração da replicação primária-réplica do Redis. Cobriremos as diretivas de configuração essenciais, métodos de configuração dinâmica e etapas críticas de monitoramento necessárias para construir uma implantação robusta e confiável do Redis.


1. Compreendendo os Fundamentos da Replicação do Redis

A replicação do Redis é assíncrona (o que significa que a primária não espera que a réplica confirme as gravações), permitindo alto desempenho. Ela opera principalmente em duas fases: sincronização inicial e sincronização contínua.

Sincronização Completa (SYNC)

Quando uma réplica se conecta a uma primária pela primeira vez, ou após uma interrupção de rede que impede a resincronização parcial, ocorre uma sincronização completa:

  1. A réplica envia um comando PSYNC para a primária.
  2. A primária inicia um processo de salvamento em segundo plano para gerar um arquivo de snapshot RDB (.rdb).
  3. A primária armazena em buffer todos os novos comandos de gravação recebidos enquanto o RDB está sendo criado.
  4. Assim que o arquivo RDB for concluído, a primária o envia para a réplica.
  5. A réplica carrega o arquivo RDB na memória.
  6. Finalmente, a primária envia todos os comandos de gravação em buffer para a réplica para que ela se atualize.

Resincronização Parcial (PSYNC)

O Redis 2.8+ suporta resincronização parcial. Se o link entre a primária e a réplica cair brevemente, a réplica pode solicitar apenas os comandos que faltam desde que o link foi interrompido, usando o buffer de backlog de replicação (um buffer circular configurável na primária).

2. Pré-requisitos e Configuração

Antes de configurar a replicação, certifique-se de ter pelo menos duas instâncias Redis separadas em execução (ou configurações separadas executando em portas diferentes no mesmo servidor para testes).

Para este guia, assumimos a seguinte configuração:

Instância Papel Endereço IP Porta Arquivo de Configuração
Primária Primária 192.168.1.100 6379 redis-primary.conf
Réplica 1 Réplica 192.168.1.101 6380 redis-replica-1.conf

Etapa 2.1: Configurar a Instância Primária

Certifique-se de que sua instância primária esteja pronta para aceitar conexões das réplicas e esteja configurada para gerenciar a persistência (RDB ou AOF), se necessário para a própria estabilidade da primária.

Configurações Cruciais da Primária:

  1. Binding: Certifique-se de que a primária esteja vinculada a um endereço IP público ou 0.0.0.0, se estiver executando em várias máquinas. Se estiver usando firewalls, certifique-se de que a porta 6379 esteja aberta para os IPs das réplicas.
  2. Persistência: Embora não seja estritamente necessário para a replicação em si, habilitar RDB/AOF é altamente recomendado para a persistência de dados da primária.
# redis-primary.conf
port 6379
bind 0.0.0.0 # Vincula a todas as interfaces (necessário para réplicas externas)
# Habilitar persistência RDB
save 900 1
save 300 10
save 60 10000

Etapa 2.2: Configurar a Instância Réplica

O cerne da configuração de uma réplica está na diretiva replicaof. Isso informa à instância qual primária ela deve sincronizar seus dados.

Configurações Cruciais da Réplica:

  1. Porta: Use uma porta diferente se estiver executando na mesma máquina.
  2. Diretiva de Replicação: Use replicaof ou slaveof (o nome legado).
# redis-replica-1.conf
port 6380

# *** Configuração Essencial de Replicação ***
replicaof 192.168.1.100 6379

# Garantir que as réplicas sejam somente leitura (padrão desde o Redis 5)
replica-read-only yes

# Recomendar desabilitar a persistência em réplicas se a HA for tratada pelo Sentinel/Cluster
# Se a persistência for necessária para reinícios rápidos, mantenha-a habilitada.
save ""

Nota: Se a primária estiver protegida por senha (usando requirepass), a réplica deve ser configurada com masterauth <password> para autenticar com sucesso.

3. Métodos de Implementação

Você pode implementar a configuração de replicação editando o arquivo de configuração (redis.conf) e reiniciando o servidor, ou dinamicamente usando o comando CONFIG SET.

Método 3.1: Arquivo de Configuração (Recomendado para Produção)

Após atualizar redis-replica-1.conf conforme mostrado acima, inicie ambas as instâncias:

# Iniciar Primária
redis-server redis-primary.conf

# Iniciar Réplica 1
redis-server redis-replica-1.conf

Ao iniciar, a Réplica 1 tentará imediatamente se conectar à primária em 192.168.1.100:6379 e iniciará o processo de sincronização.

Método 3.2: Configuração Dinâmica

Se uma instância Redis já estiver em execução e você desejar configurá-la como uma réplica sem reiniciar, use CONFIG SET via redis-cli.

  1. Conecte-se à instância que você deseja converter em uma réplica (executando na porta 6380 em nosso exemplo):

    bash redis-cli -p 6380

  2. Execute o comando de replicação:

    bash 127.0.0.1:6380> replicaof 192.168.1.100 6379 OK

A instância na porta 6380 descartará quaisquer dados anteriores e iniciará uma sincronização completa (SYNC) com a nova primária.

⚠️ Aviso: Desabilitando a Replicação

Para transformar uma réplica de volta em uma instância primária independente, execute replicaof no one nessa instância.

4. Monitorando o Status da Replicação

Monitorar o status da conexão é vital para garantir a consistência dos dados. Use o comando INFO replication via redis-cli tanto na primária quanto na réplica.

4.1 Verificando o Status da Primária

Conecte-se à primária (6379) e verifique quantas réplicas estão conectadas e seu status:

redis-cli -p 6379 INFO replication

Trecho de Saída Esperada (Primária):

# Replication
role:master
connected_slaves:1
slave0:ip=192.168.1.101,port=6380,state=online,offset=2048,lag=0
master_replid:a9b1c2...
master_replid2:000000...
master_repl_offset:2048
  • role:master confirma seu papel.
  • connected_slaves:1 confirma que a réplica é vista.
  • state=online é o estado estável desejado.
  • lag=0 (ou um número muito baixo) indica desempenho bem-sucedido de transferência síncrona de dados.

4.2 Verificando o Status da Réplica

Conecte-se à réplica (6380) e verifique o status do link da primária:

redis-cli -p 6380 INFO replication

Trecho de Saída Esperada (Réplica):

# Replication
role:slave
master_host:192.168.1.100
master_port:6379
master_link_status:up
master_sync_in_progress:0
slave_priority:100
slave_read_only:1
  • role:slave confirma seu papel.
  • master_link_status:up confirma que a conexão está ativa e saudável.
  • master_sync_in_progress:0 significa que a sincronização inicial foi concluída.

5. Melhores Práticas e Otimização de Replicação

5.1 Modo Somente Leitura da Réplica

Por padrão, as réplicas são somente leitura (replica-read-only yes). Este é um mecanismo de segurança crítico. Tentar gravar em uma réplica resultará em um erro, garantindo a consistência dos dados em todo o cluster.

Se você desabilitar o modo somente leitura, quaisquer gravações na réplica serão locais e serão substituídas se o link de replicação cair e ocorrer uma sincronização completa.

5.2 Otimizando o Tempo de Sincronização

Se o seu conjunto de dados for muito grande, o processo SYNC inicial pode ser lento. Considere estes fatores:

  1. Largura de Banda da Rede: Garanta largura de banda suficiente entre a primária e as réplicas para a transferência RDB.
  2. Geração RDB: A primária precisa de CPU e I/O de disco para gerar o arquivo RDB. Certifique-se de que o servidor tenha recursos disponíveis durante a sincronização.
  3. Desabilitar Persistência de Disco em Réplicas (Opcional): Se a primária gerencia toda a persistência e a réplica é apenas para escalabilidade de leitura, definir save "" na réplica evita o overhead de I/O da gravação de arquivos RDB, acelerando os reinícios.

5.3 Segurança e Configuração de Rede

É crucial que a primária não exponha publicamente sua porta de replicação (6379 ou outra) à internet. Configure regras de firewall para permitir o tráfego de replicação apenas dos endereços IP designados dos servidores réplica.

5.4 Usar Réplicas para Escalabilidade de Leitura

O principal benefício da replicação é a distribuição da carga de leitura. Direcione aplicações que realizam principalmente operações de leitura para as instâncias réplica, reservando a primária para operações de gravação, melhorando a taxa de transferência geral do sistema.

Conclusão

A configuração da replicação primária-réplica do Redis é essencial para construir aplicações resilientes e de alto desempenho. Ao configurar corretamente a diretiva replicaof e monitorar regularmente o status do link usando INFO replication, você cria uma base para alta disponibilidade e escalabilidade de leitura eficaz.

Embora este guia se concentre na configuração básica, ambientes de produção geralmente integram camadas adicionais de automação, como o Redis Sentinel para promoção automática da primária e detecção de falhas, ou o Redis Cluster para particionamento e distribuição automáticos de dados em vários nós.