Solucionar problemas da ferramenta Instantâneo Consistente do Aplicativo do Azure (AzAcSnap)
Este artigo descreve como solucionar problemas ao usar a ferramenta Azure Application Consistent Snapshot (AzAcSnap) para Arquivos NetApp do Azure e Instância Grande do Azure.
Você pode encontrar vários problemas comuns ao executar comandos AzAcSnap. Siga as instruções para solucionar os problemas. Se você ainda tiver problemas, abra uma Solicitação de Serviço para Suporte da Microsoft no portal do Azure e atribua a solicitação à fila de Instância Grande do SAP HANA.
O comando AzAcSnap não será executado
Em alguns casos, o AzAcSnap não será iniciado devido ao ambiente do usuário.
Falha ao criar CoreCLR
AzAcSnap é escrito em .NET e o CoreCLR é um mecanismo de execução para aplicativos .NET, executando funções como carregamento de código de byte IL, compilação para código de máquina e coleta de lixo. Neste caso, existe um problema ambiental que impede o arranque do motor CoreCLR.
Uma causa comum são permissões limitadas ou configuração ambiental para o usuário do sistema operacional AzAcSnap, geralmente 'azacsnap'.
O erro Failed to create CoreCLR, HRESULT: 0x80004005
pode ser causado pela falta de acesso de gravação para o usuário azacsnap para o sistema TMPDIR
.
Nota
Todas as linhas de comando que começam com #
são comandos executados como root
, todas as linhas de comando que começam com >
são executadas como azacsnap
usuário.
Verifique a propriedade e as /tmp
permissões (observe que, neste exemplo, apenas o root
usuário pode ler e gravar em /tmp
):
# ls -ld /tmp
drwx------ 9 root root 8192 Mar 31 10:50 /tmp
Um típico /tmp
tem as seguintes permissões, o que permitiria ao usuário azacsnap executar o comando azacsnap:
# ls -ld /tmp
drwxrwxrwt 9 root root 8192 Mar 31 10:51 /tmp
Se não for possível alterar as permissões de /tmp
diretório, crie um usuário específico TMPDIR
.
Faça um TMPDIR
para o azacsnap
usuário:
> 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)
Importante
A alteração do utilizador teria de se tornar permanente, TMPDIR
alterando o perfil do utilizador (por exemplo, $HOME/.bashrc
ou $HOME/.bash_profile
). Também haveria a necessidade de limpar a reinicialização do TMPDIR
sistema, isso normalmente é automático para /tmp
.
Verificar arquivos de log, arquivos de resultados e syslog
Algumas das melhores fontes de informação para investigar problemas do AzAcSnap são os arquivos de log, os arquivos de resultados e o log do sistema.
Ficheiros de registo
Os arquivos de log do AzAcSnap são armazenados no diretório configurado pelo logPath
parâmetro no arquivo de configuração do AzAcSnap. O nome do arquivo de configuração padrão é azacsnap.json e o valor padrão para logPath
é ./logs, o que significa que os arquivos de log são gravados no diretório ./logs em relação ao local onde o azacsnap
comando é executado. Se você criar um logPath
local absoluto, como /home/azacsnap/logs, azacsnap
sempre enviará os logs para /home/azacsnap/logs, independentemente de onde você executar o azacsnap
comando.
O nome do arquivo de log é baseado no nome do aplicativo, azacsnap
, o comando executado com -c
, como backup
, test
ou details
, e o nome do arquivo de configuração padrão, como azacsnap.json. Com o -c backup
comando, um nome de arquivo de log padrão seria azacsnap-backup-azacsnap.log, gravado no diretório configurado por logPath
.
Essa convenção de nomenclatura permite vários arquivos de configuração, um por banco de dados, para ajudar a localizar os arquivos de log associados. Se o nome do arquivo de configuração for SID.json, o nome do arquivo de log ao usar a azacsnap -c backup --configfile SID.json
opção será azacsnap-backup-SID.log.
Arquivos de resultados e syslog
Para o -c backup
comando, AzAcSnap grava em um arquivo *.result . O objetivo do arquivo *.result é fornecer confirmação de alto nível de sucesso/fracasso. Se o arquivo *.result estiver vazio, assuma a falha. Qualquer saída gravada no arquivo *.result também é saída para o log do sistema (por exemplo, /var/log/messages
) usando o logger
comando. O nome do arquivo *.result tem o mesmo nome base que o arquivo de log para permitir a correspondência do arquivo de resultado com o arquivo de configuração e o arquivo de log de backup. O arquivo *.result vai para o mesmo local que os outros arquivos de log e é um arquivo de saída simples de uma linha.
Exemplo de conclusão bem-sucedida:
Saída para o arquivo *.result :
Database # 1 (PR1) : completed ok
Saída para
/var/log/messages
:Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
Exemplo de saída onde ocorreu uma falha e o AzAcSnap capturou a falha:
Saída para o arquivo *.result :
Database # 1 (PR1) : failed
Saída para
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Solucionar problemas do comando 'armazenamento de teste' com falha
O comando azacsnap -c test --test storage
pode não ser concluído com êxito.
Verifique os firewalls de rede
A comunicação com os Arquivos NetApp do Azure pode falhar ou atingir o tempo limite. Para solucionar problemas, verifique se as regras de firewall não estão bloqueando o tráfego de saída do sistema que executa o AzAcSnap para os seguintes endereços e portas TCP/IP:
https://management.azure.com:443
https://login.microsoftonline.com:443
Usar o Cloud Shell para validar arquivos de configuração
Você pode testar se a entidade de serviço está configurada corretamente usando o Cloud Shell por meio do portal do Azure. Usando testes do Cloud Shell para a configuração correta, ignorando os controles de rede dentro de uma rede virtual ou máquina virtual (VM).
No portal do Azure, abra uma sessão do Cloud Shell .
Faça um diretório de teste, por exemplo
mkdir azacsnap
.Mude para o diretório azacsnap e baixe a versão mais recente do AzAcSnap.
wget https://aka.ms/azacsnapinstaller
Torne o instalador executável, por exemplo
chmod +x azacsnapinstaller
.Extraia o binário para teste.
./azacsnapinstaller -X -d .
Os resultados se parecem com a seguinte saída:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Use o ícone Upload/Download do Cloud Shell para carregar o arquivo principal do serviço, o azureauth.json e o arquivo de configuração do AzAcSnap, como azacsnap.json, para teste.
Execute o
storage
teste../azacsnap -c test --test storage
Nota
O comando test pode levar cerca de 90 segundos para ser concluído.
Falha no teste na Instância Grande do Azure
O exemplo de erro a seguir é da execução azacsnap
na Instância Grande do 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)?
Para solucionar esse erro, não responda yes
. Certifique-se de que o seu endereço IP de armazenamento está correto. Você pode confirmar o endereço IP de armazenamento com a equipe de operações da Microsoft.
O erro geralmente aparece quando o usuário de armazenamento de instância grande do Azure não tem acesso ao armazenamento subjacente. Para determinar se o usuário de armazenamento tem acesso ao armazenamento, execute o comando para validar a ssh
comunicação com a plataforma de armazenamento.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
O exemplo a seguir mostra a saída esperada:
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
Falha no teste com arquivos NetApp do Azure
O exemplo de erro a seguir é da execução azacsnap
com arquivos NetApp do Azure:
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']
Para resolver este erro:
Verifique a existência do arquivo principal de serviço, azureauth.json, conforme definido no arquivo de configuração azacsnap.json.
Verifique o arquivo de log, por exemplo, logs/azacsnap-test-azacsnap.log, para ver se o arquivo da entidade de serviço tem o conteúdo correto. A saída do arquivo de log a seguir mostra que a chave secreta do cliente é inválida.
[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.
Verifique o arquivo de log para ver se a entidade de serviço expirou. O exemplo de arquivo de log a seguir mostra que as chaves secretas do cliente expiraram.
[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
Gorjeta
Para obter mais informações sobre como gerar uma nova entidade de serviço, consulte a seção Habilitar comunicação com o armazenamento no guia da ferramenta Instalar instantâneo consistente do aplicativo do Azure.
Solucionar problemas do comando 'test hana' com falha
O comando azacsnap -c test --test hana
pode não ser concluído com êxito.
Comando não encontrado
Ao configurar a comunicação com o SAP HANA, o hdbuserstore
programa é usado para criar as configurações de comunicação seguras. AzAcSnap também requer o programa para todas as comunicações com o hdbsql
SAP HANA. Esses programas geralmente estão em /usr/sap/<SID>/SYS/exe/hdb/ ou /usr/sap/hdbclient e devem estar no arquivo $PATH
.
No exemplo a seguir, o
hdbsql
comando não está no arquivo$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
O exemplo a seguir adiciona temporariamente o
hdbsql
comando ao ,$PATH
permitindoazacsnap
que seja executado corretamente.export PATH=$PATH:/hana/shared/H80/exe/linuxx86_64/hdb/
Certifique-se de que o instalador adicionou o local desses arquivos ao arquivo $PATH
.
Nota
Para adicionar permanentemente ao arquivo $PATH
, atualize o arquivo $HOME/.profile do usuário.
Valor inválido para chave
Esta saída de comando mostra que a chave de conexão não foi configurada corretamente com o hdbuserstore Set
comando.
hdbsql -n 172.18.18.50 -i 00 -U AZACSNAP "select version from sys.m_database"
* -10104: Invalid value for KEY (AZACSNAP)
Para obter mais informações sobre a configuração do hdbuserstore
, consulte Introdução ao AzAcSnap.
Teste com falha
Ao validar a comunicação com o SAP HANA executando um teste com azacsnap -c test --test hana
o , você pode obter o seguinte erro:
> 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
Para resolver este erro:
Verifique o arquivo de configuração, por exemplo , azacsnap.json, para cada instância HANA, para garantir que os valores do banco de dados SAP HANA estejam corretos.
Execute o seguinte comando para verificar se o
hdbsql
comando está no caminho e se ele pode se conectar ao servidor SAP HANA.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
O exemplo a seguir mostra a saída quando o comando é executado corretamente:
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
Erro de privilégio insuficiente
Se a execução azacsnap
apresentar um erro como * 258: insufficient privilege
, verifique se o usuário tem os privilégios de usuário do banco de dados AZACSNAP apropriados configurados de acordo com o guia de instalação. Verifique os privilégios do usuário com o seguinte comando:
hdbsql -U AZACSNAP "select GRANTEE,GRANTEE_TYPE,PRIVILEGE,IS_VALID,IS_GRANTABLE from sys.granted_privileges " | grep -i -e GRANTEE -e azacsnap
O comando deve retornar a seguinte saída:
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"
O erro pode fornecer mais informações para ajudar a determinar os privilégios necessários do SAP HANA, como Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000
. Nesse caso, siga as instruções em SAP Help Portal - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, que recomendam o uso da seguinte consulta SQL para determinar os detalhes do privilégio necessário:
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","","","",""
No exemplo anterior, adicionar o DATABASE BACKUP ADMIN
privilégio ao usuário AZACSNAP do SYSTEMDB deve resolver o erro de privilégio insuficiente.