DBAtlas · Atlas de operaciones de bases de datos

Alta disponibilidad con Redis Sentinel + Cluster

Síntoma

Objetivo: configurar un despliegue master-réplica con failover automático para Redis usando Sentinel; pasar al modo Redis Cluster si se necesita escalado horizontal.

1. Configure el master y las réplicas

Ejecute un master y al menos dos réplicas. Las réplicas siguen al master con REPLICAOF ('replicaof <host> <port>' también puede escribirse en redis.conf). Habilite AOF o RDB para la persistencia; se recomienda autenticación con 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 Sentinel con monitor y quorum

Defina el master a monitorear y el quorum en el sentinel.conf de cada nodo Sentinel. quorum es el número mínimo de Sentinels necesarios para considerar el master 'caído'. En producción se recomiendan 3 Sentinels en 3 servidores distintos (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 los procesos Sentinel

Inicie Sentinel en cada nodo. Los Sentinels se descubren automáticamente entre sí y a las réplicas; escriben la configuración en el archivo en tiempo de ejecución. Por eso sentinel.conf debe ser escribible.

Redis

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

4. Consulte el estado mediante Sentinel y pruebe el failover

Consulte el master y las réplicas actuales con los comandos SENTINEL. Las aplicaciones deben conocer el master actual preguntando a Sentinel con 'get-master-addr-by-name'. Verifique el cambio automático con un failover planificado.

Redis

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

5. Alternativa: particione los datos con Redis Cluster

Si la memoria/throughput de un solo master no basta, use Redis Cluster: los datos se dividen en 16384 hash slots y se distribuyen entre varios masters; cada master tiene su propia réplica. La aplicación debe usar un cliente compatible con clúster. Configúrelo con 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 el estado del clúster

Tras crear el clúster, verifique que todos los slots estén asignados y que los nodos estén conectados. cluster_state debe ser 'ok' y los 16384 slots deben aparecer asignados. Monitoree la distribución de nodos y slots con los 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 en DBAtlas →