Replicação, Modo Sentinela e Modo Cluster no Redis

Replicação, Modo Sentinela e Modo Cluster no Redis

O Redis oferece diversas estratégias para garantir alta disponibilidade e escalabilidade, sendo a replicação, o modo sentinela e o modo cluster as principais abordagens. A replicação fornece uma base para cópia de dados em múltiplos servidores, enquanto o sentinlea adiciona automação para failover e o cluster resolve limitações de armazenamento e balanceamento de carga em escrita.

Replicação no Redis

A replicação no Redis envolve a cópia unidirecional de dados de um nó primário (master) para um ou mais nós secundários (slaves). Por padrão, cada instância do Redis atua como primário, mas pode ser configurada para replicar dados de outro nó.

Principais benefícios da replicação incluem redundância de dados, recuperação de falhas básica e suporte a balanceamento de carga para operações de leitura, especialmente em cenários com alta demanda de leitura.

O processo de replicação segue estas etapas: um nó secundário solicita sincronização ao primário; o primário gera um snapshot dos dados e o transfere ao secundário; subsequentemente, os comandos de modificação são replicados em tempo real.

Configuração da Replicação

Para configurar a replicação, prepare o ambiente instalando o Redis e desativando firewalls conforme necessário. Edite o arquivo de confiugração do nó primário (redis.conf) para permitir conexões de qualquer interface e ativar a persistência AOF:


# Configuração do nó primário
bind 0.0.0.0
daemonize yes
logfile /var/log/redis_master.log
dir /var/lib/redis
appendonly yes

No nó secundário, adicione a diretiva para replicar do primário, ajustando endereços IP e portas conforme seu ambiente:


# Configuração do nó secundário
bind 0.0.0.0
daemonize yes
logfile /var/log/redis_slave.log
dir /var/lib/redis
replicaof 10.0.0.1 6379  # Substitua pelo IP e porta do primário
appendonly yes

Rienicie os serviços do Redis e verifique a replicação usando o comando redis-cli info replication no nó primário para confirmar que os secundários estão conectados.

Modo Sentinela no Redis

O modo sentinela é um sistema distribuído que monitora nós do Redis e realiza failover automático em caso de falha no primário. Ele requer pelo menos três instâncias de sentinela para operar corretamente, garantindo decisões por votação.

Componentes incluem nós sentinela (que não armazenam dados) e nós de dados (primários e secundários). Os sentinelas monitoram continuamente o estado dos nós e, ao detectar uma falha, elegem um novo primário entre os secundários disponíveis.

Implantação do Modo Sentinela

Configure os sentinelas editando o arquivo sentinel.conf em todos os nós. Defina parâmetros como porta de monitoramento, tempo de detecção de falha e timeout para failover:


# Exemplo de configuração sentinela
protected-mode no
port 26379
daemonize yes
logfile "/var/log/sentinel.log"
dir "/var/lib/redis"
sentinel monitor meuprincipal 10.0.0.1 6379 2  # Monitora o nó primário com IP 10.0.0.1
sentinel down-after-milliseconds meuprincipal 30000
sentinel failover-timeout meuprincipal 180000

Inicie os sentinelas após configurar o ambiente de replicação. Use comandos como redis-sentinel sentinel.conf & para iniciar em segundo plano. Verifique o status com redis-cli -p 26379 info sentinel.

Para testar a falha, interrompa o processo do Redis no primário e observe os logs do sentinela para confirmar a eleição de um novo primário.

Modo Cluster no Redis

O modo cluster permite distribuir dados em múltiplos nós, suportando escalabilidade horizontal e alta disponibilidade. Ele divide os dados em 16384 slots hash, atribuídos a diferentes nós, com cada nó primário podendo ter secundários para redundância.

Vantagens incluem superar limitações de memória em único servidor e balancear cargas de leitura/escrita. A falha de um nó primário resulta na promoção de um secundário, mantendo a disponibilidade do cluster.

Implantação do Cluster Redis

Para um cluster com 3 nós primários e 3 secundários, crie diretórios e arquivos de configuração para cada instância, usando portas distintas (por exemplo, 6001 a 6006). Modifique redis.conf em cada diretório para ativar o cluster:


# Configuração para um nó do cluster (exemplo porta 6001)
bind 0.0.0.0
protected-mode no
port 6001
daemonize yes
appendonly yes
cluster-enabled yes
cluster-config-file nodes-6001.conf
cluster-node-timeout 15000

Inicie todos os nós do cluster usando redis-server redis.conf em cada diretório. Em seguida, crie o cluster com o comando:


redis-cli --cluster create 127.0.0.1:6001 127.0.0.1:6002 127.0.0.1:6003 127.0.0.1:6004 127.0.0.1:6005 127.0.0.1:6006 --cluster-replicas 1

Isso associa cada primário a um secundário. Teste o cluster conectando-se com redis-cli -p 6001 -c e usando comandos como cluster slots para verificar a distribuição dos slots hash e a replicação de dados.

Tags: Redis replicação sentinel cluster Alta Disponibilidade

Publicado em 6-5 20:58 por Thomas