Resolução de problemas na ferramenta Aplicação Azure Consistent Snapshot (AzAcSnap)

Este artigo descreve como resolver problemas ao utilizar a ferramenta Aplicação Azure Consistent Snapshot (AzAcSnap) para Azure NetApp Files e Azure Large Instance.

Pode encontrar vários problemas comuns ao executar comandos AzAcSnap. Siga as instruções para resolver os problemas. Se ainda tiver problemas, abra um Pedido de Serviço para Suporte da Microsoft a partir do portal do Azure e atribua o pedido à fila SAP HANA Large Instance.

Verifique ficheiros de registo, ficheiros de resultados e syslog

Algumas das melhores fontes de informação para investigar problemas do AzAcSnap são os ficheiros de registo, os ficheiros de resultados e o registo do sistema.

Ficheiros de registo

Os ficheiros de registo AzAcSnap são armazenados no diretório configurado pelo logPath parâmetro no ficheiro de configuração AzAcSnap. O nome de ficheiro de configuração padrão é azacsnap.json, e o valor padrão para logPath é ./logs, o que significa que os ficheiros de registo são escritos no diretório ./logs relativo ao local onde o azacsnap comando é executado. Se fizer a logPath localização absoluta, como /home/azacsnap/logs, azacsnap sempre despaga os registos em /home/azacsnap/logs, independentemente de onde você executar o azacsnap comando.

O nome de ficheiro de registo baseia-se no nome da aplicação, azacsnapo comando é executado com -c, como backup, testou , ou detailso nome de ficheiro de configuração padrão, como azacsnap.json. Com o -c backup comando, um nome de arquivo de registo predefinido seria azacsnap-backup-azacsnap.log, escrito no diretório configurado por logPath.

Esta convenção de nomeação permite que vários ficheiros de configuração, um por base de dados, ajudem a localizar os ficheiros de registo associados. Se o nome de ficheiro de configuração for SID.json, então o nome de ficheiro de registo ao utilizar a opção azacsnap -c backup --configfile SID.json é azacsnap-backup-SID.log.

Ficheiros de resultados e syslog

Para o comando, o -c backup AzAcSnap escreve para um ficheiro *.resultado e para o registo do sistema, /var/log/messagesutilizando o logger comando. O nome de ficheiro *.resultado tem o mesmo nome base que o ficheiro de registo, e vai para o mesmo local. O ficheiro *.resultado é um simples ficheiro de saída de uma linha, tal como o seguinte exemplo:

Database # 1 (PR1) : completed ok

Aqui está a saída exemplo de /var/log/messages:

Dec 17 09:01:13 azacsnap-rhel azacsnap: Database # 1 (PR1) : completed ok

Resolução de problemas falhou no comando de "armazenamento de testes"

O comando azacsnap -c test --test storage pode não estar completo com sucesso.

Verificar firewalls de rede

A comunicação com Azure NetApp Files pode falhar ou sair. Para resolver problemas, certifique-se de que as regras de firewall não estão a bloquear 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

Utilize Cloud Shell para validar ficheiros de configuração

Pode testar se o principal de serviço está configurado corretamente utilizando Cloud Shell através do portal do Azure. Utilizando testes Cloud Shell para uma configuração correta, contornando os controlos de rede dentro de uma rede virtual ou de uma máquina virtual (VM).

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

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

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

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

  5. Extraia o binário para testes.

    ./azacsnapinstaller -X -d .
    

    Os resultados parecem ser 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. Utilize o ícone de upload/descarregamento de Cloud Shell para carregar o ficheiro principal do serviço, azureauth.json e o ficheiro de configuração AzAcSnap, como azacsnap.json, para testes.

  7. Fazer o storage teste.

    ./azacsnap -c test --test storage
    

    Nota

    O comando de teste pode demorar cerca de 90 segundos a ser concluído.

Teste falhado em Azure Large Instance

O seguinte exemplo de erro é de correr azacsnap em Azure Large Instance:

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 resolver este erro, não responda yes. Certifique-se de que o seu endereço IP de armazenamento está correto. Pode confirmar o endereço IP de armazenamento com a equipa de operações da Microsoft.

O erro geralmente aparece quando o utilizador de armazenamento Azure Large Instance não tem acesso ao armazenamento subjacente. Para determinar se o utilizador de armazenamento tem acesso ao armazenamento, executar o ssh comando para validar a 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

Teste falhado com Azure NetApp Files

O seguinte exemplo de erro é de correr azacsnap com 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']

Para resolver este erro:

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

  2. Verifique o ficheiro de registo, por exemplo, logs/azacsnap-test-azacsnap.log, para ver se o ficheiro principal do serviço tem o conteúdo correto. A seguinte saída do ficheiro de registo 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 ficheiro de registo para ver se o principal de serviço expirou. O exemplo do ficheiro de registo que se segue mostra que as chaves secretas do cliente estão caducadas.

    [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://docs.microsoft.com/azure/active-directory/develop/active-directory-certificate-credentials
    

Dica

Para obter mais informações sobre a geração de um novo Diretor de Serviço, consulte a secção Ativar a comunicação com o Armazenamento no guia de ferramentas Install Aplicação Azure Consistent Snapshot.

Resolução de problemas falhou comando 'test hana'

O comando azacsnap -c test --test hana pode não estar completo com sucesso.

Comando não encontrado

Ao configurar a comunicação com o SAP HANA, o hdbuserstore programa é utilizado para criar as definições de comunicação seguras. O AzAcSnap também requer o hdbsql programa para todas as comunicações com o SAP HANA. Estes programas são geralmente em /usr/seiva/<SID>/SYS/exe/hdb/ ou /usr/sap/hdbclient e devem estar no do $PATHutilizador .

  • No exemplo seguinte, o hdbsql comando não está no do $PATHutilizador .

    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 seguinte adiciona temporariamente o hdbsql comando ao do $PATHutilizador, permitindo azacsnap executar corretamente.

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

Certifique-se de que o instalador adicionou a localização destes ficheiros ao utilizador do $PATHAzAcSnap .

Nota

Para adicionar permanentemente ao do $PATHutilizador, atualize o ficheiro $HOME/perfil do utilizador.

Valor inválido para chave

Esta saída de comando mostra que a chave de ligação não foi corretamente configurada 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 Começar com a AzAcSnap.

Teste com falha

Ao validar a comunicação com o SAP HANA, executando um teste com azacsnap -c test --test hana, poderá 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 ficheiro de configuração, por exemplo azacsnap.json, para cada instância HANA, para garantir que os valores da base de dados SAP HANA estão corretos.

  2. Executar o seguinte comando para verificar se o hdbsql comando está no caminho e que pode ligar-se 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 funciona 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 o funcionamento azacsnap apresentar um erro como * 258: insufficient privilege, verifique se o utilizador dispõe dos privilégios adequados de base de dados AZACSNAP configurado de acordo com o guia de instalação. Verifique os privilégios do utilizador 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 devolver 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 SAP HANA necessários, tais como Detailed info for this error can be found with guid '99X9999X99X9999X99X99XX999XXX999' SQLSTATE: HY000. Neste caso, siga as instruções no SAP Help Portal - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, que recomendam a utilização da seguinte consulta SQL para determinar os detalhes do privilégio exigido:

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, a adição do DATABASE BACKUP ADMIN privilégio ao utilizador AZACSNAP do SYSTEMDB deve resolver o erro de privilégio insuficiente.

Passos seguintes