Parámetros de Raft
| Elemento | Valor |
|---|---|
| Intervalo de heartbeat | 250 ms |
| Timeout de elección | 500-1000 ms — se inicia una nueva elección de líder dentro de esta ventana tras un fallo del líder |
| Número de nodos | 3 o 5 (impuesto al cargar la configuración — cualquier otro valor rechaza el arranque) |
| ID de nodo | su posición (cluster_self) en la lista cluster_peers — por eso el orden de la lista debe ser idéntico en todos los nodos |
| Bootstrap | 500 ms tras el arranque, todos los nodos se inicializan con la misma membresía — se ignora si se une a un clúster ya inicializado |
| Almacenamiento del log | en memoria (volátil) — un nodo reiniciado se recupera vía replicación/snapshot |
| Detección de expiración de lease | el líder comprueba cada 100 ms y confirma Expire mediante consenso |
Granularidad del timeout de wait | el timeout de espera (T) también se decide en el mismo tick de 100 ms — puede llegar hasta 100 ms tarde |
Por qué 3 o 5 nodos
Un commit necesita una mayoría. Una configuración con un número par de nodos solo añade coste sin añadir tolerancia a fallos, así que el servidor la rechaza.
| Número de nodos | Mayoría | Fallos simultáneos tolerados |
|---|---|---|
| 2 | 2 | 0 — un solo fallo detiene el clúster. No mejor que el modo único |
| 3 | 2 | 1 |
| 4 | 3 | 1 — igual que con 3 nodos, solo que cuesta más |
| 5 | 3 | 2 |
Resumen del comportamiento ante fallos
| Situación | Comportamiento |
|---|---|
| Solicitud de cliente a un nodo que no es el líder | M (dirección del líder), o E no_leader si el líder se desconoce |
| Fallo del líder | nuevo líder elegido en 500-1000 ms. Las solicitudes durante esa ventana reciben E no_leader → el cliente reintenta |
| Durante el cambio de líder | las solicitudes de adquisición pendientes se resuelven con M/E no_leader, y el cliente reintenta contra el nuevo líder |
| Reinicio de nodo | arranca con estado vacío → se pone al día vía la replicación del log/snapshot de un par |
| Pérdida de la mayoría | los commits se vuelven imposibles → las escrituras se detienen (seguridad ante todo), y se reanudan automáticamente en cuanto se restaura la mayoría |
Terminología
- Quorum — más de la mitad de todos los nodos (2 de 3, o 3 de 5). Como cualquier decisión requiere el acuerdo del quorum, dos grupos separados por una partición nunca pueden confirmar decisiones contradictorias a la vez.
- Timeout de elección — cuánto espera un seguidor sin heartbeat antes de concluir que el líder ha muerto e iniciar una elección. Se aleatoriza por nodo para reducir candidaturas simultáneas.