Sistemes

Servidor mort o fora de xarxa?

Com distingir una màquina caiguda d'una que només ha perdut la xarxa, i per

2 min de lectura

Quan un servidor deixa de respondre, la primera pregunta és sempre la mateixa: és mort o només està fora de xarxa? La distinció ho canvia tot: una màquina morta necessita que algú hi vagi físicament; una que ha perdut la xarxa es pot arreglar a distància. Aquesta setmana em va tornar a tocar viure-ho, i explico com ho vaig diagnosticar.

Els dos ping

Hi ha dues maneres de preguntar a una màquina si hi és, i no diuen el mateix:

  • Ping normal (ICMP): el ping de tota la vida (un senyal breu que pregunta «hi ets?» i espera resposta). Preguntes a la xarxa. Si no respon, pot ser que la màquina estigui apagada, sense corrent, sense cable o amb la xarxa caiguda.
  • Ping de Tailscale (la VPN que fa servir: una xarxa privada que connecta els meus equips a distància): preguntes dins la xarxa privada. Si la màquina apareix com a connectada però no res, és que està encesa però penjada o sense xarxa física.

En el meu cas: la màquina apareixia a la llista de Tailscale però ni el ping d'ICMP ni el de Tailscale tornaven res. Centenars de paquets (missatges per la xarxa), zero de tornada. Conclusió: la màquina estava morta del tot. No era un problema de VPN ni de DNS (el traductor de noms a adreces).

Els efectes col·laterals: els muntatges

Aquesta és la part que ningú t'explica: quan un servidor mor, mor amb les seves coses, però també penja les coses dels altres.

Tenia un sistema de fitxers remot muntat per SSHFS (que una carpeta d'un altre servidor es vegi com a local, via SSH) des d'un altre servidor cap a la màquina caiguda. En morir ella, el muntatge es va quedar penjat, i qualsevol procés que tocava aquella ruta es congelava sense error ni avís: ni ls, ni du, ni scripts d'automatització (com el Un vigilant de disc amb cron). Processos zombies (que ja no fan res però no es tanquen) fent la vista gorda.

Com es neteja

Es neteja en calent, sense apagar res:

# desmuntar en calent un muntatge penjat
fusermount -uz /ruta/del/muntatge

# matar els processos sshfs penjats
pkill -f "ruta/del/muntatge"

La lliçó: quan un servidor cau, el primer que has de fer no és intentar reparar-lo, sinó revisar quins altres equips tenien muntatges o connexions cap a ell. Els danys col·laterals sovint molèsten més que la caiguda original. I el disc d'aquella màquina ja m'havia donat guerra abans: El disc que s'omplia sol.

El resultat

La màquina es va recuperar reiniciant-la físicament (l'única manera quan està penjada de debò), i els muntatges van tornar a funcionar en remuntar-los. Però aquella tarda vaig aprendre una lliçó que ja havia llegit mil vegades i no havia viscut mai amb tanta claredat: la xarxa és un sistema, i quan una peça cau, les altres també se n'adonen.