Matar un nodo y verlo volver
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
- El clúster de Un clúster de tres nodos con Docker Compose en marcha.
mongoshcon una conexión a ese clúster.
1. Mira dónde están los líderes
docker compose exec node1 teseladb admin --dbpath /data ranges --collection test.pedidosCada rango tiene una réplica en cada nodo. Una de ellas es su líder.
2. Mata un nodo
docker compose kill node2docker compose kill manda SIGKILL al contenedor de node2, así que el nodo no tiene tiempo de cerrar nada.
3. Sigue escribiendo
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:
docker compose start node2
docker compose exec node1 teseladb admin --dbpath /data ranges --collection test.pedidosnode2 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:
docker compose --profile join down -vSiguientes pasos
- Tolerancia a fallos, con lo que pasa en cada tipo de caída.
- Consenso con Raft en cada rango, con cómo se elige un líder.