La replicación en Redis es una característica fundamental que permite la creación de copias de una instancia de Redis (llamada "maestro") en una o más instancias de Redis (llamadas "esclavos"). Esta funcionalidad es crucial para la alta disponibilidad, la escalabilidad y la tolerancia a fallos en entornos de producción.

Objetivos de Aprendizaje

Al final de esta sección, deberías ser capaz de:

  1. Comprender los conceptos básicos de la replicación en Redis.
  2. Configurar la replicación maestro-esclavo.
  3. Manejar la conmutación por error manual y automática.
  4. Conocer las ventajas y limitaciones de la replicación en Redis.

Conceptos Básicos de la Replicación

¿Qué es la Replicación?

La replicación en Redis permite que una instancia de Redis (maestro) sea replicada en una o más instancias (esclavos). Los esclavos pueden ser configurados para replicar datos de un maestro y, a su vez, pueden actuar como maestros para otros esclavos, creando una jerarquía de replicación.

Ventajas de la Replicación

  • Alta Disponibilidad: Si el maestro falla, los esclavos pueden ser promovidos a maestros para asegurar la continuidad del servicio.
  • Escalabilidad de Lectura: Las operaciones de lectura pueden ser distribuidas entre el maestro y los esclavos, mejorando el rendimiento.
  • Tolerancia a Fallos: Los datos están replicados en múltiples instancias, lo que reduce el riesgo de pérdida de datos.

Limitaciones de la Replicación

  • Consistencia Eventual: Los datos pueden no estar inmediatamente consistentes entre el maestro y los esclavos.
  • Sobrecarga de Red: La replicación puede generar tráfico adicional en la red, especialmente durante la sincronización inicial.

Configuración de la Replicación Maestro-Esclavo

Paso 1: Configurar el Maestro

No se requiere ninguna configuración especial para que una instancia de Redis actúe como maestro. Simplemente inicia una instancia de Redis.

redis-server /path/to/redis.conf

Paso 2: Configurar el Esclavo

Para configurar una instancia de Redis como esclavo, necesitas especificar el maestro en el archivo de configuración del esclavo (redis.conf) o mediante el comando SLAVEOF.

Usando el Archivo de Configuración

Edita el archivo redis.conf del esclavo y añade la siguiente línea:

replicaof <master-ip> <master-port>

Por ejemplo:

replicaof 127.0.0.1 6379

Usando el Comando SLAVEOF

También puedes configurar el esclavo en tiempo de ejecución usando el comando SLAVEOF:

redis-cli SLAVEOF 127.0.0.1 6379

Verificación de la Replicación

Para verificar que la replicación está funcionando, puedes usar el comando INFO replication en el esclavo:

redis-cli INFO replication

La salida debería mostrar algo similar a:

role:slave
master_host:127.0.0.1
master_port:6379
master_link_status:up

Conmutación por Error

Conmutación por Error Manual

En caso de que el maestro falle, puedes promover un esclavo a maestro manualmente usando el comando SLAVEOF NO ONE:

redis-cli SLAVEOF NO ONE

Conmutación por Error Automática

Para la conmutación por error automática, Redis proporciona una herramienta llamada Redis Sentinel. Sentinel monitorea los maestros y esclavos, y automáticamente promueve un esclavo a maestro si detecta que el maestro ha fallado.

Configuración Básica de Sentinel

Crea un archivo de configuración para Sentinel (sentinel.conf) y añade la siguiente configuración básica:

sentinel monitor mymaster 127.0.0.1 6379 2
sentinel down-after-milliseconds mymaster 5000
sentinel failover-timeout mymaster 60000
sentinel parallel-syncs mymaster 1

Inicia Sentinel con el archivo de configuración:

redis-sentinel /path/to/sentinel.conf

Resumen

En esta sección, hemos cubierto los conceptos básicos de la replicación en Redis, cómo configurarla y cómo manejar la conmutación por error tanto manual como automáticamente. La replicación es una herramienta poderosa para mejorar la disponibilidad y escalabilidad de tus aplicaciones Redis. En la siguiente sección, exploraremos Sentinel en mayor detalle para una gestión más avanzada de la alta disponibilidad.

© Copyright 2024. Todos los derechos reservados