PowerScale:lldpdがバックエンドDellスイッチにハートビートを送信しなくなったため、ノードが分割される
Summary: この記事では_lldpdプロセスが最大許容メモリーを消費し、バックエンド スイッチにLink Layer Discovery Protocol (LLDP)パケットを送信しなくなる問題について説明します。
Symptoms
-
影響を受けるバージョン(9.5.0.0から9.5.0.5)へのOneFSアップグレードを実行することは推奨されません。
-
RPSまたはお客様は、影響を受けるバージョンでOneFSのアップグレードを実行する前に、すべてのlldpdプロセスを再起動する必要があります(たとえば、9.5.0.1から9.5.0.7へのアップグレード)。解決策のオプション2に従います。
lldpdにメモリー リークがあり、プロセスが最大許容メモリー(1 GB)を消費した場合、ノードが分割される可能性があります。ノードが許可されたメモリーを消費すると、バックエンド スイッチにLLDPパケットが送信されなくなります。SmartFabric Services (SFS)を実行しているPowerScale Dell認定バックエンド スイッチは、ノードからハートビート(LLDP)パケットを受信する必要があります。ハートビートが3回欠落すると、スイッチ ポートは専用の仮想ネットワークから削除されます。その後、ノードはそのパスを介してクラスターと通信できなくなります
クラスターをアップグレードする場合、ノードは連続して再起動され、再起動のたびに複数のリンクの停止とバックアップが行われます。再起動によるこれらのリンク イベントはそれぞれ、lldpd vmemの使用サイズを徐々に増加させます。プロセスが最近再起動されていない場合は、アップグレード中にノードが分割される可能性が高くなります
この問題は、次のシナリオで発生する可能性があります。
- OneFSのアップグレード
- 通常のクラスター操作
現在のvmemの使用状況は、次のコマンドで確認できます。ここで、レジデント セット サイズ(RSS)の最大値は1,048,576 KBです。RSS は、PS からの情報の 6 列目 (「-」の左側) 出力です (ノード名を除く)。
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
出力例を以下に示します。
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) ^^^^^^
lldpd プロセスがメモリを消費する速度は、いくつかの要因によって異なります。これは、OneFSのアップグレード中にメモリー使用率が通常よりも高くなってしまう理由でもあります。
- クラスターのネットワーク構成サイズ
- ネットワーク構成から作成されたサブネットの数
- リンク ダウンやリンク アップなどのネットワーク イベントの数
- 繰り返し発生する再起動イベント
プロセス_lldpd最大許容メモリーに到達するまでにかかる時間は、クラスターによって異なります。しかし、ネットワーク構成のサイズと障害が発生するまでの時間の間には相関関係があることが判明しました。つまり、構成するグループネット、サブネット、プールの数が多いほど、迅速に実行できます。
Cause
Resolution
WARNING
|
現在のシナリオに応じて、問題を解決または回避するためのいくつかのオプションがあります。
- OneFSの9.5.0.6以降へのアップグレード
- 影響を受けるバージョンをアップグレードする前にlldpdを再起動することに関する記事で詳しく説明されている警告メッセージに注意してください。
- 一時的な回避策は、lldpdプロセスをすぐに再起動して完了します。これには、クラスター全体でプロセスを再開することによる手動による介入が必要です。
-
# killall lldpd
-
- 問題が解決した後の一時的な回避策として、500MBを超えるlldpdプロセスをすぐに再起動します。
-
# 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) } }'"'"''
-
- 問題が解決した後の一時的な回避策(次のコマンドは前のコマンドと同じです)は、画面セッションで実行して、1200秒ごとにチェックを実行できます。
-
# 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
-