¿Necesito absolutamente un mínimo de 3 nodos/servidores para un clúster Cassandra o será suficiente?
-
22-09-2019 - |
Pregunta
Seguramente uno puede ejecutar un solo clúster de nodo, pero me gustaría algún nivel de tolerancia a fallas.
En la actualidad, puedo permitirme alquilar dos servidores (8 GB de RAM, VLAN privado @1gige) pero no 3.
Entiendo que 3 nodos es el mínimo necesario para un clúster de Cassandra porque no hay una mayoría posible entre 2 nodos, y se requiere una mayoría para resolver conflictos de versiones. Oh, espera, ¿estoy pensando en "relojes vectoriales" y Riak? ¡ACK! Cassandra utiliza marcas de tiempo para la resolución de conflictos.
Para 2 nodos, ¿cuál es la estrategia de lectura/escritura recomendada? ¿Debería escribir generalmente todos los (ambos) nodos y leer de uno (n = 2; w = n/2+1; w = 2/2+1 = 2)? Cassandra usará Tirsed-Handoff como de costumbre incluso para 2 nodos, ¿sí?
Estos 2 servidores se encuentran en el mismo centro de datos FWIW.
¡Gracias!
Solución
Si necesita disponibilidad en un sistema RF = 2, clustersize = 2, entonces no puede usar todo o no podrá escribir cuando un nodo caiga.
Es por eso que las personas recomiendan 3 nodos en lugar de 2, porque entonces puedes hacer lecturas de quórum+escrituras y aún así tener una fuerte consistencia y disponibilidad si un solo nodo cae.
Con solo 2 nodos, puede elegir si desea una fuerte consistencia (escriba con todo) o disponibilidad frente a una sola falla de nodo (escriba con uno) pero no ambos. Por supuesto, si escribe con un Cassandra, hará una transferencia insinuada, etc. según sea necesario para hacerlo eventualmente consistente.