DBAtlas · Atlas de operações de banco de dados

Alta disponibilidade com Redis Sentinel + Cluster

Sintoma

Objetivo: configurar uma implantação master-réplica com failover automático para o Redis usando Sentinel; passar para o modo Redis Cluster se for necessária escalabilidade horizontal.

1. Configure o master e as réplicas

Rode um master e pelo menos duas réplicas. As réplicas seguem o master com REPLICAOF ('replicaof <host> <port>' também pode ser escrito no redis.conf). Ative AOF ou RDB para persistência; recomenda-se autenticação com requirepass/masterauth.

Redis

# at runtime on the replica nodes:
REPLICAOF 10.0.0.10 6379
# to make it persistent, redis.conf:
# replicaof 10.0.0.10 6379
# masterauth secret
INFO replication

2. Configure o Sentinel com monitor e quórum

Defina o master a monitorar e o quórum no sentinel.conf de cada nó Sentinel. O quorum é o número mínimo de Sentinels necessário para considerar o master 'down'. Em produção, recomendam-se 3 Sentinels em 3 servidores separados (contra split-brain).

Redis

# sentinel.conf:
sentinel monitor mymaster 10.0.0.10 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

3. Inicie os processos Sentinel

Inicie o Sentinel em cada nó. Os Sentinels descobrem automaticamente uns aos outros e as réplicas; gravam a configuração no arquivo em tempo de execução. Por isso o sentinel.conf precisa ser gravável.

Redis

redis-sentinel /etc/redis/sentinel.conf
# or:
redis-server /etc/redis/sentinel.conf --sentinel

4. Consulte o status pelo Sentinel e teste o failover

Consulte o master atual e as réplicas com os comandos SENTINEL. As aplicações devem descobrir o master atual perguntando ao Sentinel com 'get-master-addr-by-name'. Verifique a troca automática com um failover planejado.

Redis

SENTINEL master mymaster
SENTINEL get-master-addr-by-name mymaster
SENTINEL replicas mymaster
# planned switchover:
SENTINEL failover mymaster

5. Alternativa: particione os dados com Redis Cluster

Se a memória/throughput de um único master não bastar, use o Redis Cluster: os dados são divididos em 16384 hash slots e distribuídos entre vários masters; cada master tem sua própria réplica. A aplicação precisa usar um cliente cluster-aware. Configure com redis-cli --cluster create.

Redis

redis-cli --cluster create \
  10.0.0.11:6379 10.0.0.12:6379 10.0.0.13:6379 \
  10.0.0.21:6379 10.0.0.22:6379 10.0.0.23:6379 \
  --cluster-replicas 1

6. Verifique o estado do cluster

Depois de criar o cluster, verifique se todos os slots estão atribuídos e os nós conectados. cluster_state deve ser 'ok' e todos os 16384 slots devem aparecer atribuídos. Monitore a distribuição de nós e slots com os comandos CLUSTER.

Redis

redis-cli --cluster check 10.0.0.11:6379
redis-cli -c -h 10.0.0.11 CLUSTER INFO
redis-cli -c -h 10.0.0.11 CLUSTER NODES
Abrir no DBAtlas →