Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Aplica-se a: ✔️ VMs linux
Este artigo ajuda você a solucionar problemas do agente de isolamento do Azure em um cluster do Pacemaker executado no RHEL (Red Hat Enterprise Linux) e que usa o agente de isolamento do Azure para implementar um dispositivo STONITH (Shoot The Other Node in the Head).
Visão geral
O agente de limite do Azure usa o programa Python localizado em /usr/sbin/fence_azure_arm. O RA (agente de recursos de cluster) usado para implementar um dispositivo STONITH chama esse programa com parâmetros apropriados e o usa para se comunicar com a plataforma do Azure por meio de chamadas à API.
Conforme introduzido em RHEL – Criar um dispositivo STONITH, as funções personalizadas fornecem permissões para que o agente fence execute as seguintes ações:
powerOff
start
Quando uma VM (máquina virtual) não íntegra é detectada, o agente fence usa as ações anteriores para desligar a VM e reiniciá-la, fornecendo assim um dispositivo STONITH.
Sintomas
Quando você verifica o status do recurso de cluster executando o comando a seguir, os recursos do agente de limite do Azure falham ao iniciar, relatam um "erro desconhecido" e mostram um Stopped
estado:
sudo pcs status
Aqui está um exemplo de saída de comando:
Cluster name: nw1-azr
Cluster Summary:
* Stack: corosync
* Current DC: RHEL-SAP01 (version 2.0.5-9.el8_4.8-ba59be7122) - partition with quorum
* Last updated: Fri Jun 7 01:34:38 2023
* Last change: Fri Jun 7 01:34:23 2023 by root via cibadmin on RHEL-SAP01
* 2 nodes configured
* 3 resource instances configured
Node List:
* Online: [ RHEL-SAP01 RHEL-SAP02 ]
Full List of Resources:
* rsc_st_azure (stonith:fence_azure_arm): Stopped
* Clone Set: health-azure-events-clone [health-azure-events]:
* Started: [ RHEL-SAP01 RHEL-SAP02 ]
Failed Resource Actions:
* rsc_st_azure_start_0 on RHEL-SAP01 'error' (1): call=20, status='complete', exitreason='', last-rc-change='2023-06-04 01:34:24Z', queued=0ms, exec=4041ms
* rsc_st_azure_start_0 on RHEL-SAP02 'error' (1): call=14, status='complete', exitreason='', last-rc-change='2023-06-04 01:34:28Z', queued=0ms, exec=4243ms
Daemon Status:
corosync: active/disabled
pacemaker: active/disabled
pcsd: active/enabled
Causa 1: problemas de conectividade de ponto de extremidade
Se você verificar o arquivo de log /var/log/messages , verá uma saída semelhante ao exemplo a seguir:
2021-03-15T20:23:15.441083+00:00 NodeName pacemaker-fenced[2550]: warning: fence_azure_arm[21839] stderr: [ 2021-03-15 20:23:15,398 ERROR: Failed: Azure Error: AuthenticationFailed ]
2021-03-15T20:23:15.441260+00:00 NodeName pacemaker-fenced[2550]: warning: fence_azure_arm[21839] stderr: [ Message: Authentication failed. ]
2021-03-15T20:23:15.441668+00:00 NodeName pacemaker-fenced[2550]: warning: fence_azure_arm[21839] stderr: [ ]
Para solucionar problemas de conectividade do ponto de extremidade, siga estas etapas:
Teste a conectividade com os pontos de extremidade públicos da API de gerenciamento do Azure.
Conforme descrito em Conectividade de ponto de extremidade público para Máquinas Virtuais usando o Azure Standard Load Balancer em cenários de alta disponibilidade SAP, é importante verificar a conectividade de saída com os pontos de extremidade públicos da API de gerenciamento do Azure usando as seguintes URLs:
https://management.azure.com
https://login.microsoftonline.com
Use o comando ,
curl
ounc
a seguirtelnet
para testar a conectividade com ambas as URLs.Observação
Telnet
oucurl
geralmente não está disponível para VMs do cliente.telnet management.azure.com 443
curl -v telnet://management.azure.com:443
nc -z -v management.azure.com 443
Verifique se um nome de usuário e senha válidos estão configurados para o dispositivo STONITH.
Ao usar a entidade de serviço:
Um motivo comum pelo qual o dispositivo STONITH falha é o uso de valores de nome de usuário ou senha inválidos. Para verificar isso, use o programa fence_azure_arm conforme mostrado no comando a seguir. Os valores de nome de usuário e senha são criados de acordo com RHEL – Criar um dispositivo STONITH.
sudo /usr/sbin/fence_azure_arm --action=list --username='<username>' --password='<password>' --tenantId=<tenant ID> --resourceGroup=<resource group>
Observação
Substitua os
<username>
valores ,<password>
,<tenant ID>
, e de<resource group>
acordo.Esse comando deve retornar os nomes de nó das VMs no cluster. Se o comando não retornar, execute-o novamente com o sinalizador para habilitar a
-v
saída detalhada e o-D
sinalizador para habilitar a saída de depuração, conforme mostrado no seguinte comando:sudo /usr/sbin/fence_azure_arm --action=list --username='<user name>' --password='<password>' --tenantId=<tenant ID> --resourceGroup=<resource group> -v -D /var/tmp/debug-fence.out
Observação
Substitua os
<user name>
valores ,<password>
,<tenant ID>
, e de<resource group>
acordo.Ao usar a Identidade Gerenciada:
Verifique os valores de nome de usuário e senha executando o seguinte comando:
sudo /usr/sbin/fence_azure_arm --action=list --msi --resourceGroup=<resource group> -v -D /var/tmp/debug-fence.out
Observação
Substitua o
<resource group>
valor de acordo.
Causa 2: falhas de autenticação
Se você verificar o arquivo de log /var/log/messages , verá uma saída semelhante ao exemplo a seguir:
2020-04-06T10:06:47.779470+00:00 VM1 pacemaker-controld[29309]: notice: Result of probe operation for rsc_st_azure on VM1: 7 (not running)
2020-04-06T10:06:51.045519+00:00 VM1 pacemaker-execd[29306]: notice: executing - rsc:rsc_st_azure action:start call_id:52
2020-04-06T10:06:52.826702+00:00 VM1 /fence_azure_arm: Failed: AdalError: Get Token request returned http error: 400 and server response: {"error":"unauthorized_client","error_description":"AADSTS700016: Application with identifier '<application ID>'
was not found in the directory '<directory name>'. This can happen if the application has not been installed by the administrator of the tenant or consented to by any user in the tenant.
You may have sent your authentication request to the wrong tenant.\r\nTrace ID: 9d86f824-52c1-45a8-b24f-c81473122d00\r\nCorrelation ID: 7dd6de5d-1d6a-4950-be8b-9a2cb2df8553\r\nTimestamp:2020-04-06 10:06:52Z","error_codes":[700016],"timestamp":"2020-04-06 10:06:52Z","trace_id":"9d86f824-52c1-45a8-b24f-c81473122d00",
"correlation_id":"7dd6de5d-1d6a-4950-be8b-9a2cb2df8553","error_uri":"https://login.microsoftonline.com/error?code=700016 "}
Para solucionar problemas de falhas de autenticação, siga estas etapas:
Verifique a ID do locatário do aplicativo Microsoft Entra, a ID do aplicativo, a entrada e os detalhes da senha no portal do Azure.
Reconfigure o agente fence no cluster:
sudo pcs property set maintenance-mode=true sudo pcs cluster edit
Altere os parâmetros dos recursos do agente de limite do Azure e salve as alterações:
sudo pcs property set maintenance-mode=false
Verifique o status do cluster para confirmar se os problemas do agente fence foram corrigidos:
sudo pcs status
Causa 3: permissões insuficientes
Se você verificar o arquivo de log /var/log/messages , verá uma saída semelhante ao exemplo a seguir:
Apr 2 00:49:57 heeudpgscs01 stonith-ng[105424]: warning: fence_azure_arm[109393] stderr: [ 2020-04-02 00:49:56,978 ERROR: Failed: Azure Error: AuthorizationFailed ]
Apr 2 00:49:57 heeudpgscs01 stonith-ng[105424]: warning: fence_azure_arm[109393] stderr: [ Message: The client '<client ID>' with object id '<object ID>' does not have authorization to perform action 'Microsoft.Compute/virtualMachines/read' over scope '/subscriptions/<subscription ID>/resourceGroups/<resource group name>/providers/Microsoft.Compute' or the scope is invalid. If access was recently granted, please refresh your credentials. ]
Para solucionar problemas de permissões insuficientes, siga estas etapas:
Verifique a definição de função personalizada para o
Linux Fence Agent Role
conforme descrito em Criar uma função personalizada para o agente de limite. O nome da função pode variar para diferentes clientes.Verifique se o aplicativo do agente fence atribuiu essa função personalizada à VM afetada. Caso contrário, atribua a função personalizada à VM por meio do Controle de Acesso.
Inicie o cluster do Pacemaker. Deve começar junto com o agente de cerca.
Verifique o status do cluster para confirmar se os problemas do agente fence foram corrigidos:
sudo pcs status
Causa 4: falha de handshake SSL
Se você verificar o arquivo de log /var/log/messages , verá uma saída semelhante ao exemplo a seguir:
warning: fence_azure_arm[28114] stderr: [ 2021-06-24 07:59:29,832 ERROR: Failed: Error occurred in request., SSLError: HTTPSConnectionPool(host='management.azure.com ', port=443): Max retries exceeded with url: /subscriptions/<subscription ID>/resourceGroups/<resource group>/providers/Microsoft.Compute/virtualMachines?api-version=2019-03-01 (Caused by SSLError(SSLError('bad handshake: SysCallError(-1, 'Unexpected EOF')',),)) ]
Teste a conectividade dos nós afetados executando o seguinte openssl
comando:
openssl s_client -connect management.azure.com:443
Você observa que a saída do comando não mostra o handshake de certificado completo:
CONNECTED(00000003)
write:errno=0
---
no peer certificate available
---
No client certificate CA names sent
---
SSL handshake has read 0 bytes and written 176 bytes
Verification: OK
---
New, (NONE), Cipher is (NONE)
Secure Renegotiation IS NOT supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : 0000
Session-ID:
Session-ID-ctx:
Master-Key:
PSK identity: None
PSK identity hint: None
SRP username: None
Start Time: 1625235527
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
Aqui estão as possíveis causas da falha na verificação do certificado:
- Um dispositivo de rede ou firewall executa a inspeção de pacotes ou altera as conexões TLS (Transparent Layer Socket).
- Tamanho máximo da unidade de transmissão (MTU).
Se você estiver usando o Firewall do Azure para proteger os nós, adicione as seguintes marcas ao aplicativo ou às regras de rede para corrigir os problemas do agente de limite:
Application Rules:
ApiManagement, AppServiceManagement, AzureCloud
Network Rules:
AppServiceEnvironment
Próximas etapas
Se precisar de mais ajuda, abra uma solicitação de suporte com uma cópia do debug-fence.out
arquivo, pois ela é necessária para fins de solução de problemas.
Aviso de isenção de responsabilidade para informações de terceiros
Os produtos de terceiros mencionados neste artigo são produzidos por empresas independentes da Microsoft. A Microsoft não oferece nenhuma garantia, implícita ou não, do desempenho ou da confiabilidade desses produtos.
Entre em contato conosco para obter ajuda
Se você tiver dúvidas ou precisar de ajuda, crie uma solicitação de suporte ou peça ajuda à comunidade de suporte do Azure. Você também pode enviar comentários sobre o produto para a comunidade de comentários do Azure.