Sdílet prostřednictvím


Řešení potíží s nástrojem Aplikace Azure lication Consistent Snapshot (AzAcSnap)

Tento článek popisuje, jak řešit problémy při použití nástroje Aplikace Azure lication Consistent Snapshot (AzAcSnap) pro Azure NetApp Files a Azure Large Instance.

Při spouštění příkazů AzAcSnap můžete narazit na několik běžných problémů. Při řešení potíží postupujte podle pokynů. Pokud stále máte problémy, otevřete žádost o službu pro podpora Microsoftu z webu Azure Portal a přiřaďte žádost do fronty velkých instancí SAP HANA.

Příkaz AzAcSnap se nespustí

V některých případech se AzAcSnap nespustí kvůli prostředí uživatele.

Nepodařilo se vytvořit CoreCLR

AzAcSnap je napsaný v .NET a CoreCLR je prováděcí modul pro aplikace .NET, který provádí funkce, jako je načítání bajtového kódu IL, kompilace na strojový kód a uvolňování paměti. V takovém případě dochází k problému s prostředím, který blokuje spuštění modulu CoreCLR.

Běžnou příčinou jsou omezená oprávnění nebo nastavení prostředí pro uživatele operačního systému AzAcSnap, obvykle azacsnap.

Příčinou chyby Failed to create CoreCLR, HRESULT: 0x80004005 může být nedostatek přístupu k zápisu pro uživatele azacsnap k systému TMPDIR.

Poznámka:

Všechny příkazové řádky začínající příkazy # jsou příkazy spouštěné jako root, všechny příkazové řádky začínající > na příkazy se spouštějí jako azacsnap uživatel.

/tmp Zkontrolujte vlastnictví a oprávnění (poznámka: v tomto příkladu root může číst a zapisovat /tmppouze uživatel):

# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp

Typická /tmp oprávnění mají následující oprávnění, která uživateli azacsnap umožní spustit příkaz azacsnap:

# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp

Pokud není možné změnit /tmp oprávnění adresáře, vytvořte konkrétního TMPDIRuživatele .

Vytvořte TMPDIR uživatele:azacsnap

> 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)

Důležité

Změna uživatele TMPDIR musí být trvalá změnou profilu uživatele (např. $HOME/.bashrc ).$HOME/.bash_profile Také by bylo nutné vyčistit při TMPDIR restartování systému, to je obvykle automatické pro /tmp.

Kontrola souborů protokolu, výsledných souborů a syslogu

Mezi nejlepší zdroje informací pro zkoumání problémů s Nástrojem AzAcSnap patří soubory protokolů, výsledné soubory a systémový protokol.

Soubory protokolu

Soubory protokolu AzAcSnap se ukládají do adresáře nakonfigurovaného parametrem logPath v konfiguračním souboru AzAcSnap. Výchozí název souboru konfigurace je azacsnap.json a výchozí hodnota logPath je ./logs, což znamená, že soubory protokolu se zapisují do adresáře ./logs vzhledem k tomu, kde se azacsnap příkaz spouští. Pokud nastavíte logPath absolutní umístění, například /home/azacsnap/logs, azacsnap vždy vypíše protokoly do /home/azacsnap/logs bez ohledu na to, kam příkaz spustíte azacsnap .

Název souboru protokolu je založený na názvu aplikace, azacsnappříkaz se spustí s -c, například backuptest, nebo details, a výchozí konfigurační název souboru, například azacsnap.json. -c backup Pomocí příkazu by se výchozí název souboru protokolu azacsnap-backup-azacsnap.log, zapisovaný do adresáře nakonfigurovaného uživatelem logPath.

Tato konvence vytváření názvů umožňuje více konfiguračních souborů, jeden na databázi, což pomáhá najít přidružené soubory protokolu. Pokud je název souboru konfigurace SID.json, název protokolu při použití azacsnap -c backup --configfile SID.json této možnosti je azacsnap-backup-SID.log.

Výsledné soubory a syslog

-c backup Pro příkaz AzAcSnap zapíše do souboru *.result. Účelem souboru *.result je poskytnout potvrzení úspěchu nebo selhání na vysoké úrovni. Pokud je soubor *.result prázdný, předpokládejme selhání. Veškerý výstup zapsaný do souboru *.result je také výstupem systémového protokolu (například /var/log/messages) pomocí logger příkazu. Název souboru *.result má stejný základní název jako soubor protokolu, který umožňuje spárování výsledného souboru s konfiguračním souborem a záložním souborem protokolu. Soubor *.result přejde do stejného umístění jako ostatní soubory protokolu a je to jednoduchý výstupní soubor na jednom řádku.

  1. Příklad úspěšného dokončení:

    1. Výstup do souboru *.result :

      Database # 1 (PR1) : completed ok
      
    2. Výstup do /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Příklad výstupu, kdy došlo k selhání a AzAcSnap zaznamenal chybu:

    1. Výstup do souboru *.result :

      Database # 1 (PR1) : failed
      
    2. Výstup do /var/log/messages:

      Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
      

Řešení potíží s chybou testovacího úložiště

Příkaz azacsnap -c test --test storage se nemusí úspěšně dokončit.

Kontrola síťových bran firewall

Komunikace se službou Azure NetApp Files může selhat nebo může dojít k vypršení časového limitu. Pokud chcete řešit potíže, ujistěte se, že pravidla brány firewall neblokují odchozí provoz ze systému, na kterém běží AzAcSnap, na následující adresy a porty TCP/IP:

  • https://management.azure.com:443
  • https://login.microsoftonline.com:443

Použití Cloud Shellu k ověření konfiguračních souborů

Pomocí Cloud Shellu na webu Azure Portal můžete otestovat, jestli je instanční objekt správně nakonfigurovaný. Použití testů Cloud Shellu pro správnou konfiguraci, obejití síťových ovládacích prvků ve virtuální síti nebo virtuálním počítači

  1. Na webu Azure Portal otevřete relaci Cloud Shellu.

  2. Vytvořte testovací adresář, například mkdir azacsnap.

  3. Přejděte do adresáře azacsnap a stáhněte si nejnovější verzi AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Vytvořte spustitelný soubor instalačního programu, například chmod +x azacsnapinstaller.

  5. Extrahujte binární soubor pro testování.

    ./azacsnapinstaller -X -d .
    

    Výsledky vypadají jako následující výstup:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Pomocí ikony Pro nahrání/stažení Cloud Shellu nahrajte instanční soubor, azureauth.json a konfigurační soubor AzAcSnap, jako je azacsnap.json, pro účely testování.

  7. storage Spusťte test.

    ./azacsnap -c test --test storage
    

    Poznámka:

    Dokončení testovacího příkazu může trvat přibližně 90 sekund.

Neúspěšný test ve velké instanci Azure

Následující příklad chyby pochází ze spuštění azacsnap ve velké instanci Azure:

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)?

Pokud chcete tuto chybu vyřešit, neodpovězte yes. Ujistěte se, že je vaše IP adresa úložiště správná. IP adresu úložiště můžete potvrdit provozním týmem Microsoftu.

K chybě obvykle dochází, když uživatel úložiště Azure Large Instance nemá přístup k podkladovému úložišti. Pokud chcete zjistit, jestli má uživatel úložiště přístup k úložišti, spusťte ssh příkaz pro ověření komunikace s platformou úložiště.

ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"

Následující příklad ukazuje očekávaný výstup:

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

Neúspěšný test se službou Azure NetApp Files

Následující příklad chyby se spouští azacsnap se službou 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']

Odstranění této chyby:

  1. Zkontrolujte existenci souboru instančního objektu, azureauth.json, jak je nastaveno v konfiguračním souboru azacsnap.json .

  2. Zkontrolujte soubor protokolu, například protokoly nebo azacsnap-test-azacsnap.log, a zjistěte, jestli má soubor instančního objektu správný obsah. Následující výstup souboru protokolu ukazuje, že tajný klíč klienta je neplatný.

    [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. Zkontrolujte soubor protokolu a zjistěte, jestli vypršela platnost instančního objektu. Následující příklad souboru protokolu ukazuje, že vypršela platnost tajných klíčů klienta.

    [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
    

Tip

Další informace o generování nového instančního objektu najdete v části Povolení komunikace s úložištěm v průvodci nástrojem Install Aplikace Azure lication Consistent Snapshot.

Řešení potíží s chybou příkazu test hana

Příkaz azacsnap -c test --test hana se nemusí úspěšně dokončit.

Příkaz nebyl nalezen.

Při nastavování komunikace se SAP HANA hdbuserstore se program používá k vytvoření nastavení zabezpečené komunikace. AzAcSnap také vyžaduje program pro veškerou hdbsql komunikaci se SAP HANA. Tyto programy jsou obvykle v / usr/sap/<SID>/SYS/exe/hdb/ nebo /usr/sap/hdbclient a musí být v uživatelském $PATHadresáři .

  • V následujícím příkladu hdbsql není příkaz v uživatelském $PATHrozhraní .

    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
    
  • Následující příklad dočasně přidá hdbsql příkaz do uživatele $PATH, který umožňuje azacsnap správné spuštění.

    export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
    

Ujistěte se, že instalační program přidal umístění těchto souborů do uživatele $PATHAzAcSnap .

Poznámka:

Chcete-li trvale přidat do souboru uživatele $PATH, aktualizujte soubor $HOME/.profile uživatele.

Neplatná hodnota klíče

Tento výstup příkazu ukazuje, že klíč připojení nebyl správně nastaven pomocí hdbuserstore Set příkazu.

hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)

Další informace o nastavení najdete hdbuserstorev tématu Začínáme s AzAcSnap.

Neúspěšný test

Při ověřování komunikace se SAP HANA spuštěním testu s azacsnap -c test --test hana, může se zobrazit následující chyba:

> 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

Odstranění této chyby:

  1. Zkontrolujte konfigurační soubor, například azacsnap.json pro každou instanci HANA, a ujistěte se, že jsou správné hodnoty databáze SAP HANA.

  2. Spuštěním následujícího příkazu ověřte, že hdbsql je příkaz v cestě a že se může připojit k serveru SAP HANA.

    hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
    

    Následující příklad ukazuje výstup při správném spuštění příkazu:

    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
    

Chyba nedostatečného oprávnění

Pokud při spuštění azacsnap dojde k chybě* 258: insufficient privilege, zkontrolujte, jestli má uživatel nastavená příslušná uživatelská oprávnění databáze AZACSNAP podle instalační příručky. Pomocí následujícího příkazu ověřte oprávnění uživatele:

hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap

Příkaz by měl vrátit následující výstup:

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"

Tato chyba může poskytnout další informace, které vám pomůžou určit požadovaná oprávnění SAP HANA, například Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. V tomto případě postupujte podle pokynů na portálu nápovědy SAP – GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, který doporučuje určit podrobnosti požadovaného oprávnění pomocí následujícího dotazu SQL:

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","","","",""

V předchozím příkladu by přidání DATABASE BACKUP ADMIN oprávnění k uživateli AZACSNAP SYSTEMDB mělo vyřešit chybu nedostatečných oprávnění.

Další kroky