test create cluster cli cache redis high-availability

create - redis sentinel



Redis master/slave replication: ¿punto único de falla? (4)

¿Cómo se puede actualizar a una versión más nueva de Redis sin tiempo de inactividad? Los esclavos de Redis son de solo lectura, por lo que parece que tendrías que eliminar el maestro y tu sitio sería de solo lectura durante 45 segundos o más mientras esperabas a que volviera a cargar el DB.

¿Hay alguna forma de evitar esto?


Al desconectar el nodo, promueva que el esclavo se convierta en maestro con el comando ESCLAVO, luego, cuando vuelva a ponerlo en línea, lo configurará como esclavo y copiará todos los datos del nodo en línea.

También es posible que deba asegurarse de que su cliente pueda manejar adecuadamente los nodos maestros modificados / faltantes.

Si quieres ser realmente elegante, puedes configurar tu cliente para promocionar un esclavo si detecta un error al escribir en el maestro.


El equipo de Redis tiene muy buena documentación sobre esto

Pasos principales:

  • Configure su nueva instancia de Redis como esclavo para su instancia actual de Redis. Para hacerlo, necesita un servidor diferente o un servidor que tenga suficiente RAM para mantener dos instancias de Redis ejecutándose al mismo tiempo.
  • Si usa un solo servidor, asegúrese de que el esclavo se inicie en un puerto diferente al de la instancia maestra, de lo contrario, el esclavo no podrá iniciarse en absoluto.
  • Espere a que se complete la sincronización inicial de replicación (verifique el archivo de registro esclavo).
  • Asegúrese de usar INFO que hay el mismo número de teclas en el maestro y en el esclavo. Verifique con redis-cli que el esclavo está trabajando como lo desea y está respondiendo a sus comandos.
  • Configure todos sus clientes para usar la nueva instancia (es decir, el esclavo).
  • Una vez que esté seguro de que el maestro ya no recibe ninguna consulta (puede verificar esto con el comando MONITOR), elija el esclavo para dominar con el comando ESCLAVO DE UNO y apague el maestro.

Documentación completa:

Actualización o reinicio de una instancia de Redis sin tiempo de inactividad


Puede usar Redis Sentinel para hacer esto, el centinela automáticamente promocionará un esclavo como nuevo maestro. puedes encontrar más información aquí http://redis.io/topics/sentinel .

Sentinel es un sistema utilizado para administrar servidores redis, supervisa el redis master y los esclavos de forma continua, y cada vez que un master se apaga automáticamente promueve un esclavo en el maestro. y cuando el viejo maestro esté ARRIBA se hará como esclavo del nuevo maestro.

Aquí no habrá tiempo de inactividad o se necesita la configuración manual del archivo de configuración. Puede visitar el enlace anterior para averiguar cómo configurar Sentinel para sus servidores redis.


Tenga en cuenta que es posible que deba verificar y configurar las siguientes configuraciones para escribir a su esclavo. ("Dado que Redis 2.6 por defecto los esclavos son de solo lectura")

redis-cli config set slave-read-only no

- Ejemplo

-bash-4.1$ redis-cli info Server redis_version:2.6.9 -bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379 OK -bash-4.1$ redis-cli set temp 42 (error) READONLY You can''t write against a read only slave. -bash-4.1$ redis-cli slaveof no one OK -bash-4.1$ redis-cli set temp 42 OK -bash-4.1$ redis-cli get temp "42" -bash-4.1$ redis-cli config set slave-read-only no OK -bash-4.1$ redis-cli slaveof admin2.mypersonalsite.com 6379 OK -bash-4.1$ redis-cli set temp 42 OK -bash-4.1$ redis-cli get temp "42"