Je teste donc le cluster redis. J'ai une configuration avec 3 maîtres et 3 esclaves. Maintenant, dans le cas où un nœud est confronté à un hard-failure (le maître et l'esclave tombent en panne), le cluster est toujours fonctionnel, à l'exception des emplacements de hachage servis par le nœud défaillant. Maintenant, tout en testant un tel scénario, je vois que les lectures/écritures qui opèrent sur les clés servies par ces emplacements de hachage échouent avec des exceptions, ce qui est bien (j'utilise jedis btw). Cependant, si j'utilise redis cluster comme un cache, je voudrais que ces emplacements de hachage soient servis par un autre nœud. Cette fonctionnalité ne semble pas être présente dans l'utilitaire redis-trib
.Comment faire pour reprendre les emplacements de hachage d'un nœud particulier dans le cluster redis en cas de panne?
Je ne peux pas reshard le cluster pour déplacer ces emplacements de hachage comme ./redis-trib.rb reshard
échoue avec [ERR] Not all #{ClusterHashSlots} slots are covered by nodes.
. Je ne peux également pas supprimer le nœud du cluster en tant que ./redis-trib.rb del-node
échoue avec [ERR] Node #{node} is not empty! Reshard data away and try again.
. Quelle est alors la meilleure façon de gérer un scénario dans lequel je ne peux pas mettre en place mon noeud d'origine mais que ces emplacements soient servis par un autre noeud (en supposant que je perds même des données sur l'ancien noeud)? Idéalement, quelque chose comme être capable de supprimer ce nœud (maître et esclave du cluster et affecter ces emplacements de hachage à un autre nœud).
Le cluster sera réparé après le redémarrage de Redis en échec. Y a-t-il un problème à le faire? – neuront
@neuront je parle de cas où l'hôte devient inaccessible pendant un certain temps. – gravetii
Est-ce que 'redis-trib.rb fix HOST: PORT' fonctionnerait? (où 'HOST: PORT' pourrait être l'adresse de n'importe quel noeud accessible dans le cluster) – neuront