PowerScale: Knooppunten gesplitst omdat lldpd geen heartbeat meer stuurt naar de back-end Dell switch
Summary: In dit artikel wordt een probleem beschreven waarbij _lldpd proces het maximaal toegestane geheugen verbruikt en niet langer LLDP-pakketten (Link Layer Discovery Protocol) naar back-endswitches verzendt. ...
Symptoms
-
Het wordt afgeraden om een OneFS upgrade uit te voeren naar de betreffende versies (9.5.0.0 t/m 9.5.0.5)
-
RPS of de klant MOET alle lldpd-processen opnieuw starten voordat een OneFS upgrade wordt uitgevoerd bij een versie waarin dit probleem optreedt (bijvoorbeeld een upgrade van 9.5.0.1 naar 9.5.0.7). Volg optie 2 in resolutie.
Er is een geheugenlek in lldpd en een knooppunt kan splitsen als het proces het maximaal toegestane geheugen (1 GB) heeft verbruikt. Zodra het knooppunt het toegestane geheugen verbruikt, verzendt het geen LLDP-pakketten meer naar de back-endswitches. Een PowerScale Dell gekwalificeerde back-endswitch waarop SmartFabric Services (SFS) wordt uitgevoerd, moet LLDP-pakketten (heartbeat) ontvangen van een knooppunt. Als er drie heartbeats worden gemist, wordt de switchpoort verwijderd uit het toegewezen virtuele netwerk. Dan kan een knooppunt niet meer via dat pad met het cluster communiceren.
Als een cluster wordt geüpgraded, worden knooppunten achtereenvolgens opnieuw opgestart en bij elke herstart worden meerdere koppelingen offline en back-up gemaakt. Elk van deze koppelingsgebeurtenissen van het opnieuw opstarten verhoogt langzaam de grootte van het lldpd vmem-gebruik. Het is zeer waarschijnlijk dat knooppunten worden gesplitst tijdens een upgrade als het proces niet onlangs opnieuw is gestart.
Dit probleem kan zich voordoen tijdens de volgende scenario's:
- OneFS Upgrades
- Normale clusterbewerkingen
Het huidige vmem-gebruik is te zien met de volgende opdracht, waarbij een MAXIMALE RSS-waarde (Resident Set Size) 1.048.576 KB is. RSS is de zesde kolom met informatie van PS (links van " - ") uitvoer (exclusief de knooppuntnaam).
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
Voorbeelduitvoer hieronder:
cl950x-1# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep' cl950x-1: _lldpd 1483 0.0 3.2 273804 262168 - S 6Aug23 74:25.14 lldpd: no neighbor. (lldpd) cl950x-1: _lldpd 1492 0.0 3.2 273804 262168 - S 6Aug23 74:31.73 lldpd: no neighbor. (lldpd) cl950x-2: _lldpd 1483 0.0 2.9 251068 238632 - S 14Aug23 66:19.68 lldpd: no neighbor. (lldpd) cl950x-2: _lldpd 1492 0.0 2.9 251068 238632 - S 14Aug23 66:24.72 lldpd: no neighbor. (lldpd) cl950x-3: _lldpd 1483 0.0 2.9 251832 239420 - S 14Aug23 46:25.36 lldpd: no neighbor. (lldpd) cl950x-3: _lldpd 1492 0.0 2.9 251832 239420 - S 14Aug23 46:32.24 lldpd: no neighbor. (lldpd) cl950x-4: _lldpd 1487 0.0 3.1 268052 256212 - S 8Aug23 50:25.15 lldpd: no neighbor. (lldpd) cl950x-4: _lldpd 1496 0.0 3.1 268052 256212 - S 8Aug23 50:36.34 lldpd: no neighbor. (lldpd) cl950x-5: _lldpd 1483 0.0 3.1 273208 261552 - S 6Aug23 75:41.91 lldpd: no neighbor. (lldpd) cl950x-5: _lldpd 1492 0.0 3.1 273208 261552 - S 6Aug23 75:35.00 lldpd: no neighbor. (lldpd) cl950x-6: _lldpd 1482 0.0 3.2 274144 262516 - S 6Aug23 50:49.08 lldpd: no neighbor. (lldpd) cl950x-6: _lldpd 1492 0.0 3.2 274144 262516 - S 6Aug23 51:02.88 lldpd: no neighbor. (lldpd) cl950x-7: _lldpd 1483 0.0 3.2 274004 262380 - S 6Aug23 50:51.55 lldpd: no neighbor. (lldpd) cl950x-7: _lldpd 1492 0.0 3.2 274004 262380 - S 6Aug23 51:03.26 lldpd: no neighbor. (lldpd) cl950x-8: _lldpd 1483 0.0 2.9 251176 238744 - S 14Aug23 46:40.93 lldpd: no neighbor. (lldpd) cl950x-8: _lldpd 1492 0.0 2.9 251176 238744 - S 14Aug23 46:49.57 lldpd: no neighbor. (lldpd) ^^^^^^
De snelheid waarmee het lldpd-proces het geheugen verbruikt, is afhankelijk van verschillende factoren. Dit is ook de reden voor de meer dan normale toename van het geheugengebruik tijdens OneFS upgrades:
- Grootte netwerkconfiguratie op het cluster
- Aantal subnetten dat is gemaakt op basis van de netwerkconfiguratie
- Het aantal netwerkgebeurtenissen, zoals link down or up
- Terugkerende herstartgebeurtenissen
Hoe lang _lldpd proces nodig heeft om een MAXIMUM toegestaan geheugen te bereiken, verschilt van cluster tot cluster. Er werd echter ontdekt dat er een verband bestaat tussen de grootte van de netwerkconfiguratie en de tijd tot falen. Dit betekent dat hoe meer groepnetten, subnetten en groepen er zijn geconfigureerd, hoe eerder dit kan gebeuren.
Cause
Resolution
WARNING
|
Er zijn verschillende opties om het probleem op te lossen of te omzeilen, afhankelijk van uw huidige scenario:
- OneFS upgraden naar 9.5.0.6 en hoger
- Let op de waarschuwingsberichten in het artikel met betrekking tot het opnieuw opstarten van lldpd voorafgaand aan een upgrade van de betreffende versies.
- Er wordt onmiddellijk een tijdelijke oplossing voltooid om lldpd-processen opnieuw op te starten. Dit vereist handmatige interventie door het proces in het hele cluster opnieuw te starten:
-
# killall lldpd
-
- Een tijdelijke oplossing nadat het probleem is opgelost is het onmiddellijk opnieuw starten van lldpd-processen van meer dan 500 MB:
-
# isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''
-
- Nadat het probleem is opgelost (de volgende opdracht is hetzelfde als de vorige opdracht), kan deze tijdelijke oplossing worden uitgevoerd in een schermsessie om de controle elke 1200 s uit te voeren.
-
# while true; do isi_for_array -s 'ps auxww | grep _lldpd | grep -v grep | awk '"'"'{print $2}'"'"' | while read pid; do procstat -r $pid | grep RSS; done | awk '"'"'{ if ($5 > 500000 && $2 == "lldpd") { command=sprintf("kill %d",$1); system(command); close(command) } }'"'"''; sleep 1200; done
-