Operar un bridge
Notas de operador para ejecutar el bridge y el anillo que hay detrás: cargar un plan, sobrevivir a un reinicio, mantener la contribución fluyendo y mantener el motor fuera de internet.
El gateway (punto de entrada público) y el bridge (la cara del motor) son los dos servicios de larga vida que un operador mantiene sanos, con los agentes p4 y sus stage servers detrás. El motor no habla ninguna autenticación — asume que las máquinas que pueden alcanzarse entre sí están destinadas a hacerlo — así que todo lo público converge en el gateway, y al bridge se llega por un túnel en vez de publicarlo.
Cargar
Un plan, y el número bajo el que se carga
- La colocación es un plan que escribes, no una petición que haces: el bridge responde
409a quien le pida servir. Genera el plan, pásalo en seco, y luego carga con--confirm. - La load generation se escribe a disco antes de que salga el primer comando. La elige quien carga, se comprueba por igualdad exacta en cada sesión y al descargar, y no queda registrada en ninguna de las máquinas — piérdela y un modelo cargado ni siquiera se puede bajar.
- La generación del nodo es ese mismo número. Carga un anillo con dos distintas y servirá exactamente una petición antes de que la cabeza se detenga; la siguiente sesión se queda colgada a medio cargar. Usa un valor nuevo en cada carga, o un registro que dejó atrás un intento fallido chocará con él.
- El agente se niega a cargar sin su diario operativo. Ese es el registro de admisión que necesita una carga segura ante repeticiones, no un flag de depuración.
Sobrevivir a un reinicio
Qué vuelve y qué no
- Un reinicio del agente tira sus nodos. Los stage servers son solo de runtime; el modelo hay que volver a cargarlo desde el plan. Eso es el procedimiento de recuperación, no el fallo de uno.
- El gateway no te lo va a recargar. Su watchdog de anillo nota que un modelo dejó de servir, aprende del
409del bridge que la colocación es externa, lo dice una vez y deja de preguntar. - Los contadores de contribución viven en la memoria del bridge. El gateway sondea cada 30 s y acredita por deltas; un reinicio solo pierde lo que no se había sondeado, y el gateway rehace la línea base en vez de pagar dos veces cuando un contador va hacia atrás.
Blindarlo
El motor no mira a internet
- Ata el bridge a loopback y dale un token de servicio. Sin el token no autentica a nadie, y cualquier cosa que lo alcance puede ejecutar el anillo gratis — lo dice al arrancar en vez de dejar que lo descubras después.
- Los agentes anuncian la dirección que marcan los demás agentes. Usa la red más rápida que compartan los hosts, nunca loopback entre hosts, y mantén esa red fuera de la internet pública.
- Si algo tiene que estar en una IP pública, recuerda que los puertos publicados de Docker reciben DNAT antes de la cadena INPUT, así que una regla sobre
dportno coincidirá. Filtra en la cadenaDOCKER-USERusando el puerto de destino original de conntrack (--ctorigdstport), y persiste con un oneshot de systemd ordenadoAfter=docker.service.
Trampas
Dos que cuestan tiempo de verdad
- Una wallet de operador sin configurar se lee como cero ganancias. El gateway omite cualquier fila de contribución sin dueño y no registra nada. Los nodos parecen ociosos mientras están sirviendo.
- `pkill` coincide con su propia línea de comandos.
ssh host 'pkill -f server.js; ...'mata el shell que lo está ejecutando. Pon el patrón en un archivo de script en vez de en el comando remoto, usa una clase de caracteres (server[.]js), y recuerda que un proceso arrancado como un simplenode server.jsno lleva ninguna ruta con la que coincidir — encuéntralo por el puerto en el que escucha.