sql >> Base de Datos >  >> NoSQL >> Redis

Sentinel de Redis frente a agrupamiento

Primero, hablemos de centinela.

Sentinel administra la conmutación por error, no configura Redis para HA. Es una distinción importante. En segundo lugar, el diagrama que publicó es en realidad una configuración incorrecta:no desea ejecutar Sentinel en el mismo nodo que los nodos de Redis que administra. Cuando pierdes ese host, pierdes ambos.

En cuanto a "¿Es un desperdicio de recursos?" depende de su caso de uso. No necesita tres nodos de Redis en esa configuración, solo necesita dos. Tres aumenta su redundancia, pero no es obligatorio. Si necesita la redundancia adicional, entonces no es una pérdida de recursos. Si no necesita redundancia, simplemente ejecute una sola instancia de Redis y llámela buena, ya que ejecutar más sería un "desperdicio".

Otra razón para ejecutar dos esclavos sería dividir las lecturas. Nuevamente, si lo necesita, no sería un desperdicio.

En cuanto a "¿Existe una mejor manera de utilizar al máximo los recursos disponibles?" no podemos responder eso ya que depende demasiado de su escenario y código específicos. Dicho esto, si la cantidad de datos para almacenar es "pequeña" y la tasa de comando no es excesivamente alta, recuerde que no necesita dedicar un host a Redis.

Ahora, "¿Es el agrupamiento en clústeres de Redis una alternativa al centinela de Redis?". Realmente depende completamente de su caso de uso. Redis Cluster no es una solución HA, es una solución de múltiples escritores/más grande que la RAM. Si su objetivo es solo HA, es probable que no sea adecuado para usted. Redis Cluster viene con limitaciones, particularmente en torno a las operaciones de múltiples claves, por lo que no es necesariamente una operación sencilla de "solo usar el clúster".

Si cree que tener tres hosts que ejecutan Redis (y tres que ejecutan Sentinel) es un desperdicio, probablemente sostenga que Cluster lo sea aún más, ya que requiere más recursos.

Las preguntas que ha hecho son probablemente demasiado amplias y basadas en opiniones para sobrevivir tal como están escritas. Si tiene un caso/problema específico que está resolviendo, actualícelo para que podamos brindarle asistencia e información específicas.

Actualización para detalles:

Para una gestión adecuada de la conmutación por error en su escenario, elegiría 3 centinelas, uno ejecutándose en su servidor JBoss. Si tiene 3 nodos JBoss, vaya con uno en cada uno. Tendría un pod de Redis (maestro+esclavo) en nodos separados y dejaría que Sentinel administre la conmutación por error.

A partir de ahí, es cuestión de conectar JBoss/Jedis para usar Sentinel para su administración de información y conexión. Como no los uso, aparece una búsqueda rápida de que Jedis tiene soporte para eso, solo necesita configurarlo correctamente. Algunos ejemplos que encontré están en Buscando un ejemplo de Jedis con Sentinel y https://github.com/xetorthio/jedis/issues/725 que hablan sobre JedisSentinelPool siendo la ruta para usar una piscina.

Cuando Sentinel ejecuta una conmutación por error, los clientes se desconectarán y los Jedis (¿deberían?) manejarán la reconexión preguntando a los Sentinels quién es el maestro actual.