Perché un blocco del server dovrebbe eliminare altri server dalla rete?


9

Abbiamo un paio di dozzine di server Proxmox (Proxmox gira su Debian) e circa una volta al mese, uno di loro avrà il panico del kernel e si bloccherà. La parte peggiore di questi blocchi è che quando si tratta di un server che si trova su uno switch separato rispetto al master del cluster, tutti gli altri server Proxmox su tale switch smetteranno di rispondere fino a quando non riusciremo a trovare il server che si è effettivamente arrestato in modo anomalo e riavviarlo.

Quando abbiamo segnalato questo problema sul forum Proxmox, ci è stato consigliato di eseguire l'aggiornamento a Proxmox 3.1 e lo stiamo facendo da diversi mesi. Sfortunatamente, uno dei server che abbiamo migrato a Proxmox 3.1 si è bloccato venerdì con un panico del kernel, e di nuovo tutti i server Proxmox che si trovavano su quello stesso switch erano irraggiungibili sulla rete fino a quando non siamo riusciti a individuare il server bloccato e riavviarlo.

Bene, quasi tutti i server Proxmox sullo switch ... Ho trovato interessante che i server Proxmox su quello stesso switch che erano ancora su Proxmox versione 1.9 non fossero interessati.

Ecco una schermata della console del server in crash:

inserisci qui la descrizione dell'immagine

Quando il server si è bloccato, i restanti server sullo stesso switch che eseguivano anche Proxmox 3.1 sono diventati irraggiungibili e hanno emesso quanto segue:

e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
...etc...

uname -a output del server bloccato:

Linux ------ 2.6.32-23-pve #1 SMP Tue Aug 6 07:04:06 CEST 2013 x86_64 GNU/Linux

pveversion -v output (abbreviato):

proxmox-ve-2.6.32: 3.1-109 (running kernel: 2.6.32-23-pve)
pve-manager: 3.1-3 (running version: 3.1-3/dc0e9b0e)
pve-kernel-2.6.32-23-pve: 2.6.32-109

