Resolver problemas del clúster

Nodos que no entran, liderazgos que se pierden y rangos sin mayoría.

Estos son los problemas del clúster que más se ven. De cada uno tienes la causa, cómo confirmarla, cómo resolverlo y qué hacer para que no vuelva a pasar.

Un nodo nuevo no entra en el clúster

Arrancas el binario en la máquina nueva con --join y su token, pero teseladb admin nodes no lo lista y el nodo no recibe réplicas.

Causa

Hay dos causas posibles. El token de alta ya se usó o caducó, o el puerto 27100 está cerrado entre la máquina nueva y la del nodo al que apunta --join.

Cómo confirmarlo

Lee el log del nodo nuevo. Si dice que el token se rechazó, el problema es el token; si dice que no llega a la dirección de --join, es la red.

Solución

Crea un token nuevo con teseladb admin token create, o abre el puerto 27100 entre las dos máquinas, y vuelve a arrancar el nodo con --join.

Cómo evitarlo

Crea el token justo antes de arrancar el nodo, usa uno distinto para cada nodo y comprueba el puerto 27100 al preparar la máquina.

Un nodo cede todos sus liderazgos

El nodo sigue en el clúster y conserva sus réplicas. Sin embargo, teseladb admin ranges muestra que ya no lidera ningún rango y los otros nodos reciben toda la carga de escritura.

Causa

El reloj de esa máquina se ha alejado más de 125 ms de la mediana del clúster, y un nodo fuera de ese margen cede sus liderazgos.

Cómo confirmarlo

Busca en el log del nodo la línea que anota que su reloj está fuera del margen. Suele aparecer varias veces seguidas.

Solución

Revisa NTP en esa máquina. En cuanto el reloj vuelve a estar a menos de 125 ms de la mediana, el nodo acepta liderazgos de nuevo y el equilibrador le devuelve parte de ellos.

Cómo evitarlo

Mantén NTP en todas las máquinas del clúster y añade una alerta sobre su desvío, para enterarte antes de que un nodo pase del margen.

Un rango deja de aceptar escrituras

Las lecturas de algunos documentos siguen funcionando mientras las escrituras sobre ellos fallan o esperan hasta agotar su tiempo. Todos esos documentos viven en el mismo rango.

Causa

El rango perdió la mayoría de sus réplicas, por ejemplo porque cayeron a la vez dos de las tres máquinas que las tenían.

Cómo confirmarlo

Ejecuta teseladb admin ranges --collection <base.colección>. El rango afectado aparece sin líder.

Solución

Vuelve a arrancar los nodos que tenían sus réplicas. Cuando vuelve la mayoría, el rango elige líder y acepta escrituras; si esas máquinas no pueden volver, restaura una copia en un clúster nuevo.

Cómo evitarlo

Despliega en tres máquinas como mínimo y reparte sus fallos posibles: fuentes de alimentación, conmutadores de red y, si puedes, centros de datos distintos.

Ver también