Protocolo — Servidor ↔ Servidor (clúster)
El protocolo RPC entre pares, usado solo en modo clúster. Los nodos comparten un único estado de bloqueo mediante consenso Raft — cada cambio de estado del bloqueo (adquisición, liberación, expiración) solo se aplica tras la propuesta del líder → replicación de mayoría → commit, así que la exclusión mutua se mantiene incluso durante una partición o un failover. Consulta Cómo funciona para la explicación conceptual.
Flujo — de una adquisición a su confirmación (commit)
El líder convierte el comando de bloqueo en un comando replicado, lo transporta en un RPC AppendEntries, y confirma en cuanto una mayoría que se incluye a sí mismo lo ha registrado (con 3 nodos, el líder más el seguidor 1 bastan — no espera al resto). La respuesta al cliente solo se envía tras el commit, así que en cuanto recibes una respuesta, ese bloqueo ya está escrito en la mayoría.
Reglas de puertos y direcciones
- El RPC entre pares usa un puerto Raft dedicado = puerto del cliente + 1000 (p. ej.
5225→6225). Se deriva automáticamente sin ninguna clave de configuración aparte, y solo escucha en modo clúster. Tu firewall necesita abrir ambos puertos. - La configuración (
cluster_self/cluster_peers) siempre contiene la dirección de cliente. Solo al llamar (dial) a un par se le suma +1000 al puerto — la dirección de redirecciónM(movido) entregada a los clientes es siempre la dirección de cliente tal cual. - Los roles se distinguen únicamente por el puerto — no hay ningún paso en el protocolo para diferenciar cliente de par. Consulta Conexión y autenticación para el orden de conexión y las reglas de auth/TLS.
Índice
- Servidor a servidor
- Parámetros de Raft
- Configuración (variables de entorno)
- Procedimiento de reinicio progresivo
Véase también
- Una explicación sencilla de la elección de líder, los commits de mayoría y los escenarios de fallo — Cómo funciona
- Cómo encuentra un cliente al líder —
M· Movido, Reglas de emparejamiento de respuestas - Configuraciones de despliegue reales (Docker, Kubernetes, etc.) — Despliegue del servidor Ticketing