Поделиться через


Устранение неполадок средства приложение Azure согласованного моментального снимка (AzAcSnap)

В этой статье описывается, как устранять неполадки при использовании средства приложение Azure согласованного моментального снимка (AzAcSnap) для Azure NetApp Files и крупного экземпляра Azure.

При выполнении команд AzAcSnap может возникнуть несколько распространенных проблем. Следуйте инструкциям по устранению неполадок. Если у вас по-прежнему возникли проблемы, откройте запрос на обслуживание служба поддержки Майкрософт из портал Azure и назначьте запрос очереди крупных экземпляров SAP HANA.

Команда AzAcSnap не будет выполняться

В некоторых случаях AzAcSnap не запускается из-за среды пользователя.

Не удалось создать CoreCLR

AzAcSnap написан в .NET, и CoreCLR — это подсистема выполнения для приложений .NET, выполняющая такие функции, как загрузка кода IL байтов, компиляция в машинный код и сборка мусора. В этом случае возникает проблема с окружающей средой, блокирующая запуск ядра CoreCLR.

Распространенная причина — это ограниченные разрешения или настройка среды для пользователя операционной системы AzAcSnap, обычно azacsnap.

Ошибка Failed to create CoreCLR, HRESULT: 0x80004005 может быть вызвана отсутствием доступа на запись для пользователя azacsnap в системе TMPDIR.

Примечание.

Все строки команд, начиная с # этого, выполняются как rootкоманды, все строки команд, начиная > с пользователя, выполняются от имени azacsnap пользователя.

/tmp Проверьте владение и разрешения (обратите внимание, что только root пользователь может читать и записывать в/tmp):

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

Типичный /tmp имеет следующие разрешения, которые позволяют пользователю azacsnap выполнять команду azacsnap:

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

Если изменить разрешения каталога невозможно /tmp , создайте пользователя TMPDIR.

TMPDIR Сделайте для 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)

Важно!

Изменение пользователя должно быть постоянным путем изменения профиля пользователя TMPDIR (например $HOME/.bashrc , или $HOME/.bash_profile). Кроме того, потребуется очистить TMPDIR перезагрузку системы, обычно это автоматически для /tmp.

Проверка файлов журналов, файлов результатов и системного журнала

Некоторые из лучших источников информации для изучения проблем AzAcSnap — это файлы журнала, файлы результатов и системный журнал.

Файлы журналов

Файлы журнала AzAcSnap хранятся в каталоге, настроенном logPath параметром в файле конфигурации AzAcSnap. Имя файла конфигурации по умолчанию — azacsnap.json, а значение logPath по умолчанию — ./logs, что означает, что файлы журналов записываются в каталог ./logs относительно того, где azacsnap выполняется команда. Если вы делаете logPath абсолютное расположение, например /home/azacsnap/logs, azacsnap всегда выводит журналы в /home/azacsnap/logs, независимо от того, где выполняется azacsnap команда.

Имя файла журнала основано на имени приложения, команде, в которой выполняются такие команды, azacsnapкак backuptest, или detailsимя файла конфигурации по умолчанию, например azacsnap.json.-c -c backup С помощью команды имя файла журнала по умолчанию будет azacsnap-backup-azacsnap.log, записанное в каталог, настроенныйlogPath.

Это соглашение об именовании позволяет использовать несколько файлов конфигурации, по одному на базу данных, чтобы помочь найти связанные файлы журнала. Если имя файла конфигурации SID.json, имя файла журнала при использовании azacsnap -c backup --configfile SID.json параметра azacsnap-backup-SID.log.

Файлы результатов и системный журнал

-c backup Для команды AzAcSnap записывается в файл *.result. Целью файла *.result является предоставление высокого уровня подтверждения успешности или сбоя. Если файл *.result пуст, предположим, что сбой. Все выходные данные, записанные в файл *.result , также выводится в системный журнал (например, /var/log/messagesс помощью logger команды). Имя файла *.result имеет то же базовое имя, что и файл журнала, чтобы разрешить сопоставление файла результатов с файлом конфигурации и файлом журнала резервного копирования. Файл *.result переходит в то же расположение, что и другие файлы журнала, и это простой выходной файл строки.

  1. Пример успешного завершения:

    1. Выходные данные в файл *.result :

      Database # 1 (PR1) : completed ok
      
    2. Выходные данные в /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Пример выходных данных, в которых произошел сбой, и AzAcSnap захватил сбой:

    1. Выходные данные в файл *.result :

      Database # 1 (PR1) : failed
      
    2. Выходные данные в /var/log/messages:

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

Устранение неполадок с ошибкой команды "тестовое хранилище"

azacsnap -c test --test storage Команда может завершиться не успешно.

Проверка сетевых брандмауэров

Взаимодействие с Azure NetApp Files может завершиться сбоем или истечением времени ожидания. Чтобы устранить неполадки, убедитесь, что правила брандмауэра не блокируют исходящий трафик из системы, на котором запущен AzAcSnap, на следующие адреса и ПОРТы TCP/IP:

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

Использование Cloud Shell для проверки файлов конфигурации

