Cluster Redis: 3 nós mestres no mínimo?

3

Estou avaliando os recursos de cluster do Redis 3 (estou usando o Redis 2 autônomo no momento), então estou lendo as informações em link .

Neste documento eu li uma informação muito importante:

Note that the minimal cluster that works as expected requires to contain at least three master nodes. For your first tests it is strongly suggested to start a six nodes cluster with three masters and three slaves.

É verdade mesmo? Na minha opinião, isso está correto se eu usasse recursos de sharding (os dados são compartilhados entre nós), mas e se eu não precisar disso e ficaria feliz em ter dados em apenas um nó?

Eu basicamente preciso de um mestre e dois escravos (para que o cluster ficasse ativo se um nó falhar), posso ter essa configuração em um ambiente de produção? Se sim, quais são as contra-indicações?

Muito obrigado pela sua ajuda!

    
por Mat 18.11.2016 / 17:13

4 respostas

3

Is it really true?

Sim, é por isso que está na documentação:)

In my mind this is correct if I would use sharding capabilities (data are shared between nodes), but what if I don't need it and I would be happy of having data on only one node?

O uso do Redis no modo de cluster significa fragmentação. Se você está feliz com uma única instância, simplesmente não use o cluster. Caso contrário, consulte a especificação de cluster em si para entender mais sobre as suposições subjacentes. Especificamente, no caso de configuração mínima de cluster, você desejará 3 mestres para garantir a disponibilidade do cluster no caso de uma partição, ou então você não poderá concordar com a maioria.

    
por 18.11.2016 / 21:10
3

Se você confiar no Redis para fazer o failover, você precisará de um mínimo de três nós mestres e três nós escravos (um mínimo de três servidores, cada um executando um mestre e um escravo).

Se você usar software de cluster externo, por exemplo heartbeat, poderá configurar dois nós, um sendo mestre e outro sendo escravo no modo de cluster, alocar todos os 16384 slots ao mestre e usar scripts de failover para "CLUSTER FAILOVER TAKEOVER" quando o mestre está em baixo. Claro que você também pode configurar um IP de serviço para failover junto com os redis. Este arranjo adicional também permite que você use o cliente redis sem cluster.

A produção é executada por um ano e falha algumas vezes (reinicialização da máquina para atualização do kernel) e até o momento nenhum problema foi relatado pela equipe de operação.

    
por 18.12.2017 / 05:29
2

Is it really true?

Não. Não é realmente verdadeiro. É uma recomendação strong (como você pode dizer da linguagem "que funciona como esperado"; se você não espera que seus dados sejam duráveis e espera que eles desapareçam etc.), você pode configurar um cluster de nó único. Por que você iria, em vez de simplesmente desligar o modo de cluster ... isso é com você.

Então, sim, você pode configurar um cluster de nó único, mesmo que não seja recomendado (por todas as razões mencionadas em outras respostas e na documentação.) Não há nada no código de cluster redis que irá pará-lo, além de um check no assistente redis-trib.rb que está lá para dissuadir usuários ingênuos.

Para contornar essa verificação e configurar um cluster de nó único (se tiver certeza de que é o que deseja - lembre-se, quase certamente não é), você pode atribuir manualmente os shards ao nó com CLUSTER ADDSLOTS 1 2 3 ... (etc, para todos os 16384 shards). Ou use a versão Python do redis-trib, que não possui a verificação de segurança de 3 nós ( redis-trib.py create 127.0.0.1:6379 ).

    
por 14.08.2017 / 04:54
1

Eu sei que esta pergunta é antiga, mas se alguém precisar de uma configuração semelhante, pode usar a configuração do Master-Slaves em vez do Cluster. Você precisa de:

  • 2 servidor Redis pelo menos
  • 3 Redis Sentinel para monitorar a saúde e evitar Raciocínio
  • Uma maneira de verificar quem é o mestre (eu uso o HAProxy no servidor do cliente com alguns comandos de verificação)

Se você conseguir torná-lo inteligente o suficiente, basta escrever para o mestre e ler todos os nós. Eu uso esta configuração em alguns sites do Wordpress, mas o plugin não é feito para detectar quem é o mestre, então eu apenas uso o HAProxy para detectar o mestre e enviar todo o tráfego para esse nó. Se o nó mestre morrer, um nó Escravo assumirá a função de mestre (redis-sentinel gerenciará isso). O HAProxy detecta que o mestre foi alterado e, em seguida, altera o nó que recebe todo o tráfego.

Desculpe por não postar código e exemplos, mas agora não posso fazer isso.

Saudações !!

    
por 22.06.2018 / 10:48

Tags