Implementación y Administración de un Clúster Redis

Fundamentos de Redis Cluster

Redis Cluster resuelve limitaciones de replicación maestro-esclavo y Sentinel, abordando:

  • Escrituras concurrentes intensivas
  • Almacenamiento de datos masivos

Características principales:

  • Múltiples nodos maestros que distribuyen datos
  • Réplicas esclavas para cada maestro
  • Detección de estado mediante ping entre nodos
  • Enrutamiento automático de solicitudes clientes

Configuración Inicial

Implementación con 3 maestros (7101-7103) y 3 esclavos (8101-8103):

# Crear directorios
mkdir /ruta/redis/{7101,7102,7103,8101,8102,8103}

# Configuración base (redis.conf):
port 7101
cluster-enabled yes
cluster-config-file /ruta/redis/7101/nodos.conf
cluster-node-timeout 5000
dir /ruta/redis/7101
bind direccion_ip
daemonize yes
replica-announce-ip direccion_ip
protected-mode no

Despliegue

# Copiar configuración
find /ruta/redis -maxdepth 1 -type d -exec cp redis.conf {} \;

# Iniciar instancias
redis-server /ruta/redis/7101/redis.conf
redis-server /ruta/redis/7102/redis.conf
...

Creación del Clúster

redis-cli --cluster create \\
--cluster-replicas 1 \\
direccion_ip:7101 direccion_ip:7102 direccion_ip:7103 \\
direccion_ip:8101 direccion_ip:8102 direccion_ip:8103

Verificación:

redis-cli -p 7101 cluster nodes

Particionamiento con Hash Slots

Mecanismo de distribución (16384 slots):

redis-cli -c -p 7101
> SET ejemplo_valor prueba
# Calcula slot y redirige a nodo correspondiente

Agrupamiento de datos:

SET {grupo1}clave1 valor1  # Mismo slot para {grupo1}*
SET {grupo1}clave2 valor2

Operaciones de Escalado

Incorporar Nuevo Nodo

# Agregar maestro
redis-cli --cluster add-node direccion_ip:7104 direccion_ip:7101

# Rebalancear slots
redis-cli --cluster reshard direccion_ip:7101
# Especificar slots a migrar y nodo destino

Eliminar Nodo

# Migrar slots primero
redis-cli --cluster reshard direccion_ip:7104

# Eliminar nodo
redis-cli --cluster del-node direccion_ip:7104 <node_id>

Mecanismos de Failover

Promoción automática de esclavos ante fallos. Failover manual:

# En esclavo
CLUSTER FAILOVER

Opciones avanzadas:

CLUSTER FAILOVER FORCE    # Ignora sincronización
CLUSTER FAILOVER TAKEOVER # Omite consenso

Integración con Spring

spring.redis.cluster.nodes=\
direccion_ip:7101,\
direccion_ip:7102,\
direccion_ip:7103,\
direccion_ip:8101,\
direccion_ip:8102,\
direccion_ip:8103

Etiquetas: RedisCluster Distribuido HA escalabilidad Failover

Publicado el 7-15 18:53