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 , todas as linhas de comando que começam com #> são executadas como rootazacsnap 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, alterando o perfil do utilizador (por exemplo, TMPDIR$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, sempre enviará os logs para /home/azacsnap/logs, azacsnap independentemente de onde você executar o azacsnap comando.

O nome do arquivo de log é baseado no nome do aplicativo, , o comando executado com , como backup, ou details, e o nome do arquivo de configuração padrão, testazacsnapcomo azacsnap.json.-c Com o -c backup comando, um nome de arquivo de log padrão seria azacsnap-backup-azacsnap.log, gravado no diretório configurado pelo 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.

  1. Exemplo de conclusão bem-sucedida:

    1. Saída para o arquivo *.result :

      Database # 1 (PR1) : completed ok
      
    2. Saída para /var/log/messages:

      Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok
      
  2. Exemplo de saída onde ocorreu uma falha e o AzAcSnap capturou a falha:

    1. Saída para o arquivo *.result :

      Database # 1 (PR1) : failed
      
    2. 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).

  1. No portal do Azure, abra uma sessão do Cloud Shell .

  2. Faça um diretório de teste, por exemplo mkdir azacsnap.

  3. Mude para o diretório azacsnap e baixe a versão mais recente do AzAcSnap.

    wget https://aka.ms/azacsnapinstaller
    
  4. Torne o instalador executável, por exemplo chmod +x azacsnapinstaller.

  5. 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
    
  6. 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.

  7. 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:

  1. Verifique a existência do arquivo principal de serviço, azureauth.json, conforme definido no arquivo de configuração azacsnap.json.

  2. Verifique o arquivo de log, por exemplo, logs/azacsnap-test-azacsnap.log, para ver se o arquivo principal 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.
    
  3. 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 , $PATHpermitindo azacsnap 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 , atualize o arquivo $PATH$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 hanao , 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:

  1. 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.

  2. 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 privilégio ao usuário AZACSNAP do SYSTEMDB deve resolver o DATABASE BACKUP ADMIN erro de privilégio insuficiente.

Próximos passos