Saltar al contenido

Clúster de Redis: ¿3 nodos maestros como mínimo?

Solución:

Solución 1:

¿Es realmente cierto?

Sí, por eso está en la documentación 🙂

En mi opinión, esto es correcto si usara capacidades de fragmentación (los datos se comparten entre nodos), pero ¿qué pasa si no los necesito y estaría feliz de tener datos en un solo nodo?

Usar Redis en modo clúster significa fragmentar. Si está satisfecho con una sola instancia, simplemente no use el clúster. De lo contrario, consulte la especificación del clúster para comprender más sobre los supuestos subyacentes. Específicamente, en el caso de una configuración de clúster mínima, querrá 3 maestros para garantizar la disponibilidad del clúster en caso de una partición, o de lo contrario no podrá ponerse de acuerdo sobre la mayoría.

Solucion 2:

¿Es realmente cierto?

No, no es De Verdad verdadero. Es una recomendación sólida (como puede deducirse del lenguaje “que funciona como se esperaba”; si no espera que sus datos sean duraderos y espera que desaparezcan, etc., pueden configurar un clúster de un solo nodo. Por qué lo haría en lugar de simplemente desactivar el modo de clúster … eso depende de usted).

Entonces, si, tu pueden configure un clúster de un solo nodo, aunque no se recomienda (por todas las razones mencionadas en otras respuestas y la documentación). No hay nada en el código del clúster de redis que lo detenga, aparte de una verificación en el redis- El ayudante trib.rb que está ahí para disuadir a los usuarios ingenuos.

Para sortear esa verificación y configurar un clúster de un solo nodo (si está seguro de que eso es lo que desea, recuerde, es casi seguro que no lo es), puede asignar manualmente los fragmentos a su nodo con CLUSTER ADDSLOTS 1 2 3 ... (etc., para los 16384 fragmentos). O use la versión Python de redis-trib que no tiene la verificación de seguridad de 3 nodos (redis-trib.py create 127.0.0.1:6379).


Solución 3:

Sé que esta pregunta es antigua, pero si alguien necesita una configuración similar, puede usar la configuración Maestro-Esclavo en lugar de Clúster. Necesitas:

  • 2 servidor Redis al menos
  • 3 Redis Sentinel para controlar la salud y evitar Split-Brain
  • Una forma de verificar quién es el maestro (uso HAProxy en el servidor cliente con algunos comandos de verificación)

Si puede hacerlo lo suficientemente inteligente, puede simplemente escribir para dominar y leer desde todos los nodos. Utilizo esta configuración en algunos sitios de Wordpress, pero el complemento no está hecho para detectar quién es el maestro, por lo que solo uso HAProxy para detectar el maestro y enviar todo el tráfico a ese nodo. Si el nodo maestro muere, un nodo esclavo asume el rol de maestro (redis-centinela lo gestiona). HAProxy detecta que el maestro ha cambiado y luego cambia el nodo que recibe todo el tráfico.

Lo siento por no publicar código y ejemplos, pero ahora no puedo hacerlo.

¡¡Saludos!!


Solución 4:

Si confía en Redis para la conmutación por error, necesita un mínimo de tres nodos maestros y tres nodos esclavos (un mínimo de 3 servidores, cada uno con un maestro y un esclavo).

Si utiliza software de clúster externo, por ejemplo, heartbeat, puede configurar dos nodos, uno como maestro y otro como esclavo en el modo de clúster, asignar todas las 16384 ranuras al maestro y usar scripts de conmutación por error para “CLUSTER FAILOVER TAKEOVER” cuando el maestro está ABAJO. Por supuesto, también puede configurar una IP de servicio para la conmutación por error junto con redis. Esta disposición adicional le permite utilizar también un cliente de redis que no es de clúster.

La producción se ejecutó durante un año y falló varias veces (reinicio de la máquina para la actualización del kernel) y hasta ahora no se informó ningún problema por parte del equipo de operaciones.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *