Innanzitutto, parliamo sentinella.
Sentinel gestisce il failover, non configura Redis per HA. È una distinzione importante. In secondo luogo, il diagramma che hai postato è in realtà una configurazione errata: non vuoi eseguire Sentinel sullo stesso nodo dei nodi Redis che sta gestendo. Quando perdi quell'host, perdi entrambi.
Per "È uno spreco di risorse?" dipende dal tuo caso d'uso. Non hai bisogno di tre nodi Redis in quella configurazione, ne hai solo bisogno due. Tre aumenta la ridondanza, ma non è richiesta. Se hai bisogno della ridondanza aggiunta, allora non è uno spreco di risorse. Se non hai bisogno di ridondanza, devi solo eseguire una singola istanza di Redis e chiamarla correttamente, poiché eseguire di più sarebbe "sprecato".
Un altro motivo per l'esecuzione di due slave è la divisione delle letture. Di nuovo, se ne hai bisogno, non sarebbe uno spreco.
Per quanto riguarda "C'è un modo migliore di utilizzare a pieno le risorse disponibili?" non possiamo rispondere perché dipende troppo dal tuo scenario e codice specifico. Ciò detto se la quantità di dati da memorizzare è "piccola" e il tasso di comando non è eccessivamente alto, quindi ricorda che non è necessario dedicare un host a Redis.
Ora per "Il clustering Redis è un'alternativa a Redis sentinel?". Dipende davvero interamente dal tuo caso d'uso. Redis Cluster non è una soluzione HA: è una soluzione di scrittore multiplo/più grande di ram. Se il tuo obiettivo è solo HA, allora probabilmente non sarà adatto a te.Redis Cluster è dotato di limitazioni, in particolare per quanto riguarda le operazioni con più tasti, quindi non è necessariamente un'operazione di "uso semplice cluster".
Se pensate che avere tre host che eseguono Redis (e tre sentinelle in esecuzione) sia dispendioso, probabilmente Cluster sarà ancora più importante in quanto richiede più risorse.
Le domande che hai posto sono probabilmente troppo ampie e basate su opinioni per sopravvivere come scritto. Se hai un caso specifico/problema che stai risolvendo, per favore aggiorna con quello in modo che possiamo fornire assistenza e informazioni specifiche.
Aggiornamento per le specifiche:
per una corretta gestione di failover nello scenario Vorrei andare con 3 sentinelle, uno in esecuzione sul server JBoss. Se hai 3 nodi JBoss, vai con uno su ciascuno. Avrei un pod Redis (master + slave) su nodi separati e lasciare che il sentinel gestisca il failover.
Da qui si tratta di collegare JBoss/Jedis per utilizzare Sentinel per la gestione delle informazioni e della connessione. Dato che non uso quelli a cui viene fatta una ricerca rapida, Jedis ha il supporto per farlo, devi solo configurarlo correttamente. Alcuni esempi che ho trovato sono a Looking for an example of Jedis with Sentinel e https://github.com/xetorthio/jedis/issues/725 che parlano di JedisSentinelPool
come percorso per l'utilizzo di un pool.
Quando Sentinel esegue un failover i client verranno disconnessi e Jedis (dovrebbe?) Gestirà la riconnessione chiedendo ai Sentinel chi è il master corrente.
Questo potrebbe anche aiutare - http: // fnordig.de/2015/06/01/redis-sentinel-and-redis-cluster/ –