Matar un nodo y verlo volver

TeselaDB

TeselaDB

Equipo de TeselaDB

20 minPrincipiante

Mata un nodo de un clúster de tres sin avisar, mira cómo sus rangos eligen líder nuevo y cómo se pone al día al volver.

Un nodo puede caerse sin avisar, por un corte de luz o por un disco que falla. Aquí lo provocas con el equivalente de un kill -9 en el clúster de Docker Compose y miras qué hace TeselaDB con sus rangos.

Lo que vas a construir

Nada nuevo que dejar en marcha: con el clúster de tres nodos de Docker Compose, matas un nodo, compruebas que sigues escribiendo, miras los líderes nuevos y ves cómo el nodo se pone al día al arrancarlo.

Requisitos

1. Mira dónde están los líderes

Shell
docker compose exec node1 teseladb admin --dbpath /data ranges --collection test.pedidos

Cada rango tiene una réplica en cada nodo. Una de ellas es su líder.

2. Mata un nodo

Shell
docker compose kill node2

docker compose kill manda SIGKILL al contenedor de node2, así que el nodo no tiene tiempo de cerrar nada.

3. Sigue escribiendo

JavaScript
db.pedidos.insertOne({ cliente: "Ana", total: 30 });

Los rangos que lideraba node2 eligen un líder nuevo entre las réplicas de node1 y node3, que tienen la mayoría. Si una escritura pilla ese cambio, el driver la reintenta.

Probarlo

Vuelve a mirar los rangos con la orden del paso 1. Ningún rango tiene ahora a node2 como líder, porque los rangos que lideraba pasaron el liderazgo a node1 o a node3. Arranca el nodo otra vez y míralos de nuevo:

Shell
docker compose start node2
docker compose exec node1 teseladb admin --dbpath /data ranges --collection test.pedidos

node2 recibe lo que se escribió mientras estaba caído y vuelve a tener réplicas al día. Si un nodo no vuelve, el equilibrador crea en los otros nodos las réplicas que faltan.

Limpiar

Si no vas a usar más el clúster, para los contenedores y borra sus volúmenes:

Shell
docker compose --profile join down -v

Siguientes pasos