Problembehandlung für das Tool für konsistente Momentaufnahmen in Azure-Anwendungen (AzAcSnap)
In diesem Artikel wird beschrieben, wie Probleme beim Verwenden des Tools für konsistente Momentaufnahmen in Azure-Anwendungen (AzAcSnap) für Azure NetApp Files und Azure Large Instance behandelt werden.
Möglicherweise treten beim Ausführen von AzAcSnap-Befehlen einige häufige Probleme auf. Gehen Sie folgendermaßen vor, um diese Probleme zu behandeln. Falls weiterhin Probleme auftreten, eröffnen Sie einen Service Request an den Microsoft-Support im Azure-Portal, und ordnen Sie diese in die Warteschlange für SAP HANA (große Instanzen) ein.
Der AzAcSnap-Befehl wird nicht ausgeführt.
In einigen Fällen wird AzAcSnap aufgrund der Umgebung des Benutzers nicht gestartet.
Fehler beim Erstellen von CoreCLR
AzAcSnap wird in .NET geschrieben, und coreCLR ist ein Ausführungsmodul für .NET-Apps, das Funktionen wie laden von IL-Byte-Code, Kompilierung in Computercode und Garbage Collection ausführt. In diesem Fall besteht ein Umweltproblem, das den Start des CoreCLR-Moduls blockiert.
Eine häufige Ursache ist eine eingeschränkte Berechtigung oder Umgebungseinrichtung für den AzAcSnap-Betriebssystembenutzer, in der Regel "azacsnap".
Der Fehler Failed to create CoreCLR, HRESULT: 0x80004005
kann durch fehlenden Schreibzugriff für den azacsnap-Benutzer auf das System TMPDIR
verursacht werden.
Hinweis
Alle Befehlszeilen, beginnend mit #
, sind Befehle ausgeführt root
als , alle Befehlszeilen, die mit dem Benutzer beginnen >
azacsnap
.
Überprüfen Sie den Besitz und die /tmp
Berechtigungen (beachten Sie in diesem Beispiel, dass nur der root
Benutzer lesen und schreiben kann in /tmp
):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Ein typischer Benutzer verfügt über /tmp
die folgenden Berechtigungen, sodass der azacsnap-Benutzer den azacsnap-Befehl ausführen kann:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Wenn es nicht möglich ist, die /tmp
Verzeichnisberechtigungen zu ändern, erstellen Sie einen benutzerspezifischen TMPDIR
.
Machen Sie einen TMPDIR
für den azacsnap
Benutzer:
> mkdir /home/azacsnap/_tmp
> export TMPDIR=/home/azacsnap/_tmp
> azacsnap -c about
WKO0XXXXXXXXXXXNW
Wk,.,oxxxxxxxxxxx0W
0;.'.;dxxxxxxxxxxxKW
Xl'''.'cdxxxxxxxxxdkX
Wx,''''.,lxxxxdxdddddON
0:''''''.;oxdddddddddxKW
Xl''''''''':dddddddddddkX
Wx,''''''''':ddddddddddddON
O:''''''''',xKxddddddoddod0W
Xl''''''''''oNW0dooooooooooxX
Wx,,,,,,'','c0WWNkoooooooooookN
WO:',,,,,,,,;cxxxxooooooooooooo0W
Xl,,,,,,,;;;;;;;;;;:llooooooooldX
Nx,,,,,,,,,,:c;;;;;;;;coooollllllkN
WO:,,,,,,,,,;kXkl:;;;;,;lolllllllloOW
Xl,,,,,,,,,,dN WNOl:;;;;:lllllllllldK
0c,;;;;,,,;lK NOo:;;:clllllllllo0W
WK000000000N NK000KKKKKKKKKKXW
Azure Application Consistent Snapshot Tool
AzAcSnap 7a (Build: 1AA8343)
Wichtig
Das Ändern der Benutzer TMPDIR
muss dauerhaft erfolgen, indem das Profil des Benutzers geändert wird (z. B. $HOME/.bashrc
oder $HOME/.bash_profile
). Es wäre auch erforderlich, den Systemneustart sauber, dies ist in der TMPDIR
Regel automatisch für /tmp
.
Überprüfen von Protokolldateien, Ergebnisdateien und Syslog
Einige der besten Informationsquellen für die Untersuchung von AzAcSnap-Problemen sind die Protokolldateien, Ergebnisdateien und das Systemprotokoll.
Protokolldateien
Die Protokolldateien von AzAcSnap werden einem Verzeichnis gespeichert, das in der Konfigurationsdatei für AzAcSnap mit dem Parameter logPath
konfiguriert wird. Der Standardname der Konfigurationsdatei lautet azacsnap.json, und der Standardwert für logPath
ist ./logs. Das bedeutet, dass die Protokolldateien in das Verzeichnis ./logs relativ zum Ausführungsverzeichnis des Befehls azacsnap
geschrieben werden. Wenn Sie für logPath
einen absoluten Speicherort festlegen, z. B. /home/azacsnap/logs, gibt azacsnap
die Protokolle immer in /home/azacsnap/logs aus, unabhängig vom Ausführungsort des Befehls azacsnap
.
Der Protokolldateiname basiert auf dem Anwendungsnamen (azacsnap
), dem mit -c
ausgeführten Befehl (z. B. backup
, test
oder details
) und dem Namen der Standardkonfigurationsdatei (z. B. azacsnap.json). Mit dem Befehl -c backup
würde der Name der Standardprotokolldatei azacsnap-backup-azacsnap.log lauten und in das von logPath
konfigurierte Verzeichnis geschrieben werden.
Diese Namenskonvention ermöglicht mehrere Konfigurationsdateien (eine pro Datenbank) und hilft damit, die zugehörigen Protokolldateien einfacher zu finden. Wenn der Konfigurationsdateiname SID.json ist, lautet der Protokolldateiname beim Verwenden der Option azacsnap -c backup --configfile SID.json
azacsnap-backup-SID.log.
Ergebnisdateien und Syslog
Für den Befehl -c backup
schreibt AzAcSnap in eine Datei vom Typ *.result. Der Zweck der Datei *.result besteht darin, eine allgemeine Bestätigung zur erfolgreichen/nicht erfolgreichen Ausführung bereitzustellen. Wenn die Datei *.result leer ist, gehen Sie von einem Fehler aus. Jede in die Datei *.result geschriebene Ausgabe wird mithilfe des Befehls logger
auch in das Systemprotokoll (z. B. /var/log/messages
) ausgegeben. Der Dateiname *.result hat denselben Basisnamen wie die Protokolldatei, um den Abgleich der Ergebnisdatei mit der Konfigurationsdatei und der Sicherungsprotokolldatei zu ermöglichen. Die Datei "*.result " wechselt an denselben Speicherort wie die anderen Protokolldateien und ist eine einfache Einzeilenausgabedatei.
Beispiel für einen erfolgreichen Abschluss:
Ausgabe in *.result-Datei :
Database # 1 (PR1) : completed ok
Ausgabe an
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Beispielausgabe, in der ein Fehler aufgetreten ist und AzAcSnap den Fehler erfasst hat:
Ausgabe in *.result-Datei :
Database # 1 (PR1) : failed
Ausgabe an
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Problembehandlung beim Befehl „test storage“
Der Befehl azacsnap -c test --test storage
wird möglicherweise nicht erfolgreich abgeschlossen.
Überprüfen von Netzwerkfirewalls
Bei der Kommunikation mit Azure NetApp Files kann ein Fehler oder ein Timeout auftreten. Stellen Sie zur Problembehandlung sicher, dass die Firewallregeln den ausgehenden Datenverkehr von dem System, auf dem AzAcSnap ausgeführt wird, zu den folgenden Adressen und TCP/IP-Ports nicht blockieren:
https://management.azure.com:443
https://login.microsoftonline.com:443
Verwenden von Cloud Shell zum Überprüfen von Konfigurationsdateien
Sie können testen, ob der Dienstprinzipal ordnungsgemäß konfiguriert ist, indem Sie Cloud Shell über das Azure-Portal verwenden. Durch die Verwendung von Cloud Shell-Tests für die richtige Konfiguration umgehen Sie Netzwerkkontrollen innerhalb eines virtuellen Netzwerks oder auf einer VM.
Öffnen Sie im Azure-Portal eine Cloud Shell-Sitzung.
Erstellen Sie ein Testverzeichnis, z. B.
mkdir azacsnap
.Wechseln Sie zum Verzeichnis azacsnap, und laden Sie die neueste Version von AzAcSnap herunter.
wget https://aka.ms/azacsnapinstaller
Machen Sie das Installationsprogramm ausführbar, z. B. mit
chmod +x azacsnapinstaller
.Extrahieren Sie die Binärdatei zum Testen.
./azacsnapinstaller -X -d .
Die Ergebnisse sehen in etwa wie folgt aus:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Verwenden Sie das Cloud Shell-Symbol für das Hochladen/Herunterladen, um die Dienstprinzipaldatei (azureauth.json) und die AzAcSnap-Konfigurationsdatei (z. B. azacsnap.json) für Tests hochzuladen.
Führen Sie den
storage
-Test aus../azacsnap -c test --test storage
Hinweis
Der Testbefehl kann etwa 90 Sekunden in Anspruch nehmen.
Fehlerhafter Test bei Azure Large Instance
Das folgende Beispiel stammt aus der Ausführung von azacsnap
für Azure Large Instance:
azacsnap -c test --test storage
The authenticity of host '172.18.18.11 (172.18.18.11)' can't be established.
ECDSA key fingerprint is SHA256:QxamHRn3ZKbJAKnEimQpVVCknDSO9uB4c9Qd8komDec.
Are you sure you want to continue connecting (yes/no)?
Um diesen Fehler zu beheben, antworten Sie nicht mit yes
. Stellen Sie sicher, dass die IP-Adresse Ihres Speichers korrekt ist. Sie können die Speicher-IP-Adresse vom Microsoft Operations-Team bestätigen lassen.
Der Fehler wird normalerweise angezeigt, wenn die Benutzer*innen des Azure Large Instance-Speichers keinen Zugriff auf den zugrunde liegenden Speicher haben. Um den Zugriff auf den Speicher für die Speicherbenutzer*innen zu überprüfen, führen Sie den Befehl ssh
aus. Damit prüfen Sie die Kommunikation mit der Speicherplattform.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
Das folgende Beispiel zeigt die erwartete Ausgabe:
ssh clt1h80backup@10.8.0.16 "volume show -fields volume"
vserver volume
--------------------------------- ------------------------------
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00001_t020_vol
osa33-hana-c01v250-client25-nprod hana_data_h80_mnt00002_t020_vol
Fehler beim Test mit Azure NetApp Files
Das folgende Fehlerbeispiel stammt von der Ausführung von azacsnap
mit Azure NetApp Files:
azacsnap --configfile azacsnap.json.NOT-WORKING -c test --test storage
BEGIN : Test process started for 'storage'
BEGIN : Storage test snapshots on 'data' volumes
BEGIN : 1 task(s) to Test Snapshots for Storage Volume Type 'data'
ERROR: Could not create StorageANF object [authFile = 'azureauth.json']
So können Sie diesen Fehler beheben:
Überprüfen Sie, ob die Dienstprinzipaldatei azureauth.json wie in der Konfigurationsdatei azacsnap.json festgelegt vorhanden ist.
Überprüfen Sie die Protokolldatei, z. B. logs/azacsnap-test-azacsnap.log, um zu ermitteln, ob die Dienstprinzipaldatei den richtigen Inhalt hat. Die folgende Protokolldateiausgabe zeigt, dass der geheime Clientschlüssel ungültig ist.
[19/Nov/2020:18:39:49 +13:00] DEBUG: [PID:0020080:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000215: Invalid client secret is provided.
Überprüfen Sie in der Protokolldatei, ob der Dienstprinzipal abgelaufen ist. Das folgende Beispiel für eine Protokolldatei zeigt, dass die geheimen Clientschlüssel abgelaufen sind.
[19/Nov/2020:18:41:10 +13:00] DEBUG: [PID:0020257:StorageANF:659] [1] Innerexception: Microsoft.IdentityModel.Clients.ActiveDirectory.AdalServiceException AADSTS7000222: The provided client secret keys are expired. Visit the Azure Portal to create new keys for your app, or consider using certificate credentials for added security: https://learn.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials
Tipp
Weitere Informationen zum Generieren eines neuen Dienstprinzipals finden Sie im Handbuch zum Installieren des Tools für konsistente Momentaufnahmen in Azure-Anwendungen im Abschnitt Aktivieren der Kommunikation mit Speicher.
Problembehandlung beim Befehl „test hana“
Der Befehl azacsnap -c test --test hana
wird möglicherweise nicht erfolgreich abgeschlossen.
Der Befehl wurde nicht gefunden.
Beim Einrichten der Kommunikation mit SAP HANA werden die Einstellungen für eine sichere Kommunikation über das Programm hdbuserstore
erstellt. AzAcSnap benötigt auch das Programm hdbsql
für die gesamte Kommunikation mit SAP HANA. Diese Programme befinden sich in der Regel unter /usr/sap/<SID>/SYS/exe/hdb/ oder /usr/sap/hdbclient und müssen sich im $PATH
der Benutzer*innen befinden.
Im folgenden Beispiel befindet sich der Befehl
hdbsql
nicht im$PATH
des Benutzers.hdbsql -n 172.18.18.50 - i 00 -U AZACSNAP "select version from sys.m_database"
If 'hdbsql' is not a typo you can use command-not-found to lookup the package that contains it, like this: cnf hdbsql
Im folgenden Beispiel wird der Befehl
hdbsql
vorübergehend im$PATH
des Benutzers hinzugefügt, sodassazacsnap
ordnungsgemäß ausgeführt werden kann.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Stellen Sie sicher, dass das Installationsprogramm den Speicherort dieser Dateien im $PATH
des AzAcSnap-Benutzers hinzugefügt hat.
Hinweis
Um dem $PATH
von Benutzer*innen Befehle dauerhaft hinzuzufügen, aktualisieren Sie die Datei $HOME/.profile der Benutzer*innen.
Ungültiger Wert für den Schlüssel
Diese Befehlsausgabe zeigt, dass der Verbindungsschlüssel nicht ordnungsgemäß mit dem Befehl hdbuserstore Set
eingerichtet wurde.
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Weitere Informationen zum Einrichten von hdbuserstore
finden Sie unter Erste Schritte mit AzAcSnap.
Fehlgeschlagener Test
Beim Überprüfen der Kommunikation mit SAP HANA mithilfe eines Tests mit azacsnap -c test --test hana
tritt möglicherweise der folgende Fehler auf:
> azacsnap -c test --test hana
BEGIN : Test process started for 'hana'
BEGIN : SAP HANA tests
CRITICAL: Command 'test' failed with error:
Cannot get SAP HANA version, exiting with error: 127
So können Sie diesen Fehler beheben:
Überprüfen Sie die Konfigurationsdatei (z. B. azacsnap.json) für jede HANA-Instanz, um sicherzustellen, dass die Werte für die SAP HANA-Datenbanken richtig sind.
Führen Sie den folgenden Befehl aus, um zu überprüfen, ob der Befehl
hdbsql
im Pfad enthalten ist und eine Verbindung mit dem SAP HANA-Server herstellen kann.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
Im folgenden Beispiel wird die Ausgabe bei einer ordnungsgemäßen Ausführung des Befehls gezeigt:
host : 172.18.18.50 sid : H80 dbname : SYSTEMDB user : AZACSNAP kernel version: 2.00.040.00.1553674765 SQLDBC version: libSQLDBCHDB 2.04.126.1551801496 autocommit : ON locale : en_US.UTF-8 input encoding: UTF8 sql port : saphana1:30013
Fehler durch unzureichende Berechtigungen
Wenn bei der Ausführung von azacsnap
ein Fehler wie * 258: insufficient privilege
auftritt, überprüfen Sie, ob den Benutzer*innen die erforderlichen Berechtigungen für die AZACSNAP-Datenbank zugewiesen wurden, die im Installationsleitfaden beschrieben sind. Mit dem folgenden Befehl überprüfen Sie die aktuellen Berechtigungen von Benutzer*innen:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
Mit diesem Befehl sollte die folgende Ausgabe zurückgegeben werden:
GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE
"AZACSNAP","USER","BACKUP ADMIN","TRUE","FALSE"
"AZACSNAP","USER","CATALOG READ","TRUE","FALSE"
"AZACSNAP","USER","CREATE ANY","TRUE","TRUE"
Der Fehler enthält möglicherweise auch weitere Informationen, um die erforderlichen SAP HANA-Berechtigungen zu bestimmen, z. B. Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. Befolgen Sie in diesem Fall die Anweisungen im SAP-Hilfeportal – GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS. Darin wird empfohlen, die folgende SQL-Abfrage zu verwenden, um die Details zu den erforderlichen Berechtigungen zu ermitteln:
CALL SYS.GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS ('99X9999X99X9999X99X99XX999XXX999', ?)
GUID,CREATE_TIME,CONNECTION_ID,SESSION_USER_NAME,CHECKED_USER_NAME,PRIVILEGE,IS_MISSING_ANALYTIC_PRIVILEGE,IS_MISSING_GRANT_OPTION,DATABASE_NAME,SCHEMA_NAME,OBJECT_NAME,OBJECT_TYPE
"99X9999X99X9999X99X99XX999XXX999","2021-01-01 01:00:00.180000000",120212,"AZACSNAP","AZACSNAP","DATABASE ADMIN or DATABASE BACKUP ADMIN","FALSE","FALSE","","","",""
Im obigen Beispiel sollte das Hinzufügen der Berechtigung DATABASE BACKUP ADMIN
zum AZACSNAP-Benutzer von SYSTEMDB den Fehler wegen unzureichender Berechtigungen beheben.