Redis sentinel vs agrupamento

eu entendo que o redis sentinel é uma forma de configurar o HA (alta disponibilidade) entre várias instâncias do redis. Como vejo, há uma instância redis servindo ativamente os pedidos dos clientes em qualquer momento. Há dois servidores adicionais em standby (esperando por uma falha acontecer, então um deles pode estar em ação novamente).

    É desperdício de recursos? Existe uma melhor forma de utilizar plenamente os recursos disponíveis?
  • Is Redis clustering an alternativa ao Redis sentinel?
{[[2]}já procurei a documentação do redis para sentinele agrupamento {[[14]}, alguém com experiência pode explicar por favor.

Master slave configuration in Redis sentinel - before failure

Master fails and slave kicks in to action

actualizar

Está bem. No meu verdadeiro cenário de implantação, tenho dois servidores dedicados à redis. Tenho outro servidor que o meu servidor Jboss está a correr. A aplicação em execução no Jboss está configurada para se ligar ao servidor mestre redis(M).

cenário de falha

idealmente, eu acho que quando o servidor mestre de cache falha (ou o processo Redis cai ou falha da máquina) o aplicativo no Jboss precisa se conectar ao servidor de cache Slave. Como posso configurar os servidores redis para conseguir isso?

+--------+          +--------+
| Master  |---------| Slave  |
|         |         |        |
+--------+          +--------+

Configuration: quorum = 1
Author: Wernight, 2015-06-30

4 answers

Primeiro, vamos falar com o sentinel. O Sentinel gere a falha, não configura o Redis para o HA. É uma distinção importante. Em segundo lugar, o diagrama que você postou é na verdade uma configuração ruim - você não quer executar Sentinel no mesmo nó que os nós Redis que ele está gerenciando. Quando perdes o hospedeiro, perdes ambos. Quanto a " é desperdício de recursos?"depende do seu caso de uso. Não precisas de três nódulos Redis nessa configuração, só precisas de dois. Três aumenta a sua redundância, mas não é necessária. Se você precisa da redundância adicionada, então não é um desperdício de recursos. Se você não precisa de redundância, então você apenas executar uma única instância Redis e chamá - lo de bom-como correr mais seria "desperdiçado". Outra razão para gerir dois escravos seria dividir leituras. Mais uma vez, se precisares, não seria um desperdício. Quanto a " Existe uma melhor forma de utilizar plenamente os recursos disponíveis?"não podemos responder que é muito dependente do seu cenário específico e Código. Dito isto, se a quantidade de dados para armazenar é "pequena" e a taxa de comando não é excessivamente alta, então lembre-se que você não precisa dedicar um host para Redis. Agora para "Redis está reunindo uma alternativa para Redis sentinel?". Depende inteiramente do seu caso de uso. Redis Cluster não é uma solução HA - é uma solução de escritor múltiplo / maior-que-ram. Se o seu objectivo é apenas HA, então provavelmente não será adequado para si. O conjunto Redis vem com limitações, particularmente em torno de operações multi-chave, por isso não é necessariamente uma operação simples "basta usar cluster". Se você acha que ter três hosts rodando Redis (e três Sentinela executando) é um desperdício, você provavelmente vai manter Cluster para ser ainda mais, pois ele precisa de mais recursos. As perguntas que fez são, provavelmente, demasiado amplas e baseadas em opiniões para sobreviverem como escritas. Se você tem um caso/problema específico que você está trabalhando fora por favor atualize com isso para que possamos fornecer assistência e informação específicas.

Actualização para pormenores:

Para uma boa gestão de falhas no teu cenário, diria 3 sentinelas, uma a correr no teu servidor JBoss. Se você tem 3 nós JBoss, em seguida, ir com um em cada. Eu teria um pod Redis (mestre + escravo) em nós separados, e deixar sentinel gerir o failover. A partir daí, é uma questão de ligar o JBoss / Jedis para usar o Sentinel para a sua informação e gestão de ligações. Como eu não uso isso uma busca rápida acontece que Jedis tem o suporte para isso, você só precisa configurá-lo corretamente. Alguns exemplos que encontrei estão em à procura de um exemplo de Jedis com Sentinel e https://github.com/xetorthio/jedis/issues/725 {[24] } que falam sobre {[[0]} ser o caminho para usar uma piscina. Quando o Sentinel executar uma falha, os clientes serão desligados e o Jedis irá.) lidar com a reconexão, perguntando aos Sentinelas quem é o atual mestre.
 72
Author: The Real Bill, 2017-05-23 12:34:10

A recomendação, em todo o lado, é começar com um número ímpar de instâncias, não usando dois ou um múltiplo de dois. Isso foi corrigido, mas vamos corrigir alguns outros pontos.

Primeiro, dizer que Sentinel fornece failover sem HA é falso. Quando você tem failover, você tem HA com o benefício adicional do Estado de aplicação sendo replicado. A distinção é que você pode ter HA em um sistema sem replicação (é HA, mas não é tolerante a culpa).

Segundo, executar um sentinel na mesma máquina que a sua instância alvo redis não é uma "má configuração": se você perder o seu Sentinela, ou a sua instância redis, ou toda a máquina, os resultados são os mesmos. É provavelmente por isso que cada exemplo de tais configurações mostra ambos funcionando na mesma máquina.

 28
Author: Rick O'Shea, 2017-09-07 17:18:23
Isto não é resposta directa à tua pergunta, mas pensa, é informação útil para os Redis newbies, como eu. Também esta questão aparece como o primeiro link no google ao pesquisar o "Redis cluster vs sentinel".
Redis Sentinel é o nome da solução Redis de alta disponibilidade... Não tem nada a ver com o aglomerado Redis e destina-se a ser usado por pessoas que não precisam de Redis Cluster, mas simplesmente uma forma de actuar. falha automática quando uma instância principal não está a funcionar correctamente.

Retirado do projecto Redis Sentinel 1.3

Não é óbvio quando se é novo na Redis e na implementação da solução de falha. Documentação oficial sobre sentinel e agrupamento {[[9]} Os homens não se comparam entre si, por isso é difícil escolher o caminho certo sem ler toneladas de documentação.
 19
Author: Kamarey, 2016-11-16 09:48:48
Este é o meu entendimento depois de ter batido com a cabeça na documentação. O Sentinel é uma espécie de solução de espera quente, onde os escravos são replicados e prontos para serem promovidos a qualquer momento. No entanto, não suporta qualquer escrita multi-nó. Os escravos podem ser configurados para operações de leitura. Não é verdade que Sentinel não vai fornecer HA, ele tem todas as características de um típico cluster ativo-passivo (embora isso não é um termo certo para usar aqui ).

O aglomerado Redis é mais ou menos uma solução distribuída, trabalhando em cima de fragmentos. Cada pedaço de dados está sendo distribuído entre os nós mestres e escravos. Um fator de replicação mínimo de 2 garante que você tem dois cacos ativos disponíveis entre mestres e escravos. Se você conhece o sharding em Mongo ou Elasticsearch, será fácil de alcançar.

 1
Author: anraj, 2018-07-03 12:50:43