Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Se aplica a: ✔️ Máquinas virtuales Linux
Este artículo le ayuda a solucionar problemas del agente de barrera de Azure en un clúster de Pacemaker que se ejecuta en Red Hat Enterprise Linux (RHEL) y que usa el agente de barrera de Azure para implementar un dispositivo Shoot The Other Node en el dispositivo Head (STONITH).
Información general
El agente de barrera de Azure usa el programa python ubicado en /usr/sbin/fence_azure_arm. El agente de recursos de clúster (RA) usado para implementar un dispositivo STONITH llama a este programa con parámetros adecuados y lo usa para comunicarse con la plataforma Azure a través de llamadas API.
Como se introdujo en RHEL: cree un dispositivo STONITH, los roles personalizados proporcionan permisos para que el agente de barrera realice las siguientes acciones:
powerOff
start
Cuando se detecta una máquina virtual (VM) incorrecta, el agente de barrera usa las acciones anteriores para desactivar la máquina virtual y reiniciarla, lo que proporciona un dispositivo STONITH.
Síntomas
Al comprobar el estado del recurso del clúster mediante la ejecución del comando siguiente, los recursos del agente de barrera de Azure no se inician, notifican un "error desconocido" y muestran un Stopped
estado:
sudo pcs status
He aquí un ejemplo de salida de comandos:
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 conectividad del punto de conexión
Si comprueba el archivo de registro /var/log/messages , verá una salida similar al ejemplo siguiente:
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 los problemas de conectividad del punto de conexión, siga estos pasos:
Pruebe la conectividad a los puntos de conexión públicos de la API de administración de Azure.
Como se describe en Conectividad de punto de conexión público para máquinas virtuales mediante Azure Standard Load Balancer en escenarios de alta disponibilidad de SAP, es importante comprobar la conectividad saliente a los puntos de conexión públicos de la API de administración de Azure mediante las siguientes direcciones URL:
https://management.azure.com
https://login.microsoftonline.com
Use el siguiente
telnet
comando ,curl
onc
para probar la conectividad con ambas direcciones URL.Nota:
Telnet
ocurl
generalmente no está disponible para las máquinas virtuales del cliente.telnet management.azure.com 443
curl -v telnet://management.azure.com:443
nc -z -v management.azure.com 443
Compruebe que hay un nombre de usuario y una contraseña válidos configurados para el dispositivo STONITH.
Al usar la entidad de servicio:
Una razón común por la que se produce un error en el dispositivo STONITH es el uso de valores de nombre de usuario o contraseña no válidos. Para comprobarlo, use el programa fence_azure_arm como se muestra en el siguiente comando. Los valores de nombre de usuario y contraseña se crean según RHEL: creación de un dispositivo STONITH.
sudo /usr/sbin/fence_azure_arm --action=list --username='<username>' --password='<password>' --tenantId=<tenant ID> --resourceGroup=<resource group>
Nota:
Reemplace los
<username>
valores ,<password>
,<tenant ID>
y<resource group>
en consecuencia.Este comando debe devolver los nombres de nodo de las máquinas virtuales del clúster. Si el comando no se puede devolver, vuelva a ejecutarlo con la
-v
marca para habilitar la salida detallada y la marca para habilitar la-D
salida de depuración, como se muestra en el siguiente 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
Nota:
Reemplace los
<user name>
valores ,<password>
,<tenant ID>
y<resource group>
en consecuencia.Al usar la identidad administrada:
Para comprobar los valores de nombre de usuario y contraseña, ejecute el comando siguiente:
sudo /usr/sbin/fence_azure_arm --action=list --msi --resourceGroup=<resource group> -v -D /var/tmp/debug-fence.out
Nota:
Reemplace el
<resource group>
valor en consecuencia.
Causa 2: Errores de autenticación
Si comprueba el archivo de registro /var/log/messages , verá una salida similar al ejemplo siguiente:
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 los errores de autenticación, siga estos pasos:
Compruebe los detalles del inquilino de la aplicación Microsoft Entra, el identificador de aplicación, el inicio de sesión y la contraseña de Azure Portal.
Vuelva a configurar el agente de barrera en el clúster:
sudo pcs property set maintenance-mode=true sudo pcs cluster edit
Cambie los parámetros de los recursos del agente de barrera de Azure y, a continuación, guarde los cambios:
sudo pcs property set maintenance-mode=false
Compruebe el estado del clúster para confirmar que se han corregido los problemas del agente de barrera:
sudo pcs status
Causa 3: Permisos insuficientes
Si comprueba el archivo de registro /var/log/messages , verá una salida similar al ejemplo siguiente:
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 los problemas de permisos insuficientes, siga estos pasos:
Compruebe la definición de roles personalizados de tal
Linux Fence Agent Role
y como se describe en Creación de un rol personalizado para el agente de barrera. El nombre del rol puede variar para diferentes clientes.Compruebe si la aplicación del agente de barrera ha asignado este rol personalizado a la máquina virtual afectada. Si no es así, asigne el rol personalizado a la máquina virtual a través de Access Control.
Inicie el clúster de Pacemaker. Debe comenzar junto con el agente de barrera.
Compruebe el estado del clúster para confirmar que se han corregido los problemas del agente de barrera:
sudo pcs status
Causa 4: error de protocolo de enlace SSL
Si comprueba el archivo de registro /var/log/messages , verá una salida similar al ejemplo siguiente:
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')',),)) ]
Pruebe la conectividad desde los nodos afectados mediante la ejecución del comando siguiente openssl
:
openssl s_client -connect management.azure.com:443
Observe que la salida del comando no muestra el protocolo de enlace 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
Estas son las posibles causas del error de comprobación del certificado:
- Un dispositivo de red o firewall realiza la inspección de paquetes o cambia las conexiones de socket de capa transparente (TLS).
- Tamaño máximo de unidad de transmisión (MTU).
Si usa Azure Firewall para proteger los nodos, asegúrese de agregar las siguientes etiquetas a la aplicación o las reglas de red para corregir los problemas del agente de barrera:
Application Rules:
ApiManagement, AppServiceManagement, AzureCloud
Network Rules:
AppServiceEnvironment
Pasos siguientes
Si necesita ayuda adicional, abra una solicitud de soporte técnico con una copia del debug-fence.out
archivo porque es necesaria para solucionar problemas.
Aviso de declinación de responsabilidades sobre la información de terceros
Los productos de otros fabricantes que se mencionan en este artículo han sido creados por compañías independientes de Microsoft. Microsoft no ofrece ninguna garantía, ya sea implícita o de otro tipo, sobre la confiabilidad o el rendimiento de dichos productos.
Ponte en contacto con nosotros para obtener ayuda
Si tiene preguntas o necesita ayuda, cree una solicitud de soporte o busque consejo en la comunidad de Azure. También puede enviar comentarios sobre el producto con los comentarios de la comunidad de Azure.