test high create clustering cluster cli cache redis cluster-computing failover

create - redis high availability



Failover de clúster (1)

En un clúster con solo nodos maestros, si un nodo falla, los datos se pierden. Por lo tanto, no es posible volver a grabar, ya que no es posible migrar los datos (ranuras hash) del nodo fallido.

Para mantener el clúster funcionando cuando falla un maestro, necesita nodos esclavos (uno por maestro). De esta forma, cuando un maestro falla, su esclavo falla (se convierte en el nuevo maestro con la misma copia de los datos).

El script redis-trib.rb no maneja la creación del clúster con menos de 3 maestros, sin embargo, en el cluster redis un clúster puede ser de cualquier tamaño (al menos un nodo).

Por lo tanto, agregar nodos esclavos puede considerarse una solución automática a su problema.

Sé que estoy preguntando algo muy obvio sobre la conmutación por error del clúster.

Leí en redis.io que, si algún nodo del clúster maestro falla, afectará a otros nodos maestros hasta que el esclavo se ponga a cargo. En mi estructura, no estoy definiendo ningún esclavo y solo estoy trabajando con 3 maestros.

Estoy pensando en modificar el archivo redis-trib.rb, que eliminará el servidor defectuoso e iniciará el clúster con otros 2 nodos. Estoy confundido acerca de un par de cosas,

1) Resistencia

No podría ser posible hasta que el servidor fallido se active

2) Limitación mínima de 3 nodos para crear clúster

Según la comprensión de bit, redis-trib.rb no me permite crear clúster para dos nodos. Puede haber alguna solución en el archivo de código :)

3) Forma automática de volver a crear una nueva estructura con nodos activos

Como punto de vista del programador, estoy buscando algo automático para mi sistema. Algo que activa un comando cuando Redis Cluster falla algunas tareas ocurre internamente. me gusta

  • Cierre todos los demás servidores de clúster redis
  • Eliminar archivos nodes- [puerto] .conf de la carpeta de todos los nodos del clúster
  • Comience redis servidores de clúster
  • Ejecute "redis-trib.rb create ip: port ip: port"

Estoy tratando de minimizar el trabajo de administración :). De lo contrario, tengo que implementar algún otro algoritmo "Data Consistency" aquí.

Si alguno de ustedes tiene alguna solución o idea, amablemente comparta.

Gracias, Sanjay Mohnani