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 mala configuración: no desea ejecutar Sentinel en el mismo nodo que los nodos de Redis que está administrando. Cuando pierdes ese anfitrión, 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, no es una pérdida de recursos. Si no necesita redundancia, simplemente ejecute una sola instancia de Redis y califíquela como buena, ya que ejecutar más sería una "pérdida".
Otra razón para ejecutar dos esclavos sería dividir 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 para "¿Redis es la agrupación en clústeres 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 memoria RAM. Si su objetivo es solo HA, es probable que no sea adecuado para usted. Redis Cluster viene con limitaciones, particularmente en 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 ejecutando Redis (y tres ejecutando Sentinel) es un desperdicio, probablemente considerará que Cluster lo es aún más, ya que requiere más recursos.
Las preguntas que ha formulado son probablemente demasiado amplias y basadas en opiniones para sobrevivir como están escritas. Si tiene un caso / problema específico que está resolviendo, actualice con eso para que podamos brindar asistencia e información específicas.
Actualización para detalles:
Para una gestión adecuada de la conmutación por error en su escenario, iría con 3 centinelas, uno que se ejecuta en su servidor JBoss. Si tiene 3 nodos JBoss, elija uno en cada uno. Tendría un módulo de Redis (maestro + esclavo) en nodos separados y dejaría que el centinela administrara la conmutación por error.
A partir de ahí, es cuestión de conectar JBoss / Jedis para usar Sentinel para su información y administración de conexiones. Como no los uso, una búsqueda rápida revela que Jedis tiene el soporte para ello, 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
ser la ruta para usar un grupo.
Cuando Sentinel ejecuta una conmutación por error, los clientes se desconectarán y Jedis (¿debería?) Manejar la reconexión preguntando a los Sentinels quién es el maestro actual.