Redis
 sql >> Base de Dados >  >> NoSQL >> Redis

Usando a Replicação Redis em máquinas diferentes (múltiplos mestres)


Você está pedindo uma solução Ativa-Ativa, também conhecida como multi-mestre, mas sua pergunta sugere que você pode não precisar dela.

Se você precisar que apenas um dos bancos de dados esteja disponível para gravações, ou seja, todas as gravações sempre ocorrem, você pode conseguir isso com a replicação padrão mestre-escravo do Redis. Direcione seu aplicativo para usar o mestre para gravações e (potencialmente) faça com que seu escravo atenda a algumas das leituras também. Se o mestre falhar, promova o escravo no segundo DC para ser o novo mestre e redirecione seu aplicativo/clientes para usá-lo. Monitoramento e promoção podem ser alcançados com o Redis' Sentinel.

Há algumas coisas que você deve levar em consideração ao implementar esse tipo de configuração. Primeiro, observe que a replicação do Redis é assíncrona, portanto, dependendo da carga do seu mestre, do volume de gravações e da qualidade do link de rede da replicação, você pode perder algumas das atualizações recentes em caso de failover. Em segundo lugar e no mesmo tópico, um link de rede inter-DC pode ser propenso a largura de banda limitada e latência aumentada - você deve configurar o Redis para lidar com isso e talvez usar compactação para esse tráfego (por exemplo, por meio de um túnel SSH). Por fim, para detectar falhas com precisão, você precisará ter pelo menos 3 Sentinelas em locais diferentes. Mas, apesar desses desafios, tudo isso é factível.

Dito isso, uma configuração de vários mestres na qual as gravações podem ser feitas arbitrariamente em qualquer banco de dados não é suportado pelo Redis no momento. Se isso é realmente o que você precisa, considere usar uma solução diferente.

Observação:dependendo de seus requisitos exatos, se você puder garantir que as gravações em diferentes DCs sejam mutuamente exclusivas (ou seja, cada DC obtém gravações apenas em um subconjunto distinto de chaves que não são compartilhadas pelo outro DC), você pode usar dois bancos de dados com um mestre em cada DC e o escravo no outro.