PowerScale: Nós divididos, pois o lldpd não está mais enviando heartbeat para o switch Dell de back-end
Summary: Este artigo descreve um problema em que _lldpd processo consome sua memória máxima permitida e não envia mais pacotes do protocolo LLDP (Link Layer Discovery Protocol) para switches de back-end. ...
Symptoms
-
Não é recomendável realizar um upgrade do OneFS para as versões afetadas (9.5.0.0 a 9.5.0.5)
-
O RPS ou o cliente DEVE reiniciar todos os processos lldpd antes de realizar um upgrade do OneFS enquanto estiver em uma versão afetada (por exemplo, fazer upgrade da versão 9.5.0.1 para a 9.5.0.7). Siga a Opção 2 em resolução.
Há uma perda de memória no lldpd e um nó pode ser dividido se o processo tiver consumido sua memória máxima permitida (1 GB). Depois que o nó consome a memória permitida, ele não envia mais pacotes LLDP para os switches de back-end. Um switch de back-end qualificado pela Dell do PowerScale que executa o SmartFabric Services (SFS) deve receber pacotes de heartbeat (LLDP) de um nó. Se três heartbeats forem perdidos, a porta do switch será removida de sua rede virtual dedicada. Em seguida, um nó não pode mais se comunicar com o cluster por esse caminho.
Se um cluster for submetido a upgrade, os nós serão reinicializados sucessivamente e cada reinicialização leva vários links para baixo e para backup. Cada um desses eventos de link a partir das reinicializações aumenta lentamente o tamanho do uso do vmem lldpd. É altamente provável que os nós sejam divididos durante um upgrade se o processo não tiver sido reiniciado recentemente.
Esse problema pode ocorrer durante os seguintes cenários:
- OneFS Upgrades
- Operações normais de cluster
O uso atual do vmem pode ser visto com o seguinte comando, em que um valor MAXIMUM Resident Set Size (RSS) é 1.048.576 KB. RSS é a sexta coluna de informações da saída PS (à esquerda de " - ") (excluindo o nome do nó).
# isi_for_array -s 'ps aux | grep _lldpd | grep -v grep'
Exemplo de resultado abaixo:
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) ^^^^^^
A velocidade com que o processo lldpd consome a memória varia em vários fatores. Esse também é o motivo para o aumento maior do que o normal no uso de memória durante os upgrades do OneFS:
- Tamanho da configuração de rede no cluster
- Número de sub-redes criadas a partir da configuração de rede
- O número de eventos de rede, como link inativo ou ativo
- Eventos recorrentes de reinicialização
O tempo necessário para que _lldpd processo atinja a memória MÁXIMA permitida varia de um cluster para outro. No entanto, foi descoberto que há uma correlação entre o tamanho da configuração de rede e o tempo até falhas. Isso significa que quanto mais groupnets, sub-redes e pools forem configurados, mais cedo isso poderá ocorrer.
Cause
Resolution
AVISO
|
Há várias opções para resolver ou contornar o problema, dependendo do seu cenário atual:
- Upgrade do OneFS para a versão 9.5.0.6 e posteriores
- Observe as mensagens de advertência detalhadas no artigo sobre reiniciar o lldpd antes de qualquer upgrade das versões afetadas.
- Uma solução temporária é concluída imediatamente, reiniciando os processos lldpd. Isso requer intervenção manual, reiniciando o processo em todo o cluster:
-
# killall lldpd
-
- Uma solução temporária depois que o problema é resolvido na reinicialização imediata de processos lldpd com mais de 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) } }'"'"''
-
- Uma solução temporária depois que o problema for resolvido (o comando a seguir é o mesmo que o comando anterior) poderá ser executada em uma sessão de tela para realizar a verificação a cada 1.200 segundos.
-
# 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
-