Depois de muito pleitear e construir casos, meu grupo conseguiu o orçamento para comprar 4 nós e iniciar um cluster de cassandra. Cada máquina tem unidades de 3x1 TB, então estou me perguntando se é razoável ignorar a redundância de 1 via e espelhar a(s) unidade(s) de dados.
Os dados serão copiados para que isso não seja um problema.
Parece que a probabilidade de perder uma máquina em um grupo tão pequeno é muito baixa.
Isso é razoável ou estou perdendo algum problema / fator maior?
Realmente depende para que você está usando o cassandra. Você o está usando para disponibilidade de seus dados, particionamento de seus dados ou ambos? Pelo que parece, você o está usando mais para o particionamento de seus dados, para que possa dimensioná-los.
Parte do motivo pelo qual você deseja replicar seus dados no cassandra é a disponibilidade. Se você tiver um cluster de 4 nós com um fator de replicação de 3, por exemplo, poderá sobreviver à perda de um nó sem precisar fazer nenhuma manutenção (com nível de consistência de quorum, 2 nós com nível de consistência 'um'). Por outro lado, cada um de seus nós conteria 75% dos dados no cluster, o que provavelmente é algo que você esperava evitar. É por isso que eu tentaria pleitear outro ou dois servidores, embora talvez você não precise deles imediatamente e possa adicionar mais servidores conforme suas necessidades de dados aumentarem.
Embora você mencione que é improvável perder uma máquina, na minha opinião, executar com um fator de replicação de 1 está causando problemas. Você pode nunca ter problemas, mas quando o fizer, não será divertido. Se você estivesse usando um servidor gigante para atender seu banco de dados, parece menos provável que ele falhasse do que 1 de 4 servidores individuais, certo?
Há também outras coisas que podem fazer com que um nó cassandra falhe ou pare de responder (falhas do sistema operacional, coleta de lixo, problemas de rede, etc.)
Quando você começa a usar um banco de dados distribuído, a tolerância a falhas deve se tornar uma preocupação maior do que ao usar uma configuração tradicional de banco de dados único e o cassandra se concentra e se destaca nisso.
Já tive experiências anteriores em que é difícil justificar compras de hardware e configuração de ambiente com o gerenciamento. A melhor maneira de fazê-los entender as implicações é delinear um cenário de falha e se é aceitável ou não, por exemplo:
Se a resposta for '0 minutos', você desejará usar um fator de replicação de pelo menos 3. Há mais benefícios nisso também. Com um fator de replicação de 3, isso significa que mais nós podem atender a uma solicitação de leitura individual, melhorando potencialmente o desempenho de leitura.
Além disso, espelhamento/RAID 1 é considerado um antipadrão com Cassandra para seus dados (embora não seja uma má ideia para commitlogs). Seria melhor usar RAID 0 ou vários diretórios de dados, definir seu fator de replicação para 3 e deixar o cassandra cuidar da redundância para você.