Solución de problemas de instancias de rol de Azure Cloud Services (soporte extendido) que no se inician
En este artículo se describe cómo solucionar errores de inicio en instancias de rol de Azure Cloud Services (soporte extendido).
Lista de comprobación para la solución de problemas
Elija entre las siguientes opciones para diagnosticar los problemas que se producen en las instancias de rol.
Opción 1: Desactivar errores personalizados
Para ver la información de error completa, abra el archivo Web.config para el rol web, establezca el modo de error personalizado en y, a continuación, vuelva a Off
implementar el servicio:
En Visual Studio, abra la solución.
En el Explorador de soluciones, abra el archivo Web.config.
En la
system.web
sección , agregue el siguiente código XML:<customErrors mode="Off" />
Guarde el archivo.
Vuelva a empaquetar y volver a implementar el servicio.
Después de volver a implementar el servicio, los mensajes de error que pueda recibir sobre el servicio incluirán los nombres de ensamblados o archivos DLL que faltan.
Opción 2: Usar PowerShell para ver el estado de la instancia de rol
Para obtener información sobre el estado en tiempo de ejecución de la instancia de rol, ejecute el cmdlet Get-AzCloudServiceRoleInstanceView :
$roleInstanceView = @{
CloudServiceName = "<cloud-service-name>"
ResourceGroupName = "<resource-group-name>"
RoleInstanceName = "WebRole1_IN_0"
}
Get-AzCloudServiceRoleInstanceView @roleInstanceView
El estado de la instancia de rol se muestra en la primera columna, como se muestra en la salida de ejemplo siguiente:
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
Opción 3: Usar el Azure Portal para ver el estado de la instancia de rol
Para ver información de estado sobre una instancia de rol en el Azure Portal, siga estos pasos:
En el Azure Portal, busque y seleccione Servicios en la nube (soporte extendido).
En la lista de servicios en la nube, seleccione el nombre del servicio en la nube.
En el panel de menús, busque en Configuración y, a continuación, seleccione Roles e instancias.
Seleccione el nombre de la instancia de rol.
En el panel de instancia de rol, anote el estado de la instancia de rol en el campo Estado .
Opción 4: Usar Escritorio remoto para ver la información de error
Para acceder al rol y ver la información de error completa, siga estos pasos para usar el Protocolo de Escritorio remoto (RDP):
Agregue la extensión de Escritorio remoto para Azure Cloud Services (soporte extendido).
En el Azure Portal, cuando la instancia del servicio en la nube muestra un estado Listo, use Escritorio remoto para iniciar sesión en el servicio en la nube. Para obtener más información, consulte Conexión a instancias de rol mediante Escritorio remoto.
Inicie sesión en la máquina virtual (VM) con las credenciales que usó para configurar Escritorio remoto.
Abra una ventana del símbolo del sistema .
Ejecute el comando ipconfig . Copie el valor devuelto para la dirección IPv4.
Abra un explorador web.
En la barra de direcciones, pegue la dirección IPv4 y anexe una barra diagonal y el nombre del archivo predeterminado de la aplicación web. Por ejemplo,
http://<ipv4-address>/default.aspx
.
Si va al sitio web ahora, verá mensajes de error que contienen más información. Aquí le mostramos un ejemplo:
Error del servidor en la aplicación "/".
No se pudo cargar el archivo o ensamblado "Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>" o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
Descripción: Se produjo una excepción no controlada durante la ejecución de la solicitud web actual. Revise el seguimiento de la pila para obtener más información sobre el error y dónde se originó en el código.
Detalles de la excepción: System.IO.FileNotFoundException
Opción 5: Usar el emulador de proceso
Puede usar el emulador de Proceso de Azure para diagnosticar y solucionar problemas de dependencias que faltan y errores deWeb.config . Para obtener mejores resultados cuando use este método para diagnosticar problemas, use un equipo o una máquina virtual que tenga una instalación limpia de Windows.
Para diagnosticar problemas mediante el emulador de Proceso de Azure:
Instale el SDK de Azure.
En el equipo de desarrollo, compile el proyecto de servicio en la nube.
En Explorador de archivos, en el proyecto de servicio en la nube, vaya a la carpeta bin\debug.
Copie la carpeta .csx y el archivo .cscfg en el equipo que usa para depurar problemas.
En el equipo limpio, abra una ventana del símbolo del sistema del SDK de Azure.
En el símbolo del sistema, ejecute el siguiente
csrun
comando:csrun.exe /devstore:start
Ejecute el siguiente comando:
run csrun <path-to-.csx-folder> <path-to-.cscfg-file> /launchBrowser
Cuando se inicia el rol, el explorador web muestra información detallada del error.
Si se requiere más diagnóstico, puede usar herramientas de solución de problemas estándar de Windows.
Opción 6: Usar IntelliTrace
Nota:
No se puede usar IntelliTrace en Visual Studio 2022. IntelliTrace sigue estando disponible si usa Visual Studio 2019, 2017 o 2015.
Para los roles de trabajo y web que usan .NET Framework 4, puede usar IntelliTrace. IntelliTrace está disponible en Visual Studio Enterprise.
Para implementar el servicio en la nube mientras IntelliTrace está activado:
Compruebe que azure SDK 1.3 o una versión posterior están instalados.
En Visual Studio, implemente la solución. Al configurar la implementación, active la casilla Habilitar IntelliTrace para roles de .NET 4 .
Una vez iniciada la instancia de rol, abra el Explorador de servidores.
Expanda el nodo Azure\Cloud Services.
Para enumerar las instancias de rol, expanda la implementación. A continuación, haga clic con el botón derecho en una instancia de rol.
Seleccione Ver registros de IntelliTrace.
En Resumen de IntelliTrace, vaya a Datos de excepción y expanda ese nodo.
En la lista de excepciones, busque una fila que contenga un valor de columna Type de System.IO.FileNotFoundException. El valor de la columna Message correspondiente debe ser similar al texto siguiente:
No se pudo cargar el archivo o ensamblado "Microsoft.WindowsAzure.StorageClient, Version=1.1.0.0, Culture=neutral, PublicKeyToken=<16-digit-hexadecimal-string>" o una de sus dependencias. El sistema no puede encontrar el archivo especificado.
Causa 1: Se produce un error en la operación del servicio en la nube debido a RoleInstanceStartupTimeoutError
Es posible que una o varias de las instancias de rol de Azure Cloud Services (soporte extendido) sean lentas para iniciarse. O bien, la instancia de rol podría reciclarse o bloquearse en un estado ocupado y no iniciarse según lo esperado. En esta situación, aparece el mensaje de RoleInstanceStartupTimeoutError
error de la aplicación de rol.
La aplicación de roles contiene dos partes que pueden provocar el reciclaje de roles:
- Tareas de inicio
- Código de rol (Implementación de RoleEntryPoint)
Si el rol se detiene, el agente de plataforma como servicio (PaaS) reinicia el rol.
Para determinar si el problema se debe a una tarea de inicio, siga estos pasos:
Intente usar Escritorio remoto para conectarse a la instancia de rol problemática.
Después de conectarse a la instancia de rol, seleccione Inicio y, a continuación, busque y seleccione Administrador de tareas.
Para ver una lista de procesos, seleccione la pestaña Detalles en el Administrador de tareas.
Compruebe si hay procesos para WaIISHost.exe (para un WebRole) o WaWorkerHost.exe (para un WorkerRole). Si faltan ambos procesos, es probable que se produzca un error en una tarea de inicio.
¿Pudo comprobar que el problema se debe a una tarea de inicio? Si es así, puede aplicar la siguiente solución. Sin embargo, la solución solo está disponible si la tarea de inicio es simple o en primer plano. La solución no se aplica a las tareas de inicio en segundo plano. Se ejecutan de forma asincrónica en paralelo con el inicio del rol.
Solución: Depuración del script de tarea de inicio
Para solucionar un error de tarea de inicio, depure el script que se ejecuta durante el inicio de la máquina virtual. Este script de tarea de inicio es el archivo Startup.cmd . Para ayudar a investigar los problemas del script, puede elegir entre las siguientes opciones:
Vea el archivo de registro C:\Resources\WaHostBootstrapper.log . Este archivo es el registro del proceso deWaHostBootstrapper.exe . Este proceso es responsable de las tareas de inicio. Se describe en el flujo de trabajo de la arquitectura de máquina virtual clásica de Windows Azure. A continuación, busque cualquier error o excepción que implique la ejecución de Startup.cmd. Compruebe especialmente si el código de salida es 0. Si no es así, la tarea de inicio ha finalizado, pero tiene errores. Si no hay registros relacionados con el código de salida del script, la tarea de inicio sigue ejecutándose.
Si el script de tarea de inicio no se puede ejecutar libremente en el entorno de producción debido al impacto empresarial esperado, personalice el mecanismo de registro en la línea de comandos. Por ejemplo, puede redirigir la salida de la información de clave de un comando de script a un archivo. Una manera de hacerlo es anexar
> "%TEMP%\StartupLog.txt"
al final del comando.En la línea de comandos, ejecute manualmente el script de tarea de inicio. Las ubicaciones de este script para los roles WebRole o WorkerRole se muestran en la tabla siguiente.
Role Ubicación del script WebRole E:\approot\bin\Startup.cmd WorkerRole E:\approot\Startup.cmd
Causa 2: Faltan archivos DLL o ensamblados
Las instancias de rol que no responden y las instancias de rol que se producen entre estados pueden deberse a la falta de archivos DLL o ensamblados.
Estos son algunos síntomas de la falta de archivos DLL o ensamblados:
La instancia de rol recorre los estados Initializing, Busy y Stopping .
La instancia de rol se ha movido al estado Listo , pero la página no está visible en la aplicación web.
Si un sitio web se implementa en un rol web y, pero falta un archivo DLL, podría mostrar el siguiente mensaje de error en tiempo de ejecución del servidor.
Error del servidor en la aplicación "/".
Error en tiempo de ejecución
Descripción: Error de aplicación en el servidor. La configuración de error personalizada actual para esta aplicación impide que los detalles del error de la aplicación se vean de forma remota (por motivos de seguridad). Sin embargo, los exploradores que se ejecutan en el equipo del servidor local pueden verlo.
Detalles: Para permitir que los detalles de este mensaje de error específico se puedan ver en el equipo remoto, cree una
<customErrors>
etiqueta con un archivo de configuración "web.config" ubicado en el directorio raíz de la aplicación web actual. A continuación, esta<customErrors>
etiqueta debe tener su atributo "mode
" establecido en "Off
".
Solución: Resolución de archivos DLL y ensamblados que faltan
Para resolver errores de archivos DLL y ensamblados que faltan:
En Visual Studio, abra la solución.
En Explorador de soluciones, abra la carpeta Referencias.
Seleccione el ensamblado identificado en el mensaje de error.
En Propiedades, establezca la propiedad Copiar local en True.
Vuelva a implementar el servicio en la nube.
Después de comprobar que los errores ya no aparecen, vuelva a implementar el servicio. Al configurar la implementación, no active la casilla Habilitar IntelliTrace para roles de .NET 4 .
Pasos siguientes
Más información
Para obtener información sobre la configuración inicial, la ejecución y ejemplos de tareas de inicio en el servicio en la nube clásica, consulte los artículos siguientes:
- Configuración y ejecución de tareas de inicio para un servicio en la nube de Azure (clásico)
- Tareas de inicio de Common Cloud Service (clásico)
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.