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.