PowerFlex Adicionar nós a um cluster existente pode causar instabilidade de rede
Summary: Novos nós são adicionados a um cluster existente e desconexões frequentes são observadas.
Symptoms
Cenário
Problemas generalizados de conectividade podem ser observados quando novos nós são adicionados à rede. Problemas de conectividade também podem ser vistos fora do PowerFlex.
Sintomas
Existem vários sintomas, e cada local pode conter um ou mais destes:
O cliente pode não conseguir fazer ping de determinados endereços IP de um host, mas pode ser capaz de fazê-lo a partir de um host diferente.
Talvez o cliente não consiga acessar o SSH em vários dispositivos de rede (como o switch).
Talvez o servidor não consiga acessar serviços externos, como o rsyslog.
Pode haver erros de alocação de soquete e desconexões relatados pelos SDCs:
2022-03-28 15:55:14.310000:4507407:NEW_SDC_CONNECTED WARNING New SDC connected. ID: c39eb4b2000000ca; IP: 192.168.192.239,192.168.176.239,192.168.168.239,192.168.184.239; GUID: 23D8FFD8-E3E3-4A68-9459-D6AFCB1480DF ... 2022-03-28 15:55:17.439000:4507422:OSCILLATION_COUNTER_PASSED_THRESHOLD WARNING SDC (Name: , ID: c39eb4b2000000ca) reports frequently exceeded socket allocation failures. Short window threshold (300 socket allocation failures in 60 seconds). 2022-03-28 15:55:17.439000:4507423:OSCILLATION_COUNTER_PASSED_THRESHOLD WARNING SDC (Name: , ID: c39eb4b2000000ca) reports frequently exceeded socket allocation failures. Medium window threshold (500 socket allocation failures in 3600 seconds). ... 2022-03-28 16:19:29.708000:4507849:SDC_DISCONNECTED WARNING SDC disconnected. ID: c39eb4b2000000ca; GUID: 23D8FFD8-E3E3-4A68-9459-D6AFCB1480DF
Provavelmente, haverá eventos de desacoplamento do SDS juntamente com avisos de integridade de conectividade:
2022-03-28 15:55:28.223000:4507431:SDS_DECOUPLED ERROR SDS: Sds-pdc1lfisnxbsn01.fnfis.com (id: b0abeb1300000000) decoupled. 2022-03-28 15:55:34.488000:4507433:CMATRIX_POLICY_BECAME_WORSE WARNING The inter-SDS connectivity health for Protection Domain ID: 7a1f601000000000 has changed from HEALTHY to REBUILD_ALLOWED
A estabilidade foi restaurada quando os novos sistemas foram desligados.
Impacto
DU pode ocorrer se o comportamento for grave. Desacoplamentos de SDS com reconstruções bem-sucedidas são mais comuns.
Cause
Os nós adicionais excederam o número máximo de entradas ARP configuradas no servidor.
Para determinar as configurações atuais do ARP, execute o seguinte comando:
sysctl -a | grep "net.ipv4.neigh.default.gc_thresh" net.ipv4.neigh.default.gc_thresh1 = 128 net.ipv4.neigh.default.gc_thresh2 = 512 net.ipv4.neigh.default.gc_thresh3 = 1024
Essas informações também estarão em sysctl.txt no pacote de logs:
$ grep "net.ipv4.neigh.default.gc_thresh" /path/to/server_directory/sysctl.txt net.ipv4.neigh.default.gc_thresh1 = 128 net.ipv4.neigh.default.gc_thresh2 = 512 net.ipv4.neigh.default.gc_thresh3 = 1024
Para determinar quantas entradas ARP estão sendo usadas no momento, execute o seguinte comando:
Se o número de entradas ARP estiver próximo (ou acima) do limite gc_thresh2, você provavelmente está enfrentando esse problema.
arp –a | grep ether | wc –l
Essas informações também estarão em arp_av.txt no pacote de logs:
$ grep "ether" /path/to/server_directory/arp_av.txt | wc -l 565
Resolution
Solução temporária
Aumente o limite de ARP.
- PxFM versão 3.7.1 e posterior irá atualizar automaticamente as configurações (esta mudança foi implementada para suportar 2.000 SDCs com V4.0+).
- As configurações abaixo são testadas e compatíveis com o PowerFlex 3.6 e versões posteriores.
- As alterações abaixo devem ser feitas em todos os MDMs, SDSs e SDCs para consistência.
Atualize os limites em sysctl.conf:
file="/etc/sysctl.conf"
cp "$file" "$file".backup
if grep -q "net.ipv4.neigh.default.gc_thresh" "$file"; then
sed -i 's/net.ipv4.neigh.default.gc_thresh1 = [0-9]\+/net.ipv4.neigh.default.gc_thresh1 = 8192/' "$file"
sed -i 's/net.ipv4.neigh.default.gc_thresh2 = [0-9]\+/net.ipv4.neigh.default.gc_thresh2 = 16384/' "$file"
sed -i 's/net.ipv4.neigh.default.gc_thresh3 = [0-9]\+/net.ipv4.neigh.default.gc_thresh3 = 32768/' "$file"
sysctl -p
else
echo -e "net.ipv4.neigh.default.gc_thresh1 = 8192 \nnet.ipv4.neigh.default.gc_thresh2 = 16384 \nnet.ipv4.neigh.default.gc_thresh3 = 32768" >> "$file"
sysctl -p
fi
Aqui está o que o script faz:
Ele define sysctl.conf como o nome do arquivo na variável de arquivo.
Ele faz uma cópia do sysctl.conf antes de fazer qualquer alteração.
Ele usa grep -q para verificar se a linha que contém "net.ipv4.neigh.default.gc_thresh" existe no arquivo. O indicador -q silencia o grep e retorna apenas um status de saída de sucesso ou falha.
Se o grep for bem-sucedido (ou seja, a linha existir), ele usará sed para atualizar os valores de thresh[1|2|3] para 8192, 16384 e 32768, respectivamente, no local dentro do arquivo, e executará sysctl -p para aplicar as alterações em sysctl.conf.
Se o grep não for bem-sucedido (ou seja, a linha não existir), ele acrescentará as linhas "... Thresh1 = 8192", "... Thresh2 = 16384", e "... thresh3 = 32768" ao final do arquivo e executa sysctl -p para aplicar as alterações em sysctl.conf.
Versões
afetadasN/D — O problema não é específico do PowerFlex.
Corrigido na versão
N/A
Para clientes PxFM, consulte o comentário acima na seção Solução temporária.