Вы можете проверить правильность настройки субъекта-службы с помощью Cloud Shell с помощью портал Azure. Использование тестов Cloud Shell для правильной настройки, обход сетевых элементов управления в виртуальной сети или виртуальной машине.

  1. В портал Azure откройте сеанс Cloud Shell.

  2. Создайте тестовый каталог, например mkdir azacsnap.

  3. Перейдите в каталог azacsnap и скачайте последнюю версию AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Сделайте исполняемый файл установщика, например chmod +x azacsnapinstaller.

  5. Извлеките двоичный файл для тестирования.

    ./azacsnapinstaller -X -d .
    

    Результаты выглядят следующим образом:

    +-----------------------------------------------------------+
    | Azure Application Consistent Snapshot Tool Installer |
    +-----------------------------------------------------------+
    |-> Installer version '5.0.2_Build_20210827.19086'
    |-> Extracting commands into ..
    |-> Cleaning up .NET extract dir
    
  6. Используйте значок отправки и скачивания Cloud Shell, чтобы отправить файл субъекта-службы, azureauth.json и файл конфигурации AzAcSnap, например azacsnap.json, для тестирования.

  7. storage Запустите тест.

    ./azacsnap -c test --test storage
    

    Примечание.

    Выполнение тестовой команды может занять около 90 секунд.

Неудачный тест на большом экземпляре Azure

Следующий пример ошибки выполняется в azacsnap крупном экземпляре 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)?

Чтобы устранить эту ошибку, не отвечайте yes. Убедитесь, что IP-адрес хранилища правильный. Вы можете подтвердить IP-адрес хранилища с помощью группы операций Майкрософт.

Эта ошибка обычно возникает, когда у пользователя хранилища крупных экземпляров Azure нет доступа к базовому хранилищу. Чтобы определить, имеет ли пользователь хранилища доступ к хранилищу, выполните ssh команду, чтобы проверить связь с платформой хранилища.

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

В следующем примере показаны ожидаемые выходные данные:

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

Неудачный тест с помощью Azure NetApp Files

Следующий пример ошибки выполняется с azacsnap помощью 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']

Для устранения этой ошибки сделайте следующее:

  1. Проверьте наличие файла субъекта-службы azureauth.json, как указано в файле конфигурации azacsnap.json.

  2. Проверьте файл журнала, например журналы/azacsnap-test-azacsnap.log, чтобы узнать, имеет ли файл субъекта-службы правильный контент. В следующем выходных данных файла журнала показано, что ключ секрета клиента недопустим.

    [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. Проверьте файл журнала, чтобы узнать, истек ли срок действия субъекта-службы. В следующем примере файла журнала показано, что срок действия ключей секрета клиента истек.

    [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
    

Совет

Дополнительные сведения о создании нового субъекта-службы см. в разделе "Включение связи с служба хранилища" в руководстве по установке приложение Azure согласованного моментального снимка.

Устранение неполадок с ошибкой команды test hana

azacsnap -c test --test hana Команда может завершиться не успешно.

Команда не найдена

При настройке связи с SAP HANA программа hdbuserstore используется для создания параметров безопасного подключения. AzAcSnap также требует hdbsql программы для всех взаимодействий с SAP HANA. Обычно эти программы находятся в разделе /usr/sap/SID>/<SYS/exe/hdb/ или /usr/sap/hdbclient и должны находиться в пользовательской $PATHсреде.

  • В следующем примере hdbsql команда не входит в систему пользователя $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
    
  • В следующем примере команда временно добавляется hdbsql в пользовательскую $PATHкоманду, которая позволяет azacsnap правильно выполняться.

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

Убедитесь, что установщик добавил расположение этих файлов в пользователь $PATHAzAcSnap.

Примечание.

Чтобы окончательно добавить к пользователю$PATH, обновите файл $HOME/.profile пользователя.

Недопустимое значение ключа

В выходных данных этой команды показано, что ключ подключения не настроен правильно с hdbuserstore Set помощью команды.

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

Дополнительные сведения о настройке см hdbuserstore. в статье "Начало работы с AzAcSnap".

Завершившийся ошибкой тест

При проверке взаимодействия с SAP HANA с помощью теста azacsnap -c test --test hanaможет возникнуть следующая ошибка:

> 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

Для устранения этой ошибки сделайте следующее:

  1. Проверьте файл конфигурации, например azacsnap.json для каждого экземпляра HANA, чтобы убедиться, что значения базы данных SAP HANA верны.

  2. Выполните следующую команду, чтобы убедиться, что hdbsql команда находится в пути и может подключиться к серверу SAP HANA.

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

    В следующем примере показаны выходные данные при правильном выполнении команды:

    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
    

Ошибка с недостаточной привилегией

При выполнении azacsnap возникает ошибка, например* 258: insufficient privilege, проверка, что у пользователя есть соответствующие привилегии пользователя базы данных AZACSNAP, настроенные в соответствии с руководством по установке. Проверьте привилегии пользователя с помощью следующей команды:

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

Команда должна возвращать следующие выходные данные:

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"

Ошибка может предоставить дополнительные сведения для определения необходимых привилегий SAP HANA, таких как Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. В этом случае следуйте инструкциям на портале справки SAP — GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, которые рекомендуют использовать следующий 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","","","",""

В предыдущем примере добавление привилегий DATABASE BACKUP ADMIN пользователю AZACSNAP SYSTEMDB должно устранить ошибку с недостаточной привилегией.

Следующие шаги