Solución de problemas con 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 de solución de problemas
Elija entre las siguientes opciones para diagnosticar problemas que se producen en 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 vuelva a Off
implementar el servicio:
En Visual Studio, abra la solución.
En Explorador de soluciones, abra el archivo Web.config.
En la
system.web
sección , agregue el código XML siguiente:<customErrors mode="Off" />
Guarde el archivo.
Vuelva a empaquetar e implementar el servicio.
Después de volver a implementar el servicio, los mensajes de error que puede recibir sobre el servicio incluirán los nombres de los ensamblados o dll que faltan.
Opción 2: Uso de 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 aparece en la primera columna, como se muestra en la salida de ejemplo siguiente:
Statuses PlatformFaultDomain PlatformUpdateDomain
-------- ------------------- --------------------
{RoleStateStarting} 0 0
Opción 3: Uso de Azure Portal para ver el estado de la instancia de rol
Para ver información de estado sobre una instancia de rol en Azure Portal, siga estos pasos:
En 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, observe 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, use el Protocolo de escritorio remoto (RDP) siguiendo estos pasos:
Adición de la extensión del Escritorio remoto en Azure Cloud Services (soporte extendido).
En Azure Portal, cuando la instancia de servicio en la nube muestre un estado Listo, use Escritorio remoto para iniciar sesión en el servicio en la nube. Para obtener más información, consulte Conectarse a las instancias de rol mediante el Escritorio remoto.
Inicie sesión en la máquina virtual (VM) con las credenciales que usó para configurar Escritorio remoto.
Abra una ventana de 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, a continuación, 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, verá mensajes de error que contienen más información. Este es 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 acerca del error y en donde 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 de Web.config . Para obtener los mejores resultados al usar 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 el 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 se usa para depurar los 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 necesita más información de diagnóstico, puede usar las herramientas estándar de solución de problemas de Windows.
Opción 6: Usar IntelliTrace
Nota:
No 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é instalada.
En Visual Studio, implemente la solución. Al configurar la implementación, seleccione la casilla Habilitar IntelliTrace para roles de .NET 4.
Una vez que se inicie 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
Una o varias de las instancias de rol en Azure Cloud Services (soporte extendido) pueden ser lentas para iniciarse. O bien, la instancia de rol puede estar reciclando o atascada en un estado ocupado y no se inicia según lo esperado. En esta situación, aparece el RoleInstanceStartupTimeoutError
mensaje de error de la aplicación de rol.
La aplicación de roles consta de dos elementos que podrían provocar el cambio de ciclo 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 con problemas.
Después de conectarse a la instancia de rol, seleccione Iniciar y 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 webRole) o WaWorkerHost.exe (para workerRole). Si faltan ambos procesos, es probable que esté fallando una tarea de inicio.
¿Pudo comprobar que el problema se debe a una tarea de inicio? En caso afirmativo, puede aplicar la siguiente solución. Sin embargo, la solución solo estará disponible si la tarea de inicio es una tarea simple o en primer plano. No es válida para las tareas de inicio en segundo plano. Estas se ejecutan de forma asincrónica, en paralelo con el inicio del rol.
Solución: depuración del script de la tarea de inicio
Para solucionar un error relacionado con una 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 investigar los problemas del script, puede elegir entre las opciones siguientes:
Consulte el archivo de registro C:\Resources\WaHostBootstrapper.log. Este archivo es el registro del proceso de WaHostBootstrapper.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 Microsoft Azure. A continuación, busque cualquier error o excepción que implique ejecutar Startup.cmd. Compruebe especialmente si el código de salida es 0. Si no es así, significa que la tarea de inicio ha finalizado, pero con errores. Si no hay registros relacionados con el código de salida del script, significa que la tarea de inicio todavía se está ejecutando.
Si el script de la 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 clave en un comando de script hacia 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 la tarea de inicio. Las ubicaciones de este script para los roles WebRole o WorkerRole se muestran en la tabla siguiente.
Role Ubicación de los scripts 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 ejecutan entre estados pueden deberse a la falta de archivos DLL o ensamblados.
Estos son los síntomas de que faltan DLL o ensamblados:
La instancia de rol recorre los estados Inicialización, Ocupado y Detención .
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 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: se produjo un 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, sí podría verse por los exploradores que se ejecutan en la máquina del servidor local.
Detalles: para permitir que los detalles de este mensaje de error específico se puedan ver en la máquina remota, cree una
<customErrors>
etiqueta con un archivo de configuración "web.config" ubicado en el directorio raíz de la aplicación web actual. Esta<customErrors>
etiqueta debe tener su atributo "mode
" establecido en "Off
".
Solución: Resolución de archivos DLL y ensamblados que faltan
Para resolver los errores de los archivos DLL y ensamblados que faltan:
En Visual Studio, abra la solución.
En el Explorador de soluciones, abra la carpeta Referencias.
Seleccione el ensamblado que se identifica en el mensaje de error.
En Propiedades, establezca la propiedad Copiar de forma local en Verdadero.
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ásico, 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.