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 TMPDIRverursacht werden.

Hinweis

Alle Befehlszeilen, beginnend mit # , sind Befehle ausgeführt rootals , 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.jsonazacsnap-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.

  1. Beispiel für einen erfolgreichen Abschluss:

    1. Ausgabe in *.result-Datei :

      Database # 1 (PR1) : completed ok
      
    2. Ausgabe an /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Beispielausgabe, in der ein Fehler aufgetreten ist und AzAcSnap den Fehler erfasst hat:

    1. Ausgabe in *.result-Datei :

      Database # 1 (PR1) : failed
      
    2. 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.

  1. Öffnen Sie im Azure-Portal eine Cloud Shell-Sitzung.

  2. Erstellen Sie ein Testverzeichnis, z. B. mkdir azacsnap.

  3. Wechseln Sie zum Verzeichnis azacsnap, und laden Sie die neueste Version von AzAcSnap herunter.

    wget https://aka.ms/azacsnapinstaller
    
  4. Machen Sie das Installationsprogramm ausführbar, z. B. mit chmod +x azacsnapinstaller.

  5. 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
    
  6. 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.

  7. 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:

  1. Überprüfen Sie, ob die Dienstprinzipaldatei azureauth.json wie in der Konfigurationsdatei azacsnap.json festgelegt vorhanden ist.

  2. Ü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.
    
  3. Ü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, sodass azacsnap 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:

  1. Ü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.

  2. 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.

Nächste Schritte