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

Sentinela do Redis vs clustering


Primeiro, vamos falar de sentinela.

O Sentinel gerencia o failover, ele não configura o Redis para HA. É uma distinção importante. Segundo, o diagrama que você postou é, na verdade, uma configuração ruim - você não deseja executar o Sentinel no mesmo nó dos nós Redis que ele está gerenciando. Quando você perde esse host, perde os dois.

Quanto a "É desperdício de recursos?" depende do seu caso de uso. Você não precisa de três nós Redis nessa configuração, você só precisa de dois. Três aumenta sua redundância, mas não é necessário. Se você precisar de redundância adicional, não será um desperdício de recursos. Se você não precisar de redundância, basta executar uma única instância do Redis e chamá-la de boa - pois executar mais seria "desperdiçado".

Outra razão para executar dois escravos seria dividir as leituras. Novamente, se você precisar, não seria um desperdício.

Quanto a "Existe uma maneira melhor de usar todos os recursos disponíveis?" não podemos responder a isso, pois depende muito do seu cenário e código específicos. Dito isto, se a quantidade de dados a armazenar for "pequena" e a taxa de comando não for excessivamente alta, lembre-se de que você não precisa dedicar um host ao Redis.

Agora, para "O Redis clustering é uma alternativa ao Redis sentinela?". Isso realmente depende inteiramente do seu caso de uso. O Redis Cluster não é uma solução de alta disponibilidade - é uma solução de vários gravadores/maiores que ram. Se seu objetivo for apenas HA, provavelmente não será adequado para você. O Redis Cluster vem com limitações, principalmente em relação a operações com várias chaves, portanto, não é necessariamente uma operação simples de "apenas usar cluster".

Se você acha que ter três hosts executando o Redis (e três executando o sentinela) é um desperdício, provavelmente considerará o Cluster ainda mais, pois exige mais recursos.

As perguntas que você fez provavelmente são muito amplas e baseadas em opiniões para sobreviver como estão escritas. Se você tiver um caso/problema específico que está resolvendo, atualize-o para que possamos fornecer assistência e informações específicas.

Atualização para detalhes:

Para gerenciamento de failover adequado em seu cenário, eu usaria 3 sentinelas, uma em execução no servidor JBoss. Se você tiver 3 nós JBoss, use um em cada. Eu teria um pod Redis (mestre + escravo) em nós separados e deixaria o sentinela gerenciar o failover.

A partir daí é uma questão de conectar o JBoss/Jedis para usar o Sentinel para suas informações e gerenciamento de conexões. Como não uso isso, uma pesquisa rápida mostra que o Jedis tem suporte para isso, basta configurar corretamente. Alguns exemplos que encontrei estão em Procurando um exemplo de Jedis com Sentinel e https://github.com/xetorthio/jedis/issues/725 que falam sobre JedisSentinelPool sendo a rota para usar uma piscina.

Quando o Sentinel executa um failover, os clientes serão desconectados e os Jedis irão (devem?) lidar com a reconexão perguntando aos Sentinels quem é o mestre atual.