Cambiar dinámicamente el clúster Cassandra de un nodo a dos nodos

Cambiar dinámicamente el clúster Cassandra de un nodo a dos nodos

Así que tengo una aplicación que estará inactiva la mayor parte del tiempo, pero necesitará un alto nivel de actividad algunos días al mes. Dado que estamos implementando en EC2, me gustaría mantener activo solo un servidor Cassandra la mayor parte del tiempo y luego, en los días de ráfaga, quiero activar un servidor más (con más RAM y CPU que el primero) para ayudar a atender la carga. ¿Cuál es la mejor manera de hacer esto? ¿Debería adoptar un enfoque diferente?

Algunas notas sobre lo que planeo hacer:

  • Levante el nodo y repárelo inmediatamente.
  • Una vez finalizado el tiempo de ráfaga, desmantele el poderoso nodo.
  • Utilice el servidor siempre activo como nodo semilla

Mi pregunta principal es cómo hacer que los nodos compartan todos los datos, ya que quiero un factor de replicación de 2 (para que ambos nodos tengan todos los datos), pero eso no funcionará mientras solo haya un servidor. ¿Debería abrir 2 servidores adicionales en lugar de solo uno?

Respuesta1

Parece que puedes fácilmentecambiar el factor de replicación.

Esto también se menciona en elWiki Casandra, donde puede encontrar instrucciones tanto para aumentar como para disminuir el factor de replicación.

Esto significa que debería ser posible hacer esto:

  • cambiar el factor de replicación de 1 a 2
  • abra y repare su nodo de ráfaga para que reciba una copia de todos los datos
  • ... hacer trabajo ...
  • nodo de ráfaga de desmantelamiento
  • cambiar el factor de replicación de 2 a 1
  • ejecutar la limpieza

Respuesta2

En mi experiencia, cambiar el factor de replicación sobre la marcha no funciona tan bien :-( Puede terminar con desacuerdos en el esquema, cuyas soluciones requieren mucho tiempo, al menos para mí.

Solo estoy pensando en voz alta, pero otra ruta posible podría ser (cambiar los horarios para adaptarlos):

  1. Aumente el período de gracia de GC en cassandra.yaml (esto determina cuánto tiempo viven las lápidas antes de ser eliminadas del disco) para decir 30 días.
  2. Active un segundo nodo cada 15 días aproximadamente, sea necesario o no. Asegúrese de que sus datos/registros de confirmación, etc., se conserven entre ejecuciones. Esto significará que podrá comenzar más rápido cuando necesite activar el segundo nodo.
  3. con más RAM y CPU que el primero

Cassandra divide efectivamente la carga de trabajo por la cantidad de anillo del que es responsable cada nodo. Podría ser más fácil hacer que el segundo nodo duplique la capacidad del primero o agregue 2 nodos del mismo tamaño que el primero, para facilitar la división del anillo.

Sin embargo, esto aún requerirá la intervención manual de la herramienta de nodos al eliminar los nodos, ya que las transferencias sugeridas llenarán el disco innecesariamente en el nodo restante.

información relacionada