Resolver problemas da ferramenta instantâneo consistente do Aplicação Azure (AzAcSnap)
Este artigo descreve como resolver problemas ao utilizar a ferramenta instantâneo consistente (AzAcSnap) Aplicação Azure para Azure NetApp Files e a Instância Grande do Azure.
Poderá encontrar vários problemas comuns ao executar comandos do 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 de Instâncias Grandes do SAP HANA.
O comando do AzAcSnap não é executado
Em alguns casos, o AzAcSnap não inicia devido ao ambiente do utilizador.
Falha ao criar CoreCLR
O AzAcSnap é escrito em .NET e o CoreCLR é um motor de execução para aplicações .NET, executando funções como o carregamento de código de byte IL, compilação para o código do computador e libertação da memória. Neste caso, existe um problema ambiental a impedir o arranque do motor CoreCLR.
Uma causa comum é permissões limitadas ou configuração ambiental para o utilizador do sistema operativo AzAcSnap, normalmente "azacsnap".
O erro Failed to create CoreCLR, HRESULT: 0x80004005
pode ser causado pela falta de acesso de escrita do utilizador azacsnap ao TMPDIR
sistema .
Nota
Todas as linhas de comandos que começam com #
são comandos executados como root
, todas as linhas de comandos que começam por >
são executadas como azacsnap
utilizador.
Verifique a /tmp
propriedade e as permissões (tenha em atenção neste exemplo que apenas o root
utilizador pode ler e escrever /tmp
em ):
# 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 utilizador 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 do /tmp
diretório, crie um utilizador específico TMPDIR
.
Crie um TMPDIR
para o azacsnap
utilizador:
> 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 dos TMPDIR
utilizadores teria de ser permanente ao alterar o perfil do utilizador (por exemplo $HOME/.bashrc
, ou $HOME/.bash_profile
). Também seria necessário limpar o reinício do TMPDIR
sistema, que normalmente é automático para /tmp
.
Verificar ficheiros de registo, ficheiros de resultados e syslog
Algumas das melhores origens de informações 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 do AzAcSnap são armazenados no diretório configurado pelo logPath
parâmetro no ficheiro de configuração do AzAcSnap. O nome de ficheiro de configuração predefinido é azacsnap.json e o valor predefinido 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 uma logPath
localização absoluta, como /home/azacsnap/logs, azacsnap
produz sempre os registos em /home/azacsnap/logs, independentemente de onde executar o azacsnap
comando.
O nome do ficheiro de registo baseia-se no nome da aplicação, azacsnap
, no comando executado com -c
, como backup
, test
ou details
, e no nome de ficheiro de configuração predefinido, como azacsnap.json. Com o -c backup
comando , um nome de ficheiro de registo predefinido seria azacsnap-backup-azacsnap.log, escrito no diretório configurado por logPath
.
Esta convenção de nomenclatura permite vários ficheiros de configuração, um por base de dados, para ajudar a localizar os ficheiros de registo associados. Se o nome do ficheiro de configuração for SID.json, o nome do 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 num ficheiro *.result . O objetivo do ficheiro *.result é fornecer uma confirmação de alto nível de êxito/falha. Se o ficheiro *.result estiver vazio, assuma a falha. Qualquer saída escrita no ficheiro *.result também é exportada para o registo do sistema (por exemplo, /var/log/messages
) com o logger
comando . O nome de ficheiro *.result tem o mesmo nome base que o ficheiro de registo para permitir a correspondência do ficheiro de resultado com o ficheiro de configuração e o ficheiro de registo de cópia de segurança. O ficheiro *.result entra na mesma localização que os outros ficheiros de registo e é um ficheiro de saída de uma linha simples.
Exemplo de conclusão com êxito:
Saída para o ficheiro *.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 em que ocorreu uma falha e AzAcSnap captou a falha:
Saída para o ficheiro *.result :
Database # 1 (PR1) : failed
Saída para
/var/log/messages
:Dec 19 09:00:30 azacsnap-rhel azacsnap: Database # 1 (PR1) : failed
Resolver problemas com o comando "test storage" falhado
O comando azacsnap -c test --test storage
poderá não ser concluído com êxito.
Verificar firewalls de rede
A comunicação com Azure NetApp Files pode falhar ou exceder o limite de tempo. Para resolver problemas, confirme que as regras da 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
Utilizar Cloud Shell para validar ficheiros de configuração
Pode testar se o principal de serviço está configurado corretamente com Cloud Shell através do portal do Azure. Utilizar Cloud Shell testes para a configuração correta, ignorando os controlos de rede numa rede virtual ou máquina virtual (VM).
Na portal do Azure, abra uma sessão de Cloud Shell.
Crie um diretório de teste, por exemplo
mkdir azacsnap
.Mude para o diretório azacsnap e transfira 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 têm o seguinte aspeto:
+-----------------------------------------------------------+ | Azure Application Consistent Snapshot Tool Installer | +-----------------------------------------------------------+ |-> Installer version '5.0.2_Build_20210827.19086' |-> Extracting commands into .. |-> Cleaning up .NET extract dir
Utilize o ícone carregar/transferir Cloud Shell para carregar o ficheiro do principal de serviço, azureauth.json, e o ficheiro de configuração do AzAcSnap, como azacsnap.json, para teste.
Execute o
storage
teste../azacsnap -c test --test storage
Nota
A conclusão do comando de teste pode demorar cerca de 90 segundos.
Teste falhado na Instância Grande do Azure
O exemplo de erro seguinte é 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 resolver este erro, não responda yes
. Certifique-se de que o endereço IP de armazenamento está correto. Pode confirmar o endereço IP de armazenamento com a equipa de operações da Microsoft.
Normalmente, o erro aparece quando o utilizador de armazenamento da Instância Grande do Azure não tem acesso ao armazenamento subjacente. Para determinar se o utilizador de armazenamento tem acesso ao armazenamento, execute o ssh
comando para validar a comunicação com a plataforma de armazenamento.
ssh <StorageBackupname>@<Storage IP address> "volume show -fields volume"
O exemplo seguinte mostra o resultado esperado:
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 com falha com Azure NetApp Files
O exemplo de erro seguinte é a execução 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:
Verifique a existência do ficheiro do principal de serviço, azureauth.json, conforme definido no ficheiro de configuração azacsnap.json .
Verifique o ficheiro de registo, por exemplo, logs/azacsnap-test-azacsnap.log, para ver se o ficheiro do principal de 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.
Verifique o ficheiro de registo para ver se o principal de serviço expirou. O seguinte exemplo de ficheiro de registo 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
Dica
Para obter mais informações sobre como gerar um novo Principal de Serviço, consulte a secção Ativar a comunicação com o Armazenamento no guia da ferramenta Instalar Aplicação Azure Instantâneo Consistente.
Resolver problemas com o comando "test hana" falhado
O comando azacsnap -c test --test hana
poderá não ser concluído com êxito.
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 segura. O AzAcSnap também requer o hdbsql
programa para todas as comunicações com o SAP HANA. Normalmente, estes programas estão em /usr/sap/<SID>/SYS/exe/hdb/ ou /usr/sap/hdbclient e têm de estar no $PATH
.
No exemplo seguinte, o
hdbsql
comando não está no$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 seguinte adiciona temporariamente o
hdbsql
comando a$PATH
, permitindo queazacsnap
seja executado 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 $PATH
AzAcSnap.
Nota
Para adicionar permanentemente ao ficheiro do utilizador $PATH
, atualize o ficheiro $HOME/.profile do utilizador.
Valor inválido para chave
Esta saída de comando mostra que a chave de ligaçã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
, veja Introdução ao AzAcSnap.
Teste com falha
Ao validar a comunicação com o SAP HANA ao executar um teste com azacsnap -c test --test hana
o , 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:
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.
Execute o seguinte comando para verificar se o
hdbsql
comando está no caminho e se consegue ligar ao servidor SAP HANA.hdbsql -n 172.18.18.50 - i 00 -d SYSTEMDB -U AZACSNAP "\s"
O exemplo seguinte mostra o resultado 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 utilizador tem os privilégios de utilizador da base de dados AZACSNAP adequados configurados 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 o seguinte resultado:
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
. Neste caso, siga as instruções no Portal de Ajuda do SAP - GET_INSUFFICIENT_PRIVILEGE_ERROR_DETAILS, que recomendam a utilização 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 utilizador AZACSNAP do SYSTEMDB deve resolver o erro de privilégio insuficiente.