Tenho uma configuração Cassandra 3.11.4 de nó único em um datacenter.
Sei que isso é horrível e errado, então estou tentando consertar movendo os dados para uma configuração de 3 nós em outro datacenter.
Tirar um snapshot e copiá-lo significa muito tempo de inatividade, então estou tentando adicionar os 3 novos nós ao cluster e fazer com que o Cassandra replique os dados.
A estratégia para meu keyspace de usuário, bem como system_distributed
, system_auth
e system_traces
é esta:
{'class': 'NetworkTopologyStrategy', '(newdc)': '3', '(olddc)': '1'}
Todos os nós se veem corretamente (1 no antigo datacenter, 3 no novo). Todos os nós relatam UN. Todos os nós relatam 100% de propriedade efetiva. Posso consultar meu keyspace de qualquer nó e obter dados de volta. Há uma pasta para meu keyspace de usuário na pasta de dados nos novos nós, mas ela está vazia. Os novos nós mostram <1MB de carga, o que parece um pouco baixo em comparação com os 600GB+ do original.
Quando eu faço isso nodetool rebuild -- (olddc)
em qualquer um dos novos nós, ele retorna quase imediatamente sem nenhuma mensagem. Esse é o comando que todos me dizem que deve realmente mover os dados, mas nada feito.
Como faço para que os dados sejam realmente replicados?
No log, eu obtenho Some ranges in (...all my ranges...) are already available, skipping streaming these ranges
. Disponível sim, eu realmente gostaria que o nó tivesse os dados!
nodetool status
mostra isso:
Datacenter: (new)
==================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN XX.XXX.X.110 775.49 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
UN XX.XXX.X.109 929.93 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
UN XX.XXX.X.108 710.75 KiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
Datacenter: (old)
=============================
Status=Up/Down
|/ State=Normal/Leaving/Joining/Moving
-- Address Load Tokens Owns (effective) Host ID Rack
UN XXX.XX.X.233 676.17 GiB 256 100.0% XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX Unknown
Reiniciei o nó antigo e agora nodetool rebuild
me aparece isso:
nodetool: Unable to find sufficient sources for streaming range (-1652045364361720276,-1613609154633147610] in keyspace system_distributed
Reiniciei todos os nós novamente e tudo parece estar funcionando agora.
Parte disso parece ser porque o "cluster" original tem apenas um nó. NÃO FAÇA ISSO , eles não estão brincando quando dizem que as coisas vão mal quando você faz isso. Não é só redundância, as coisas simplesmente não funcionam direito.
A segunda parte parece ser uma conexão não confiável entre nossos data centers (ambos externos). Só porque seu provedor diz que você tem uma conexão gigabit sólida não significa que você deve acreditar neles.
Se você está lendo isso, pode estar tendo o mesmo problema.
Se estiver, leia todos os comentários e siga as excelentes sugestões do Mario para descartar outros problemas. Se você ainda estiver tendo esses mesmos problemas estranhos e intermitentes, seus passos são:
- Reinicie todos os nós (ambos os datacenters) em rápida sucessão.
- Aguarde 24 horas.
- Reinicie todos os nós (ambos os datacenters) em rápida sucessão.
- Aguarde 4 horas.
- Tente novamente.
(Não vou responder a essa pergunta porque a "solução" é essencialmente equivalente a uma dança da chuva e totalmente insatisfatória.)