Per prima cosa, parliamo sentinella.
Sentinel gestisce il failover, non configura Redis per HA. È una distinzione importante. In secondo luogo, il diagramma che hai pubblicato è in realtà una configurazione errata: non vuoi eseguire Sentinel sullo stesso nodo dei nodi Redis che gestisce. Quando perdi quell'host, perdi entrambi.
Quanto a "è uno spreco di risorse?" dipende dal tuo caso d'uso. Non hai bisogno di tre nodi Redis in quella configurazione, te ne servono solo due. Tre aumenta la tua ridondanza, ma non è necessario. Se hai bisogno della ridondanza aggiuntiva, non è uno spreco di risorse. Se non è necessaria la ridondanza, è sufficiente eseguire una singola istanza Redis e definirla valida, poiché eseguirne di più sarebbe "sprecato".
Un altro motivo per eseguire due slave sarebbe la divisione delle letture. Ancora una volta, se ne hai bisogno, non sarebbe uno spreco.
Quanto a "Esiste un modo migliore per utilizzare appieno le risorse disponibili?" non possiamo rispondere in quanto dipende troppo dallo scenario e dal codice specifici. Detto questo, se la quantità di dati da archiviare è "piccola" e la velocità di comando non è eccessivamente alta, ricorda che non è necessario dedicare un host a Redis.
Ora per "Il cluster di Redis è un'alternativa a Redis sentinel?". Dipende davvero interamente dal tuo caso d'uso. Redis Cluster non è una soluzione HA: è una soluzione con più writer / più grande della ram. Se il tuo obiettivo è solo HA, probabilmente non sarà adatto a te. Redis Cluster presenta limitazioni, in particolare per le operazioni multi-chiave, quindi non è necessariamente un'operazione semplice "usa solo il cluster".
Se pensi che avere tre host che eseguono Redis (e tre che eseguono sentinel) sia uno spreco, probabilmente riterrai che Cluster sia ancora di più in quanto richiede più risorse.
Le domande che hai posto sono probabilmente troppo ampie e basate sull'opinione pubblica per sopravvivere come scritte. Se hai un caso / problema specifico che stai risolvendo, aggiornalo in modo che possiamo fornire assistenza e informazioni specifiche.
Aggiornamento per specifiche:
Per una corretta gestione del failover nel tuo scenario, sceglierei 3 sentinelle, una in esecuzione sul tuo server JBoss. Se hai 3 nodi JBoss, scegli uno su ciascuno. Avrei un pod Redis (master + slave) su nodi separati e avrei lasciato che sentinel gestisse il failover.
Da lì è una questione di collegare JBoss / Jedis per utilizzare Sentinel per le sue informazioni e la gestione della connessione. Dato che non uso quelli che una ricerca rapida rivela che Jedis ha il supporto per esso, devi solo configurarlo correttamente. Alcuni esempi che ho trovato sono in Looking for an example of Jedis with Sentinel e https://github.com/xetorthio/jedis/issues/725 che parlano di JedisSentinelPool
essere il percorso per l'utilizzo di una piscina.
Quando Sentinel esegue un failover, i client verranno disconnessi e Jedis gestirà (dovrebbe?) La riconnessione chiedendo alle Sentinelle chi è l'attuale master.