Due domande:

  1. Qualche indizio su cosa causerebbe il panico del kernel (vedi immagine sopra)?

  2. Perché altri server sullo stesso switch e versione di Proxmox dovrebbero essere eliminati dalla rete fino al riavvio del server bloccato? (Nota: c'erano altri server sullo stesso switch che eseguivano la versione 1.9 precedente di Proxmox che non erano interessati. Inoltre, nessun altro server Proxmox nello stesso cluster 3.1 era interessato che non erano sullo stesso switch.)

Grazie in anticipo per qualsiasi consiglio.


Puoi dare l'intero crashdump? L'immagine sopra ha tagliato le parti interessanti. Inoltre, hai pubblicato il crashdump su lkml ? Comunque, ripensandoci, questo è un kernel piuttosto vecchio, ci sono piani per aggiornare Debian a una versione stabile attuale?
ckujau,

Sfortunatamente, non abbiamo una discarica. L'ho aggiunto al mio elenco per configurare una console seriale e / o kdump. Per quanto riguarda il fatto che il kernel sia vecchio, Proxmox usa un kernel OpenVZ che è un ramo del kernel mainstream. Quindi, una volta che riesco a far funzionare i dump di crash, contatterò gli sviluppatori OpenVZ per chiedere aiuto. Grazie per il tuo commento ... mi ha aiutato a orientarmi nella giusta direzione.
Curtis,

Che tipo di interruttore?
ETL

Il problema si è verificato con 3 diversi switch (un dlink e 2 cisco). Non ho i numeri di modello sui due switch precedenti, ma l'ultimo è un Cisco SG102-24. Dal momento che influisce solo sui server dello switch che eseguono lo stesso kernel e poiché sono al mio terzo switch, sembra improbabile che sia responsabile la colpa dello switch (anche se quello era il mio pensiero originale).
Curtis,

Ho ricevuto una notifica via email che qualcuno ha pubblicato il seguente commento qui ... "Ho un problema simile, tranne per il fatto che posso far crashare il mio con un paio di container che fanno hard core ..." Sfortunatamente, è stato tagliato lì e quando sono arrivato qui, l'autore aveva rimosso il suo commento, quindi non so quale fosse il resto. Aggiungerò tuttavia che ho notato che il problema sembra verificarsi il più delle volte in presenza di un intenso traffico di rete (come quando i backup sono in esecuzione). Forse quel commento è stato "trasferimenti di rete hardcore"?
Curtis,

Risposte:


2

Sono quasi certo che il tuo problema non sia causato da un solo fattore, ma piuttosto da una combinazione di fattori. Quali siano questi singoli fattori non è certo, ma molto probabilmente un fattore è l'interfaccia di rete o il driver e un altro fattore si trova sullo switch stesso. Quindi è molto probabile che il problema possa essere riprodotto solo con questa particolare marca di switch combinata con questa particolare marca di interfaccia di rete.

Sembra che il trigger per il problema sia qualcosa che sta accadendo su un singolo server che ha quindi un panico del kernel che ha effetti che in qualche modo riescono a propagarsi attraverso lo switch. Sembra probabile, ma direi che è probabile che il grilletto sia da qualche altra parte.

È possibile che stia succedendo qualcosa sullo switch o sull'interfaccia di rete, il che provoca contemporaneamente il panico del kernel e collega i problemi sullo switch. In altre parole, anche se il kernel non avesse avuto un panico nel kernel, il trigger potrebbe aver abbattuto la connettività sullo switch.

Bisogna chiedersi cosa potrebbe accadere sul singolo server, che potrebbe avere questo effetto sugli altri server. Non dovrebbe essere possibile, quindi la spiegazione deve comportare un difetto da qualche parte nel sistema.

Se fosse solo il collegamento tra il server in crash e lo switch che è andato giù o è diventato instabile, allora ciò non dovrebbe avere alcun effetto sullo stato del collegamento con gli altri server. In tal caso, ciò sarebbe considerato un difetto dell'interruttore. E dal punto di vista del traffico, gli altri server dovrebbero vedere un po 'meno traffico una volta che il server in crash ha perso la connettività, il che non può spiegare perché vedono il problema.

Questo mi porta a credere che sia probabile un difetto di progettazione sull'interruttore.

Tuttavia, un problema di collegamento non è la prima spiegazione che si dovrebbe cercare quando si tenta di spiegare come un problema su un server potrebbe causare problemi ad altri server sullo switch. Una tempesta di trasmissione sarebbe una spiegazione più ovvia. Ma potrebbe esserci un collegamento tra un server con un panico nel kernel e una tempesta di trasmissione?

Multicast e pacchetti destinati a indirizzi MAC sconosciuti sono più o meno trattati allo stesso modo delle trasmissioni, quindi anche una tempesta di tali pacchetti conterebbe. È possibile che il server paniced stia tentando di inviare un crashdump attraverso la rete a un indirizzo MAC non riconosciuto dallo switch?

Se questo è il trigger, allora qualcosa va storto sugli altri server. Perché una tempesta di pacchetti non dovrebbe causare questo tipo di errore sull'interfaccia di rete. Reset adapter unexpectedlynon suona come una tempesta di pacchetti (che dovrebbe causare solo un calo delle prestazioni ma nessun errore in quanto tale) e non suona come un problema di collegamento (che avrebbe dovuto causare la caduta di messaggi sui collegamenti, ma non l'errore che si sta verificando vedendo).

Quindi è probabile che ci sia qualche difetto nell'hardware o nel driver dell'interfaccia di rete, che è attivato dallo switch.

