Tout d'abord, parlons sentinelle.
Sentinel gère le basculement, il ne configure pas Redis pour HA. C'est une distinction importante. Deuxièmement, le diagramme que vous avez publié est en fait une mauvaise configuration - vous ne voulez pas exécuter Sentinel sur le même nœud que les nœuds Redis qu'il gère. Lorsque vous perdez cet hôte, vous perdez les deux.
Quant à "Est-ce un gaspillage de ressources?" cela dépend de votre cas d'utilisation. Vous n'avez pas besoin de trois nœuds Redis dans cette configuration, vous n'en avez besoin que de deux. Trois augmente votre redondance, mais n'est pas obligatoire. Si vous avez besoin d'une redondance supplémentaire, ce n'est pas un gaspillage de ressources. Si vous n'avez pas besoin de redondance, exécutez simplement une seule instance Redis et appelez-la bien - car en exécuter plus serait «gaspillé».
Une autre raison pour exécuter deux esclaves serait de fractionner les lectures. Encore une fois, si vous en avez besoin, ce ne serait pas un gaspillage.
Quant à "Y a-t-il une meilleure façon d'utiliser pleinement les ressources disponibles?" nous ne pouvons pas répondre à cela car cela dépend beaucoup trop de votre scénario et de votre code spécifiques. Cela dit, si la quantité de données à stocker est "petite" et que le taux de commande n'est pas excessivement élevé, rappelez-vous que vous n'avez pas besoin de dédier un hôte à Redis.
Maintenant pour "Redis clustering est-il une alternative à Redis sentinel?". Cela dépend vraiment entièrement de votre cas d'utilisation. Redis Cluster n'est pas une solution HA - il s'agit d'une solution à plusieurs graveurs / plus grande que la RAM. Si votre objectif n'est que HA, il ne vous conviendra probablement pas. Redis Cluster est livré avec des limitations, en particulier en ce qui concerne les opérations multi-clés, ce n'est donc pas nécessairement une opération simple "juste utiliser le cluster".
Si vous pensez qu'avoir trois hôtes exécutant Redis (et trois sentinelles exécutant) est un gaspillage, vous tiendrez probablement Cluster encore plus car il nécessite plus de ressources.
Les questions que vous avez posées sont probablement trop larges et basées sur des opinions pour survivre telles qu'elles sont écrites. Si vous avez un cas / problème spécifique sur lequel vous travaillez, veuillez le mettre à jour afin que nous puissions vous fournir une assistance et des informations spécifiques.
Mise à jour pour les détails:
Pour une bonne gestion du basculement dans votre scénario, j'irais avec 3 sentinelles, une fonctionnant sur votre serveur JBoss. Si vous avez 3 nœuds JBoss, choisissez-en un sur chacun. J'aurais un pod Redis (maître + esclave) sur des nœuds séparés et laisserais sentinel gérer le basculement.
À partir de là, il s'agit de câbler JBoss / Jedis pour utiliser Sentinel pour sa gestion des informations et des connexions. Comme je ne les utilise pas, une recherche rapide indique que Jedis a le support pour cela, il vous suffit de le configurer correctement. Quelques exemples que j'ai trouvés sont à la recherche d'un exemple de Jedis avec Sentinel et https://github.com/xetorthio/jedis/issues/725 qui parlent d' JedisSentinelPool
être la route pour utiliser un pool.
Lorsque Sentinel exécute un basculement, les clients sont déconnectés et Jedis va (devrait?) Gérer la reconnexion en demandant aux Sentinels qui est le maître actuel.