PowerScale: Węzły podzielone, ponieważ lldpd nie wysyła już pulsu do przełącznika Dell backend
Summary: W tym artykule opisano problem z procesem_lldpd który zużywa maksymalną dozwoloną pamięć i nie wysyła już pakietów protokołu LLDP (Link Layer Discovery Protocol) do przełączników zaplecza. ...
Symptoms
-
Nie zaleca się wykonywania aktualizacji OneFS do wersji, których dotyczy problem (od 9.5.0.0 do 9.5.0.5)
-
RPS lub Klient MUSI ponownie uruchomić wszystkie procesy lldpd przed wykonaniem aktualizacji OneFS w wersji, której dotyczy problem (na przykład aktualizacja z wersji 9.5.0.1 do 9.5.0.7). Postępuj zgodnie z opcją 2 w rozdzielczości.
W lldpd występuje wyciek pamięci, a węzeł może zostać podzielony, jeśli proces zużył maksymalną dozwoloną pamięć (1 GB). Gdy węzeł zużywa dozwoloną pamięć, nie wysyła już pakietów LLDP do przełączników zaplecza. Zakwalifikowany przełącznik zaplecza PowerScale Dell z usługami SmartFabric Services (SFS) musi otrzymywać pakiety pulsu (LLDP) z węzła. W przypadku pominięcia trzech impulsów port przełącznika jest usuwany z dedykowanej sieci wirtualnej. Wtedy węzeł nie może już komunikować się z klastrem za pośrednictwem tej ścieżki.
Jeśli klaster ma zostać uaktualniony, węzły są kolejno uruchamiane ponownie, a każdy ponowny rozruch powoduje wyłączenie i utworzenie kopii zapasowej kilku łączy. Każde z tych zdarzeń łącza z ponownych uruchomień powoli zwiększa rozmiar użycia maszyny wirtualnej lldpd. Jest wysoce prawdopodobne, że węzły zostaną podzielone podczas aktualizacji, jeśli proces nie został ostatnio ponownie uruchomiony.
Ten problem może wystąpić w następujących scenariuszach:
- Uaktualnienia OneFS
- Normalne działanie klastra
Bieżące użycie pamięci wirtualnej można zobaczyć za pomocą następującego polecenia, w którym MAKSYMALNA wartość RSS (Resident Set Size) wynosi 1 048 576 KB. RSS to szósta kolumna informacji z wyjścia PS (na lewo od " - ") (z wyłączeniem nazwy węzła).
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
Przykładowe dane wyjściowe poniżej:
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) ^^^^^^
Szybkość, z jaką proces lldpd zużywa pamięć, zależy od kilku czynników. Jest to również powód większego niż zwykle wzrostu użycia pamięci podczas uaktualnień OneFS:
- Rozmiar konfiguracji sieci w klastrze
- Liczba podsieci utworzonych na podstawie konfiguracji sieci
- Liczba zdarzeń sieciowych, takich jak zerwanie lub zwiększenie łącza
- Powtarzające się zdarzenia ponownego uruchamiania
Czas potrzebny _lldpd osiągnięcie przez proces MAKSYMALNEJ dozwolonej pamięci różni się w zależności od klastra. Odkryto jednak, że istnieje korelacja między rozmiarem konfiguracji sieci a czasem do awarii. Oznacza to, że im więcej groupnetów, podsieci i pul jest skonfigurowanych, tym szybciej może to nastąpić.
Cause
Resolution
OSTRZEŻENIE
|
Istnieje kilka opcji rozwiązania lub obejścia problemu w zależności od bieżącego scenariusza:
- Uaktualnij OneFS do wersji 9.5.0.6 lub nowszej
- Zwróć uwagę na komunikaty ostrzegawcze opisane w tym artykule dotyczące ponownego uruchamiania lldpd przed aktualizacją wersji, których dotyczy problem.
- Tymczasowe obejście problemu jest wykonywane natychmiast, ponownie uruchamiając procesy lldpd. Wymaga to ręcznej interwencji poprzez ponowne uruchomienie procesu w klastrze:
-
# killall lldpd
-
- Tymczasowe obejście problemu po rozwiązaniu problemu polega na natychmiastowym ponownym uruchomieniu procesów lldpd o rozmiarze przekraczającym 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) } }'"'"''
-
- Tymczasowe obejście problemu po rozwiązaniu problemu (poniższe polecenie jest takie samo jak poprzednie), można je uruchomić w sesji screen, aby sprawdzać co 1200 s.
-
# 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
-