Alcuni suggerimenti che possono fornire ulteriori indizi:

  1. Riesci a collegare qualche altra apparecchiatura allo switch e guardare quale traffico vedi sullo switch quando si presenta il problema (prevedo che si stia zittendo o vedi un'inondazione).
  2. Sarebbe possibile sostituire l'interfaccia di rete su uno dei server con un marchio diverso utilizzando un driver diverso per vedere come il risultato risulta diverso?
  3. È possibile sostituire uno degli interruttori con una marca diversa? Mi aspetto che la sostituzione dello switch assicurerà che il problema non riguardi più server multipli. La cosa più interessante da sapere è se si ferma anche il panico del kernel.

Grazie per la tua premurosa risposta. In termini di 3 suggerimenti: 1) Quale tipo di apparecchiatura / software lo farebbe? 2) Vorrei poterlo fare, ma ci sono molti server coinvolti e non so dove succederà il problema. 3) Ho già provato 3 interruttori diversi (3 modelli diversi, 2 marche diverse). Inoltre è interessante notare che sono interessati solo i server della stessa versione di Proxmox. Proxmox ha un meccanismo di sincronizzazione dei cluster, quindi sospetto che abbia qualcosa a che fare con questo. Fortunatamente, sono passati un paio di mesi da quando il problema si è verificato ora.
Curtis,

Per guardare il traffico sull'interruttore stavo pensando di collegare un normale PC con tcpdump e / o WireShark. Ovviamente vorresti evitare di avere il software interessato installato su quel PC. Ma sembra che ci sia effettivamente un bug nel codice che Proxmox installa nel kernel. Se succede così raramente, che lo vedi solo una volta al mese e solo su un interruttore alla volta, potrebbe essere necessario molto tempo per rintracciarlo. Ci penserò un po 'e commenterò, se nascono altre idee.
Kasperd,

1

Mi sembra un bug nel driver Ethernet o nell'hardware / firmware, essendo una bandiera rossa:

e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly
e1000e 0000:00:19.0: eth0: Reset adapter unexpectedly

Ho già visto questi e può mettere offline il server. Non ricordo esattamente se fosse su schede Ethernet Intel, ma credo di si. Potrebbe anche essere correlato a un bug nelle stesse schede Ethernet. Ricordo di aver letto qualcosa su particolari schede Ethernet che presentano tali problemi. Ma ho perso il link dell'articolo.

Immagino che il trigger per questo dipenda in parte dal driver (versione) in uso, il fatto che una versione precedente del software funzioni bene sembra confermarlo. Dici che il fornitore usa il proprio kernel personalizzato, prova ad aggiornare il modulo del driver ethernet che viene utilizzato per il tuo particolare hardware ethernet. Uno dal tuo fornitore o uno dall'albero dei sorgenti del kernel ufficiale.

Cerca anche di collegare il tuo hardware Ethernet, normalmente un server avrebbe due porte Ethernet, integrate e / o aggiunte su scheda. In questo modo se una scheda Ethernet presenta questo problema, l'altra prenderà. Uso la parola "scheda" ma ovviamente si applica a qualsiasi hardware Ethernet.

Anche la sostituzione dell'hardware Ethernet può risolverlo. Sostituisci o aggiungi una nuova scheda Ethernet (intel) e usala invece. È probabile che se il problema è nell'hardware / firmware, una scheda più recente ha una correzione (o più vecchia?).


Tutte le macchine hanno due porte ethernet, tuttavia, questo errore si verifica su più server contemporaneamente e si trovano sullo stesso switch nel momento stesso in cui una delle macchine si blocca. Nel momento in cui il server bloccato viene spento e riacceso, tutti i server interessati diventano immediatamente accessibili nuovamente. Ciò sembra indicare che il server bloccato non è completamente bloccato ma in qualche modo sta inondando il ripristino delle macchine sullo stesso switch. Sarebbe interessante vedere se un aggiornamento del driver potrebbe aiutare, ma non penso che l'attivazione dell'altra scheda Ethernet possa aiutare in base alle prove.
Curtis,

Vecchio thread, ma anche con Intel e1000e NIC Modello 82574L e una delle versioni ProxMox più recenti di 5.0-23 / af4267bf i problemi di rete rimangono ancora. Posso visualizzare il mio laptop Windows (riattivare dalla modalità di sospensione o semplicemente accedere) collegato allo stesso switch e il server ProxMox si riavvia praticamente ogni volta. L'ho visto anche solo riavviare sporadicamente quando non è collegato allo switch. E si riavvierà quando lo collego per la prima volta allo switch. Il driver attuale è 3.3.5.3 e ci sono 3.3.5.10, 3.3.6 e 3.4.0.2, quindi probabilmente proverò a costruirli e usarli. Il mio .02c.
JGlass
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.