NetWorker : Pratiques d’excellence pour la configuration de la mise en réseau
Summary: Cet article a pour but de fournir une base de référence simple pour les paramètres de mise en réseau standard et souhaitables pour les hôtes NetWorker.
Symptoms
- Erreurs liées au réseau ou à la connectivité de l’hôte, y compris, mais sans s’y limiter :
- Échecs des sauvegardes qui semblent avoir terminé le transfert de données réel
- L’épuisement généralisé des ressources ou l’effondrement des communications
GSS warning Session information (number hex:hex) registered by user for nsrexecd has expired because a NetWorker daemon had not requested it after 120 minutesGSS error Session information (number hex:hex) was requested by nsrmmd but the session has expiredRPC severe Unable to query NSR database for list of configured devices: RPC receive operation failed; peer = ip_addr:port, errno = Connection timed outRPC severe Unable to query NSR database for list of configured devices: RPC send operation failed; peer = ip_addr:port, errno = Broken pipeNSR notice Chunking ssid ssid failed, because saveset was abortedddp_open_file_ext() failed for File: //mtree/vol_dir/nn/nn/long_ssid, Err: 5004-nfs lookup failed (nfs: No such file or directory) ).NSR critical Connectivity check request is failed for: SN_CONN_REPORT_DD type data_domain deviceRPC error RPC client handle: No route to host.RPC error RPC client handle: Connection refused.RPC error Unable to create the connection with 'portmapper' to host 'hostname' with address 'ip_addr' at port number 7938.RPC critical Aborting client connection from ip_addr: Connection timed out.RPC critical Check whether the firewall is blocking the client ports on the host 'hostname'.RPC critical Check whether the client services are running on the host 'hostname'.
Cause
Keepalives : Chaque socket créé par un processus d’appel NetWorker pour se connecter à un processus d’écoute, et ceux-ci peuvent être interrompus s’ils sont laissés inactifs trop longtemps par des périphériques réseau qui tentent de récupérer des ressources. En règle générale, cela nécessite que les connexions persistantes soient activées par défaut pour le NetWorker Server et les nœuds, ainsi que pour les clients qui rencontrent des problèmes. NetWorker dispose de sa propre gestion keepalive interne pour certains fichiers binaires (mais pas tous). Le système d’exploitation dispose également de connexions persistantes qui doivent être activées par défaut.
Disponibilité des ports : Chaque socket que NetWorker tente d’établir nécessite un port dans la plage éphémère pour communiquer, mais cette plage est limitée par défaut sur tous les systèmes d’exploitation et doit être ouverte autant que possible afin de ne pas limiter artificiellement les communications. Lorsque nsrauth est activé par défaut, le nombre de ports requis pour un seul socket souhaité est d’au moins 3, chaque échec pouvant réessayer rapidement, laissant les ports en TIME_WAIT jusqu’à ce que la connexion réussisse. C’est pourquoi il convient d’augmenter le nombre maximal de ports disponibles, en réduisant idéalement TIME_WAIT état.
D’autres sockets à longue durée de vie peuvent également être renforcés avec des variables logicielles internes spécifiques qui permettent une résilience supérieure ou améliorent la mise en mémoire tampon.
Resolution
Vous trouverez ci-dessous les paramètres habituels recommandés par système d’exploitation et classe d’hôte, ainsi que leurs commandes d’implémentation. Toujours, l’applicabilité varie ; Celles qui sont considérées comme universellement souhaitables ne font pas l’objet de commentaires, tandis que celles qui sont plus variables sont commentées, mais peuvent être utilisées en cas de besoin. Ces paramètres sont fournis de bonne foi en tant que recommandations générales, mais doivent être examinés par les administrateurs du système d’exploitation avant la mise en œuvre. Ces cas de figure sont considérés comme les meilleures pratiques par défaut pour les serveurs et les nœuds de stockage. L’adéquation du client peut varier en fonction de la configuration et du rôle dans un environnement donné. Dans ce cas, elle doit être soigneusement examinée avant utilisation, car différents rôles de serveur d’applications peuvent entrer en conflit avec les paramètres recommandés. Dans ce cas, les paramètres requis par le rôle doivent être prioritaires.
Linux : Tous les paramètres appropriés doivent être saisis dans le /nsr/nsrrc , qui doit disposer d’autorisations globales de lecture/exécution (755) afin d’être exécuté au démarrage du service. Les entrées standard par défaut sont non commentées, avec des commentaires d’options non standard ou circonstancielles. Modifiez la disponibilité des paramètres à l’aide du préfixe # sur les lignes concernées. Découpez le fichier selon les besoins des clients, nœuds ou serveurs NetWorker, en fonction de l’endroit où vous allez déployer le fichier. Le redémarrage du service sera nécessaire après que des modifications auront été apportées.
### LINUX - For all NetWorker hosts - Clients, Nodes and Server
NSR_KEEPALIVE_WAIT=10
export NSR_KEEPALIVE_WAIT
NSR_EXEC_MAX_AUTH_THREADS=50
export NSR_EXEC_MAX_AUTH_THREADS
# NSR_SOCK_BUF_SIZE=65536 # (262144 for 10 Gb ETH NICs)
# export NSR_SOCK_BUF_SIZE
# NetWorker internal keepalive settings for some, but not all binaries - 4.5 minutes to ensure keepalives are passed before the increasingly common 5 minute router idle socket kill timer
NW_TCP_KEEPIDLE_SECS=270
export NW_TCP_KEEPIDLE_SECS
NW_TCP_KEEPINTVL_SECS=30
export NW_TCP_KEEPINTVL_SECS
NW_TCP_KEEPCNT=10
export NW_TCP_KEEPCNT
# OS-level keepalive values - also set to 4.5 minutes for the same reason
sysctl -w "net.ipv4.tcp_keepalive_intvl=30"
sysctl -w "net.ipv4.tcp_keepalive_probes=10"
sysctl -w "net.ipv4.tcp_keepalive_time=270"
# Set kernel limits to ensure core dump generation
ulimit -Sn 262144
ulimit -Sc unlimited
### For NetWorker Storage Nodes and Server
# Set kernel limits to provide maximum file descriptor availability
ulimit -Hn 262144
ulimit -Hc unlimited
# Globally disable IPv6, if it is not necessary for operation:
# sysctl -w "net.ipv6.conf.all.disable_ipv6=1"
# Disable dynamic TCP window scaling - requires compatible equipment in the data path, as well as ECN
sysctl -w "net.ipv4.tcp_window_scaling=0"
sysctl -w "net.ipv4.tcp_ecn=0"
# Raise connection backlog (hash tables) to the maximum value allowed if desired
# sysctl -w "net.ipv4.tcp_max_syn_backlog=8192"
# sysctl -w "net.core.netdev_max_backlog=8192" # (For 10 Gb Eth use the value = 30000)
# Raise memory size available for TCP buffers as needed
# sysctl -w "net.core.rmem_default=262144"
# sysctl -w "net.core.wmem_default=262144"
# sysctl -w "net.core.rmem_max=16777216"
# sysctl -w "net.core.wmem_max=16777216"
# sysctl -w "net.ipv4.tcp_rmem=8192 524288 16777216"
# sysctl -w "net.ipv4.tcp_wmem=8192 524288 16777216"
# Increase shared memory pool if required - particularly for immediate mode on Storage Nodes
# sysctl -w kernel.shmmax = 2147483648 # - e.g. 2 GB
# sysctl -w kernel.shmall = 2147483648 # - e.g. 2 GB
# Available TCP client ephemeral port range increase from default:
sysctl -w "net.ipv4.ip_local_port_range=10000 64000"
# Enable TCP Time Wait Reuse for very high load servers and nodes to increase socket reuse availability
sysctl -w "net.ipv4.tcp_tw_recycle=0"
sysctl -w "net.ipv4.tcp_tw_reuse=2"
# Lower TIME_WAIT delay to close connections more quickly. This may not be necessary in concert with tw_reuse.
# sysctl -w "net.ipv4.tcp_fin_timeout=30"
# NFS I/O concurrency:
sysctl -w "sunrpc.tcp_slot_table_entries=128"
sysctl -w "sunrpc.udp_slot_table_entries=128"
### For NetWorker Server only
# Settings to increase device resilience for cloud operations or other potentially high-latency devices
# NSR_DEVOP_TIMEOUT=3600
# export NSR_DEVOP_TIMEOUT
# NSR_DEVOP_POLLING_INTERVAL=600
# export NSR_DEVOP_POLLING_INTERVAL
# NSR_DEVOP_INQUIRY_TIMEOUT=900
# export NSR_DEVOP_INQUIRY_TIMEOUT
### Media database tunables
# NSR_TCP_READ_LONG_WAIT=Y
# export NSR_TCP_READ_LONG_WAIT
# NSR_MAX_MEDIADB_RETRY=10
# export NSR_MAX_MEDIADB_RETRY
# MMDB_SQLITE_CONFIGURE_MEMORY=1
# export MMDB_SQLITE_CONFIGURE_MEMORY
# MMDB_SQLITE_PAGECACHE_SIZE=65536
# export MMDB_SQLITE_PAGECACHE_SIZE
# MMDB_SQLITE_PAGE_COUNT=65536
# export MMDB_SQLITE_PAGE_COUNT
# MMDB_SQLITE_HEAP_SIZE=1073741824
# export MMDB_SQLITE_HEAP_SIZE
# MDB_SQLITE_HEAP_MIN_ALLOC_SIZE=128
# export MDB_SQLITE_HEAP_MIN_ALLOC_SIZE
Windows. : Étant donné que l' /nsr/nsrrc Le fichier n’existe pas actuellement pour Windows, les modifications doivent être exécutées à l’aide d’un fichier de commandes, par ex. nsrrc.bat ou toute autre méthode de déploiement. Les commandes sont fournies ici lorsqu’il existe une option pilotée par commande. Ces modifications sont globales et n’ont pas besoin d’être exécutées à plusieurs reprises. Comme celui de Linux nsrrc , les entrées standard par défaut sont non commentées, avec des options non standard ou circonstancielles commentées. Modifiez la disponibilité des paramètres à l’aide de REM sur les lignes concernées. Découpez le fichier selon les besoins des clients, nœuds ou serveurs NetWorker, en fonction de l’endroit où vous allez déployer le fichier. Le redémarrage du service sera nécessaire après que des modifications auront été apportées.
REM ### WINDOWS - For all NetWorker hosts - Clients, Nodes and Server REM # TCP window size tuning - greater throughput / Data Domain REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters /v DefaultSendWindow /t REG_DWORD /d 262144 /f REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\AFD\Parameters /v DefaultReceiveWindow /t REG_DWORD /d 262144 /f REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v GlobalMaxTcpWindowSize /t REG_DWORD /d 262144 /f REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpWindowSize /t REG_DWORD /d 262144 /f REM # Global keepalive registry settings - 270s to fall below common idle socket timer kills of 300s reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveTime /t REG_DWORD /d 270000 /f reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v KeepAliveInterval /t REG_DWORD /d 10000 /f reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpMaxDataRetransmissions /t REG_DWORD /d 10 /f REM # Global NetWorker keepalive and connectivity variables setx /m NW_TCP_KEEPIDLE_SECS 270 setx /m NW_TCP_KEEPINTVL_SECS 30 setx /m NW_TCP_KEEPCNT 10 setx /m NSR_KEEPALIVE_WAIT 10 setx /m NSR_EXEC_MAX_AUTH_THREADS 50 REM setx /m NSR_SOCK_BUF_SIZE=65536 # (262144 for 10 Gb Eth NICs) REM ### For NetWorker Storage Nodes and Server REM # Standard TCP features - disable in case of disconnections REM netsh interface tcp set global rss=disabled REM netsh interface tcp set global autotuning=disabled REM netsh interface tcp set global ecncapability=disabled REM netsh interface tcp set global timestamps=default REM # Port range availability for TCP client callers netsh int ipv4 set dynamicport tcp start=10000 num=54000 netsh int ipv4 set dynamicport udp start=10000 num=54000 netsh int ipv6 set dynamicport tcp start=10000 num=54000 netsh int ipv6 set dynamicport udp start=10000 num=54000
REM # Global port maximum (deprecated) and TIME_WAIT window REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v MaxUserPort /t REG_DWORD /d 65535 /f reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters /v TcpTimedWaitDelay /t REG_DWORD /d 30 /f
REM # Disable IPv6 if not required
REM reg add HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip6\Parameters /v DisabledComponents /t REG_DWORD /d 0x000000ff /f REM ### For NetWorker Server only REM # Settings to increase device resilience for cloud operations or other potentially high-latency devices REM setx /m NSR_DEVOP_TIMEOUT 3600 REM setx /m NSR_DEVOP_POLLING_INTERVAL 600 REM setx /m NSR_DEVOP_INQUIRY_TIMEOUT 900
REM ### Settings for media database tuning
REM setx /m NSR_TCP_READ_LONG_WAIT Y REM setx /m NSR_MAX_MEDIADB_RETRY 10
REM setx /m MDB_SQLITE_HEAP_MIN_ALLOC_SIZE 128
REM setx /m MMDB_SQLITE_CONFIGURE_MEMORY 1
REM setx /m MMDB_SQLITE_HEAP_SIZE 1073741824
REM setx /m MMDB_SQLITE_PAGE_COUNT 65536
REM setx /m MMDB_SQLITE_PAGECACHE_COUNT 65536
REM setx /m MMDB_SQLITE_TMP path_to_temp_dir