Primeiro, vamos conversar, sentinela.
O Sentinel gerencia o failover, ele não configura o Redis para HA. É uma distinção importante. Em segundo lugar, o diagrama que você postou é, na verdade, uma configuração ruim - você não quer executar o Sentinel no mesmo nó que os nós do Redis que ele está gerenciando. Quando você perde aquele hospedeiro, você perde ambos.
Quanto a "É desperdício de recursos?" depende do seu caso de uso. Você não precisa de três nós do Redis nessa configuração, você só precisa de dois. Três aumenta sua redundância, mas não é obrigatório. Se você precisa da redundância adicional, então não é um desperdício de recursos. Se você não precisa de redundância, basta executar uma única instância do Redis e chamá-la de boa - pois executar mais seria "desperdiçado".
Outro motivo para executar dois escravos seria dividir as leituras. Novamente, se você precisar, não será um desperdício.
Quanto a "Existe uma maneira melhor de aproveitar ao máximo os recursos disponíveis?" não podemos responder a isso, pois é muito dependente de seu código e cenário específico. Dito isso, se a quantidade de dados a armazenar for "pequena" e a taxa de comando não for excessivamente alta, lembre-se de que você não precisa dedicar um host ao Redis.
Agora, para "O agrupamento do Redis é uma alternativa ao Redis sentinela?". Na verdade, depende inteiramente do seu caso de uso. O Redis Cluster não é uma solução HA - é uma solução de gravador múltiplo / maior que a memória RAM. Se o seu objetivo for apenas HA, provavelmente não será adequado para você. O Redis Cluster vem com limitações, especialmente em relação a operações de várias chaves, portanto, não é necessariamente uma operação direta "basta usar o cluster".
Se você acha que ter três hosts executando o Redis (e três o sentinela em execução) é um desperdício, provavelmente considerará o Cluster ainda mais desnecessário, pois requer mais recursos.
As perguntas que você fez provavelmente são muito amplas e baseadas em opiniões para sobreviver como estão escritas. Se você tiver um caso / problema específico que está resolvendo, atualize-o para que possamos fornecer assistência e informações específicas.
Atualização para detalhes:
Para o gerenciamento de failover adequado em seu cenário, eu escolheria 3 sentinelas, uma em execução em seu servidor JBoss. Se você tiver 3 nós JBoss, vá com um em cada. Eu teria um pod Redis (mestre + escravo) em nós separados e deixaria o sentinela gerenciar o failover.
A partir daí, é uma questão de conectar o JBoss / Jedis para usar o Sentinel para gerenciamento de informações e conexão. Como não os utilizo, uma busca rápida revela que o Jedis tem suporte para isso, basta configurá-lo corretamente. Alguns exemplos que encontrei estão em Procurando um exemplo de Jedis com Sentinel e https://github.com/xetorthio/jedis/issues/725 que falam sobreJedisSentinelPool
ser a rota para usar um pool.
Quando o Sentinel executa um failover, os clientes serão desconectados e os Jedis irão (deveriam?) Lidar com a reconexão perguntando aos Sentinels quem é o mestre atual.