Устранение неполадок средства приложение 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
как backup
test
, или 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 переходит в то же расположение, что и другие файлы журнала, и это простой выходной файл строки.
Пример успешного завершения:
Выходные данные в файл *.result :
Database # 1 (PR1) : completed ok
Выходные данные в
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Пример выходных данных, в которых произошел сбой, и AzAcSnap захватил сбой:
Выходные данные в файл *.result :
Database # 1 (PR1) : failed
Выходные данные в
/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 для правильной настройки, обход сетевых элементов управления в виртуальной сети или виртуальной машине.
В портал Azure откройте сеанс Cloud Shell.
Создайте тестовый каталог, например
mkdir azacsnap
.Перейдите в каталог azacsnap и скачайте последнюю версию AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Сделайте исполняемый файл установщика, например
chmod +x azacsnapinstaller
.Извлеките двоичный файл для тестирования.
./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
Используйте значок отправки и скачивания Cloud Shell, чтобы отправить файл субъекта-службы, azureauth.json и файл конфигурации AzAcSnap, например azacsnap.json, для тестирования.
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']
Для устранения этой ошибки сделайте следующее:
Проверьте наличие файла субъекта-службы azureauth.json, как указано в файле конфигурации azacsnap.json.
Проверьте файл журнала, например журналы/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.
Проверьте файл журнала, чтобы узнать, истек ли срок действия субъекта-службы. В следующем примере файла журнала показано, что срок действия ключей секрета клиента истек.
[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/
Убедитесь, что установщик добавил расположение этих файлов в пользователь $PATH
AzAcSnap.
Примечание.
Чтобы окончательно добавить к пользователю$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
Для устранения этой ошибки сделайте следующее:
Проверьте файл конфигурации, например azacsnap.json для каждого экземпляра HANA, чтобы убедиться, что значения базы данных SAP HANA верны.
Выполните следующую команду, чтобы убедиться, что
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 должно устранить ошибку с недостаточной привилегией.