Saltar al contenido

¿Cómo eliminar el nodo muerto del clúster de Cassandra?

Solución:

Tuve el mismo problema y lo resolví con removenode, que no requiere que busque y cambie el token de nodo.

Primero, obtenga el UUID del nodo:

nodetool status

DN  192.168.56.201  ?          256     13.1%  4fa4d101-d8d2-4de6-9ad7-a487e165c4ac  r1
DN  192.168.56.202  ?          256     12.6%  e11d219a-0b65-461e-babc-6485343568f8  r1
UN  192.168.2.91    156.04 KB  256     12.4%  e1a33ed4-d613-47a6-8b3b-325650a2bbd4  RAC1
UN  192.168.2.92    156.22 KB  256     13.6%  3a4a086c-36a6-4d69-8b61-864ff37d03c9  RAC1
UN  192.168.2.93    149.6 KB   256     11.3%  20decc72-8d0a-4c3b-8804-cc8bc98fa9e8  RAC1

Como puede ver, el .201 y el .202 están muertos y en una red diferente. Estos se han cambiado a .91 y .92 sin una puesta fuera de servicio y una nueva puesta en servicio adecuadas. Estaba trabajando en la instalación de la red y cometí algunos errores …

En segundo lugar, elimine el .201 con el siguiente comando:

nodetool removenode 4fa4d101-d8d2-4de6-9ad7-a487e165c4ac

(en versiones anteriores era nodetool remove ...)

Pero al igual que para el nodetool removetoken ..., bloquea … (vea el comentario de samarth en la respuesta de psandord) Sin embargo, tiene un efecto secundario, coloca ese UUID en una lista de nodos que se eliminarán. Entonces, a continuación, podemos forzar la eliminación con:

nodetool removenode force

(en versiones anteriores era nodetool remove ...)

Ahora el nodo acepta el comando y me dice que está eliminando la entrada no válida:

RemovalStatus: Eliminando token (-9136982325337481102). Esperando la confirmación de la replicación de [/192.168.2.91,/192.168.2.92].

También vemos que se comunica con los otros dos nodos que están activos y, por tanto, lleva un poco de tiempo, pero sigue siendo bastante rápido.

Siguiente a nodetool status no muestra el nodo .201. Repito con .202 y ahora el estado es limpio.

Después de eso, es posible que también desee ejecutar una limpieza como se menciona en la respuesta de psanford:

nodetool cleanup

La limpieza debe ejecutarse en todos los nodos, uno por uno, para asegurarse de que el cambio se tenga en cuenta por completo.

Normalmente, al reemplazar un nodo, desea establecer el token del nuevo nodo en (failure node's token) - 1 y déjelo arrancar. A partir de la versión 1.0, ahora hay una bandera que puede especificar en el inicio para reemplazar un nodo muerto: “cassandra.replace_token =”.

Como ya ha agregado el nuevo nodo con el mismo token, hay un paso adicional:

  1. Mueva el token del nuevo nodo a (failure node's token) - 1 utilizando nodetool move
  2. Correr nodetool removetoken <failed node's token> desde uno de los nodos superiores
  3. Correr nodetool cleanup en cada nodo

Estas son básicamente las instrucciones anteriores a 1.0 para reemplazar un nodo muerto con el movimiento de token adicional.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *