Bagikan melalui


Memecahkan masalah alat Azure Application Consistent Snapshot (AzAcSnap)

Artikel ini menjelaskan cara memecahkan masalah saat menggunakan alat Azure Application Consistent Snapshot (AzAcSnap) untuk Azure NetApp Files dan Azure Large Instance.

Anda mungkin mengalami beberapa masalah umum saat menjalankan perintah AzAcSnap. Ikuti instruksi untuk memecahkan masalah. Jika Anda masih mengalami masalah, buka Permintaan Layanan untuk Dukungan Microsoft dari portal Azure dan tetapkan permintaan ke antrean Instans Besar SAP Hana.

Perintah AzAcSnap tidak akan berjalan

Dalam beberapa kasus, AzAcSnap tidak akan dimulai karena lingkungan pengguna.

Gagal membuat CoreCLR

AzAcSnap ditulis dalam .NET dan CoreCLR adalah mesin eksekusi untuk aplikasi .NET, melakukan fungsi seperti pemuatan kode byte IL, kompilasi ke kode mesin dan pengumpulan sampah. Dalam hal ini ada masalah lingkungan yang memblokir mesin CoreCLR agar tidak dimulai.

Penyebab umumnya adalah izin terbatas atau penyiapan lingkungan untuk pengguna sistem operasi AzAcSnap, biasanya 'azacsnap'.

Kesalahan Failed to create CoreCLR, HRESULT: 0x80004005 dapat disebabkan oleh kurangnya akses tulis untuk pengguna azacsnap ke sistem TMPDIR.

Catatan

Semua baris perintah yang dimulai dengan # adalah perintah yang dijalankan sebagai root, semua baris perintah yang dimulai dijalankan > sebagai azacsnap pengguna.

/tmp Periksa kepemilikan dan izin (perhatikan dalam contoh ini hanya pengguna yang root dapat membaca dan menulis ke /tmp):

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

Umumnya /tmp memiliki izin berikut, yang akan memungkinkan pengguna azacsnap menjalankan perintah azacsnap:

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

Jika tidak dimungkinkan /tmp untuk mengubah izin direktori, buat pengguna tertentu TMPDIR.

Buat TMPDIR untuk azacsnap pengguna:

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

Penting

Mengubah pengguna TMPDIR harus dibuat permanen dengan mengubah profil pengguna (misalnya $HOME/.bashrc atau $HOME/.bash_profile). Juga akan ada kebutuhan untuk membersihkan TMPDIR pada reboot sistem, ini biasanya otomatis untuk /tmp.

Memeriksa file log, file hasil, dan syslog

Beberapa sumber informasi terbaik untuk menyelidiki masalah AzAcSnap adalah file log, file hasil, dan log sistem.

File log

File log AzAcSnap disimpan di direktori yang dikonfigurasi oleh logPath parameter dalam file konfigurasi AzAcSnap. Nama file konfigurasi default adalah azacsnap.json, dan nilai default untuk logPath adalah ./logs, yang berarti file log ditulis ke dalam direktori ./logs relatif terhadap tempat azacsnap perintah berjalan. Jika Anda membuat logPath lokasi absolut, seperti /home/azacsnap/logs, azacsnap selalu keluarkan log ke / home/azacsnap/logs, di mana pun Anda menjalankan azacsnap perintah.

Nama file log didasarkan pada nama aplikasi, azacsnap, perintah yang dijalankan dengan -c, seperti backup, , testatau details, dan nama file konfigurasi default, seperti azacsnap.json. -c backup Dengan perintah , nama file log default akan azacsnap-backup-azacsnap.log, ditulis ke dalam direktori yang dikonfigurasi oleh logPath.

Konvensi penamaan ini memungkinkan beberapa file konfigurasi, satu per database, untuk membantu menemukan file log terkait. Jika nama file konfigurasi SID.json, maka nama file log saat menggunakan azacsnap -c backup --configfile SID.json opsi azacsnap-backup-SID.log.

File hasil dan syslog

-c backup Untuk perintah , AzAcSnap menulis ke file *.result. Tujuan dari file *.result adalah untuk memberikan konfirmasi tingkat tinggi tentang keberhasilan/kegagalan. Jika file *.result kosong, maka asumsikan kegagalan. Setiap output yang ditulis ke file *.result juga dihasilkan ke log sistem (misalnya, /var/log/messages) dengan menggunakan logger perintah . Nama file *.result memiliki nama dasar yang sama dengan file log untuk memungkinkan pencocokan file hasil dengan file konfigurasi dan file log cadangan. File *.result masuk ke lokasi yang sama dengan file log lainnya dan merupakan file output satu baris sederhana.

  1. Contoh untuk penyelesaian yang berhasil:

    1. Output ke file *.result :

      Database # 1 (PR1) : completed ok
      
    2. Output ke /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Contoh output di mana kegagalan telah terjadi dan AzAcSnap menangkap kegagalan:

    1. Output ke file *.result :

      Database # 1 (PR1) : failed
      
    2. Output ke /var/log/messages:

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

Memecahkan masalah perintah 'penyimpanan uji' yang gagal

Perintah azacsnap -c test --test storage mungkin tidak berhasil diselesaikan.

Periksa firewall jaringan

Komunikasi dengan Azure NetApp Files mungkin gagal atau waktu habis. Untuk memecahkan masalah, pastikan aturan firewall tidak memblokir lalu lintas keluar dari sistem yang menjalankan AzAcSnap ke alamat dan port TCP/IP berikut:

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

Menggunakan Cloud Shell untuk memvalidasi file konfigurasi

Anda dapat menguji apakah perwakilan layanan dikonfigurasi dengan benar dengan menggunakan Cloud Shell melalui portal Azure. Menggunakan pengujian Cloud Shell untuk konfigurasi yang benar, melewati kontrol jaringan dalam jaringan virtual atau komputer virtual (VM).

  1. Di portal Azure, buka sesi Cloud Shell.

  2. Buat direktori pengujian, misalnya mkdir azacsnap.

  3. Beralih ke direktori azacsnap , dan unduh versi terbaru AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Buat alat penginstal dapat dieksekusi, misalnya chmod +x azacsnapinstaller.

  5. Ekstrak biner untuk pengujian.

    ./azacsnapinstaller -X -d .
    

    Hasilnya terlihat seperti output berikut:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Gunakan ikon Unggah/Unduh Cloud Shell untuk mengunggah file perwakilan layanan, azureauth.json, dan file konfigurasi AzAcSnap, seperti azacsnap.json, untuk pengujian.

  7. Jalankan storage pengujian.

    ./azacsnap -c test --test storage
    

    Catatan

    Perintah uji dapat memakan waktu sekitar 90 detik untuk menyelesaikannya.

Pengujian gagal pada Instans Besar Azure

Contoh kesalahan berikut adalah dari menjalankan azacsnap pada Instans Besar 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)?

Untuk memecahkan masalah kesalahan ini, jangan merespons yes. Pastikan alamat IP penyimpanan Anda sudah benar. Anda dapat mengonfirmasi alamat IP penyimpanan dengan tim operasi Microsoft.

Kesalahan biasanya muncul ketika pengguna penyimpanan Azure Large Instance tidak memiliki akses ke penyimpanan yang mendasar. Untuk menentukan apakah pengguna penyimpanan memiliki akses ke penyimpanan, jalankan ssh perintah untuk memvalidasi komunikasi dengan platform penyimpanan.

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

Contoh berikut menunjukkan output yang diharapkan:

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

Pengujian gagal dengan Azure NetApp Files

Contoh kesalahan berikut adalah dari menjalankan azacsnap dengan 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']

Untuk memecahkan masalah kesalahan ini:

  1. Periksa keberadaan file perwakilan layanan, azureauth.json, seperti yang diatur dalam file konfigurasi azacsnap.json .

  2. Periksa file log, misalnya, log/azacsnap-test-azacsnap.log, untuk melihat apakah file perwakilan layanan memiliki konten yang benar. Output file log berikut menunjukkan bahwa kunci rahasia klien tidak valid.

    [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. Periksa file log untuk melihat apakah perwakilan layanan telah kedaluwarsa. Contoh file log berikut menunjukkan bahwa kunci rahasia klien kedaluwarsa.

    [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

Untuk informasi selengkapnya tentang membuat Perwakilan Layanan baru, lihat bagian Mengaktifkan komunikasi dengan Penyimpanan di panduan alat Instal Azure Application Consistent Snapshot.

Memecahkan masalah perintah 'uji hana' yang gagal

Perintah azacsnap -c test --test hana mungkin tidak berhasil diselesaikan.

Perintah tidak ditemukan

Saat mengatur komunikasi dengan SAP HANA, program hdbuserstore digunakan untuk membuat pengaturan komunikasi yang aman. AzAcSnap juga memerlukan hdbsql program untuk semua komunikasi dengan SAP Hana. Program-program ini biasanya berada di bawah /usr/sap/<SID>/SYS/exe/hdb/ atau /usr/sap/hdbclient dan harus berada di pengguna $PATH.

  • Dalam contoh berikut, hdbsql perintah tidak ada di pengguna $PATH.

    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
    
  • Contoh berikut untuk sementara menambahkan hdbsql perintah ke pengguna $PATH, memungkinkan azacsnap untuk berjalan dengan benar.

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

Pastikan alat penginstal menambahkan lokasi file-file ini ke pengguna $PATHAzAcSnap.

Catatan

Untuk menambahkan secara permanen ke pengguna$PATH, perbarui file $HOME/.profile pengguna.

Nilai untuk kunci tidak valid

Output perintah ini menunjukkan bahwa kunci koneksi belum disiapkan dengan benar dengan hdbuserstore Set perintah .

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

Untuk informasi selengkapnya tentang penyiapan hdbuserstore, lihat Mulai menggunakan AzAcSnap.

Tes gagal

Saat memvalidasi komunikasi dengan SAP Hana dengan menjalankan pengujian dengan azacsnap -c test --test hana, Anda mungkin mendapatkan kesalahan berikut:

> 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

Untuk memecahkan masalah kesalahan ini:

  1. Periksa file konfigurasi, misalnya azacsnap.json, untuk setiap instans HANA, untuk memastikan bahwa nilai database SAP Hana sudah benar.

  2. Jalankan perintah berikut untuk memverifikasi bahwa hdbsql perintah berada di jalur dan dapat terhubung ke server SAP Hana.

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

    Contoh berikut menunjukkan output saat perintah berjalan dengan benar:

    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
    

Kesalahan hak istimewa tidak memadai

Jika berjalan azacsnap menyajikan kesalahan seperti * 258: insufficient privilege, periksa apakah pengguna memiliki hak istimewa pengguna database AZACSNAP yang sesuai yang disiapkan sesuai panduan penginstalan. Verifikasi hak istimewa pengguna dengan perintah berikut:

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

Perintah harus mengembalikan output berikut:

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"

Kesalahan mungkin memberikan informasi lebih lanjut untuk membantu menentukan hak istimewa SAP Hana yang diperlukan, seperti Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. Dalam hal ini, ikuti instruksi di Portal Bantuan SAP - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, yang merekomendasikan penggunaan kueri SQL berikut untuk menentukan detail hak istimewa yang diperlukan:

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

Dalam contoh sebelumnya, menambahkan DATABASE BACKUP ADMIN hak istimewa ke pengguna AZACSNAP SYSTEMDB harus mengatasi kesalahan hak istimewa yang tidak mencukupi.

Langkah berikutnya