Redis
 sql >> Base de données >  >> NoSQL >> Redis

Utilisation de la réplication Redis sur différentes machines (multi maître)

Vous demandez une solution Active-Active, c'est-à-dire multi-maître, mais votre question suggère que vous n'en avez peut-être pas besoin.

Si vous avez besoin qu'une seule des bases de données soit disponible pour les écritures, c'est-à-dire que toutes les écritures y vont toujours, vous pouvez y parvenir avec la réplication maître-esclave standard de Redis. Dirigez votre application pour qu'elle utilise le maître pour les écritures et (potentiellement) que votre esclave serve également certaines des lectures. Si le maître tombe en panne, promouvez l'esclave dans le 2ndary DC pour qu'il devienne le nouveau maître et redirigez votre application/clients pour qu'ils l'utilisent. La surveillance et la promotion peuvent être réalisées avec Sentinel de Redis.

Il y a quelques éléments que vous devrez prendre en considération lors de la mise en œuvre de ce type de configuration. Notez tout d'abord que la réplication de Redis est asynchrone. En fonction de la charge de votre maître, du volume d'écritures et de la qualité du lien réseau de la réplication, vous pourriez perdre certaines des mises à jour récentes en cas de basculement. Deuxièmement et sur le même sujet, une liaison réseau inter-DC pourrait être sujette à une bande passante limitée et à une latence accrue - vous devez configurer Redis pour gérer cela et peut-être utiliser la compression pour ce trafic (par exemple via un tunnel SSH). Enfin, pour détecter avec précision les pannes, vous souhaiterez disposer d'au moins 3 sentinelles à différents endroits. Mais malgré ces défis, tout est faisable.

Cela dit, une configuration multi-maître dans laquelle les écritures peuvent être arbitrairement effectuées sur n'importe quelle base de données n'est pas pris en charge par Redis pour le moment. Si c'est vraiment ce dont vous avez besoin, envisagez d'utiliser une autre solution.

Remarque :en fonction de vos besoins exacts, si vous pouvez garantir que les écritures sur différents contrôleurs de domaine s'excluent mutuellement (c'est-à-dire que chaque contrôleur de domaine obtient des écritures uniquement sur un sous-ensemble distinct de clés qui n'est pas partagé par l'autre contrôleur de domaine), vous pouvez utiliser deux bases de données avec un maître dans chaque DC et l'esclave dans l'autre.