Gli script Avamar - FLR - Linux FLR wget hanno esito negativo quando il proxy HTTP è configurato sulla macchina virtuale.
Summary: Avamar - FLR - Impossibile ripristinare i file via rete a causa della macchina virtuale Linux di destinazione che utilizza un proxy Internet interno per il traffico "wget"
Symptoms
avvmwfile Error <0000>: Failed to restore files via network, check proxy log for details avvmwfile Error <0000>: assist_restore error. ret: 157Nei registri flr del proxy Avamar: /usr/local/avamaravamarclient/logs/VmwareFlr.log viene visualizzato lo script FLR generato automaticamente "flrTBow8V" all'interno del sistema operativo guest delle macchine virtuali. Tuttavia, lo script non ha avuto esito positivo (Nota: solo il codice di uscita 0 indicherebbe un'operazione riuscita, qualsiasi altro numero è un codice di errore) Il codice di uscita dell'errore in questo registro era 8.
ExecuteProgram failed. script text:/bin/bash /root/flrTBow8V, Return: 0, script return code: 8 FLRBase:: ScriptUploadAndExecute failed
Nel registro degli script FLR di Avamar viene visualizzato quanto segue: /usr/local/avamaravamarclient/logs/flrTBow8V.err:
<DATE> https://Avamar-proxy-IP/download/<uuid> Resolving internetproxy.example.com (internetproxy.example.com)... 10.2.3.4 Connecting to internetproxy.example.com (internetproxy.example.com )|10.2.3.4|:3128... connected. WARNING: cannot verify 10.1.4.50's certificate, issued by ‘/C=US/ST=California/L=Irvine/O=Dell Technologies/OU=Dell EMC/CN=Administrator’: Self-signed certificate encountered. WARNING: certificate common name ‘Administrator’ doesn't match requested host name ‘10.1.4.50’.Proxy request sent, awaiting response... HTTP/1.1 500 Failed to exec CGI Connection: close X-Frame-Options: SAMEORIGIN X-Content-Type-Options: nosniff Strict-Transport-Security: max-age=31536000;includeSubDomains X-XSS-Protection: 1; mode=block Cache-Control: must-revalidate,no-cache,no-store Content-Type: text/html;charset=iso-8859-1 Content-Length: 368 Server: Jetty(9.4.19.v20190610) <DATE> ERROR 500: Failed to exec CGI. ecode: "8"
Cause
Si tratta di un problema ambientale generato da una configurazione Linux non standard.
Nel file di output dello script flr (flrTBow8V.err) possiamo vedere che il traffico scorre attraverso il proxy http internet del cliente internetproxy.example.com.
Problema: Per motivi di sicurezza, solo la macchina virtuale di destinazione è autorizzata a scaricare i file per questo particolare lavoro/script FLR.
HTTP PROXY fa sì che l'indirizzo IP in ingresso NON corrisponda all'indirizzo IP della macchina virtuale di destinazione e attivi il codice di stato HTTP 500.
Configurazione:
Nel sistema operativo guest della macchina virtuale, un file di configurazione wget (~/.wgetrc o /usr/local/etc/wgetrc) contiene un proxy HTTP configurato.
https_proxy = http://internetproxy.example.com:3128
Resolution
Risoluzione:
Per risolvere questo problema, è necessario assicurarsi che lo script FLR NON utilizzi il proxy http modificando il template delle specifiche dello script wget.
Passaggi:
1. Accedere tramite SSH al proxy
Avamar 2. Modificare lo script del modello wget nel seguente percorso:
/usr/local/avamarclient/bin/wget_linux_script.template3. Aggiungere l'opzione del comando wget "--no-proxy"
Esempio di configurazione prima della modifica:
#!/bin/bash
logfile=$0.err
url=https://%s/download
token=%s
files=(%s)
exit_code=0
for file in "${files[@]}";do
IFS='","' read filepath dest <<< "$file"
wget "$url/$filepath" -N -nH -x -P "$dest" --no-check-certificate -S --restrict-file-names=nocontrol --no-parent --tries 5 --header="Authorization:$token" --cut-dirs=2 --content-disposition 2>>$logfile
let exit_code=$exit_code+$?
if Avamar_PlaceHolderFile=$filepath; then
rm -f "$dest/$filepath"
fi
done
# delete it self after finish execution
rm -f "$0"
echo "ecode: \"$exit_code\"" >> $logfile
exit $exit_code
Esempio di configurazione DOPO la modifica:
#!/bin/bash
logfile=$0.err
url=https://%s/download
token=%s
files=(%s)
exit_code=0
for file in "${files[@]}";do
IFS='","' read filepath dest <<< "$file"
wget "$url/$filepath" -N --no-proxy -nH -x -P "$dest" --no-check-certificate -S --restrict-file-names=nocontrol --no-parent --tries 5 --header="Authorization:$token" --cut-dirs=2 --content-disposition 2>>$logfile
let exit_code=$exit_code+$?
if Avamar_PlaceHolderFile=$filepath; then
rm -f "$dest/$filepath"
fi
done
# delete it self after finish execution
rm -f "$0"
echo "ecode: \"$exit_code\"" >> $logfile
exit $exit_code 4. Riavviare il servizio web vmwareflr sul proxy. (o riavviare il proxy)
192proxy:~ # systemctl restart vmwareflr.service