PowerScale : Nœuds séparés, car lldpd n’envoie plus de pulsation au commutateur Dell back-end
Summary: Cet article décrit un problème lié au processus _lldpd qui consomme sa mémoire maximale autorisée et n’envoie plus de paquets LLDP (Link Layer Discovery Protocol) aux commutateurs back-end. ...
Symptoms
-
Il n’est pas recommandé d’effectuer une mise à niveau de OneFS vers les versions concernées (9.5.0.0 à 9.5.0.5)
-
RPS ou le client DOIT redémarrer tous les processus lldpd avant d’effectuer une mise à niveau de OneFS sur une version concernée (par exemple, la mise à niveau de 9.5.0.1 vers 9.5.0.7). Suivez l’option 2 dans la résolution.
Il y a une fuite de mémoire dans lldpd et un nœud peut se diviser si le processus a consommé sa mémoire maximale autorisée (1 Go). Une fois que le nœud consomme sa mémoire autorisée, il n’envoie plus de paquets LLDP aux commutateurs back-end. Un commutateur back-end PowerScale Dell qualifié exécutant SmartFabric Services (SFS) doit recevoir des paquets de pulsations (LLDP) à partir d’un nœud. Si trois pulsations sont manquées, le port du commutateur est alors supprimé de son réseau virtuel dédié. Ensuite, un nœud ne peut plus communiquer avec le cluster via ce chemin.
Si un cluster doit être mis à niveau, les nœuds sont redémarrés successivement, et chaque redémarrage nécessite plusieurs liaisons d’arrêt et de sauvegarde. Chacun de ces événements de lien des redémarrages augmente lentement la taille de lldpd vmem usage. Il est fort probable que les nœuds se séparent lors d’une mise à niveau si le processus n’a pas été redémarré récemment.
Ce problème peut se produire dans les cas suivants :
- Mises à niveau OneFS
- Opérations normales du cluster
L’utilisation actuelle de vmem peut être consultée avec la commande suivante, où une valeur RSS (Resident Set Size) MAXIMALE est de 1 048 576 Ko. RSS est la sixième colonne d’informations de la sortie PS (à gauche du « - ») (à l’exclusion du nom du nœud).
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
Exemple de sortie ci-dessous :
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) ^^^^^^
La vitesse à laquelle le processus lldpd consomme la mémoire varie en fonction de plusieurs facteurs. C’est également la raison de l’augmentation plus importante que la normale de l’utilisation de la mémoire lors des mises à niveau de OneFS :
- Taille de la configuration réseau sur le cluster
- Nombre de sous-réseaux créés à partir de la configuration réseau
- Nombre d’événements réseau, tels que l’interruption ou l’activation de la liaison
- Événements de redémarrage récurrents
Le temps nécessaire pour qu'_lldpd processus atteigne la quantité MAXIMALE de mémoire autorisée varie d’un cluster à l’autre. Toutefois, il a été découvert qu’il existe une corrélation entre la taille de la configuration réseau et le délai avant défaillance. Cela signifie que plus il y a de réseaux de groupe, de sous-réseaux et de pools configurés, plus tôt cela peut se produire.
Cause
Resolution
AVERTISSEMENT
|
Il existe plusieurs options pour résoudre le problème ou contourner le problème en fonction de votre scénario actuel :
- Mise à niveau de OneFS vers la version 9.5.0.6 et versions ultérieures
- Notez les messages d’avertissement détaillés dans l’article concernant le redémarrage de lldpd avant toute mise à niveau des versions concernées.
- Une solution de contournement temporaire est exécutée immédiatement en redémarrant les processus lldpd. Cela nécessite une intervention manuelle en redémarrant le processus sur l’ensemble du cluster :
-
# killall lldpd
-
- Une fois le problème résolu, redémarrez immédiatement les processus lldpd de plus de 500 Mo pour une solution de contournement temporaire :
-
# 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) } }'"'"''
-
- Une fois le problème résolu (la commande suivante est identique à la commande précédente), il est possible d’effectuer une contournement temporaire dans une session d’écran pour effectuer la vérification toutes les 1 200 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
-