Alterando dinamicamente o cluster Cassandra de um nó para dois nós

Alterando dinamicamente o cluster Cassandra de um nó para dois nós

Portanto, tenho um aplicativo que ficará muito inativo na maior parte do tempo, mas precisará de alta intermitência alguns dias por mês. Como estamos implantando no EC2, gostaria de manter apenas um servidor Cassandra ativo na maior parte do tempo e, em dias de pico, quero ativar mais um servidor (com mais RAM e CPU que o primeiro) para ajudar a atender a carga. Qual é a melhor maneira de fazer isso? Devo adotar uma abordagem diferente?

Algumas notas sobre o que pretendo fazer:

  • Levante o nó e repare-o imediatamente
  • Depois que o tempo de burst terminar, desative o nó poderoso
  • Use o servidor sempre ativo como nó inicial

Minha principal questão é como fazer com que os nós compartilhem todos os dados, já que quero um fator de replicação de 2 (para que ambos os nós tenham todos os dados), mas isso não funcionará enquanto houver apenas um servidor. Devo abrir 2 servidores extras em vez de apenas um?

Responder1

Parece que você pode facilmentealterar o fator de replicação.

Isto também é mencionado noWiki de Cassandra, onde você pode encontrar instruções para aumentar e diminuir o fator de replicação.

Isso significa que deve ser possível fazer isso:

  • alterar o fator de replicação de 1 para 2
  • abra e repare seu nó burst para que ele receba uma cópia de todos os dados
  • ... trabalhe ...
  • nó de explosão de desativação
  • alterar o fator de replicação de 2 para 1
  • executar limpeza

Responder2

Alterar o fator de replicação rapidamente não funciona muito bem na minha experiência :-( Você pode acabar com divergências de esquema, que levam tempo para serem corrigidas, pelo menos para mim.

Apenas pensando em voz alta, mas outro caminho possível poderia ser (alterar os horários para se adequar):

  1. Aumente o período de carência do GC em cassandra.yaml (isso determina quanto tempo as lápides permanecem antes de serem eliminadas do disco) para 30 dias
  2. Gire um segundo nó a cada 15 dias ou mais, seja necessário ou não. Certifique-se de que seus dados/logs de commit, etc. sejam preservados entre as execuções. Isso significa que você começará mais rápido quando precisar ativar o segundo nó
  3. com mais RAM e CPU que o primeiro

Cassandra divide efetivamente a carga de trabalho pela quantidade de anel pela qual cada nó é responsável. Pode ser mais fácil fazer com que o segundo nó dobre a capacidade do primeiro ou adicione 2 nós do mesmo tamanho do primeiro, para facilitar a divisão do anel.

Isso ainda exigirá intervenção manual do nodetool ao descartar os nós, pois as transferências sugeridas preencherão o disco desnecessariamente no nó restante.

informação relacionada