2017-08-22 6 views
0

Je souhaite disposer d'une solution à haute disponibilité avec un maître et un esclave afin que, lorsque le maître tombe en panne, l'esclave accepte les connexions automatiquement. Je ne me soucie pas de la persistance et de la réplication des données, car il s'agit d'une solution de mise en cache. Je préfère ne pas avoir la réplication à cause de la surcharge. Je ne peux pas utiliser Sentinel car je suis sous Windows et Redis v3.2 avec le pilote StackExchange.Redis qui ne supporte pas Sentinel. Je ne veux pas faire de clustering car cela nécessite 6 nœuds ce qui est trop de maintenance et je n'ai pas 6 serveurs. Est-il possible d'avoir quelque chose comme ça sans passer manuellement maître et esclave? Merci.Configuration de l'esclave maître Redis avec basculement automatique

Répondre

2

C'est exactement ce à quoi sert Redis Sentinel. Si vous ne pouvez vraiment pas l'utiliser, vous pouvez créer un petit travailleur qui surveillera vos instances redis et fera la promotion de l'esclave au maître quand le maître s'en ira, et fera l'inverse quand il reviendra. La surveillance devrait être facile. Redis même en tant que ping command.

Il semble que StackExchange.Redis peut déjà surveiller plusieurs instances et tenter de sélectionner le bon maître. Votre application doit donc le détecter et envoyer des commandes au maître actuel.

Exemple ici: https://stackexchange.github.io/StackExchange.Redis/Configuration#automatic-and-manual-configuration

Sinon, vous devrez fournir un moyen pour votre travailleur de moniteur pour partager les modifications de configuration avec votre application (s). Cela peut être géré via un fichier partagé ou une API. Vous devrez vérifier ces changements dans votre application (s) sur connecter/reconnecter. En fin de compte, votre moniteur va fournir un sous-ensemble de ce que fournit Redis Sentinel. Votre effort peut être mieux dépensé pour le faire fonctionner sur Windows, ce que cette configuration et le dépôt suggèrent est possible: https://github.com/ServiceStack/redis-config/blob/master/sentinel3/windows/start-all.cmd