Compartir a través de


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 Offimplementar el servicio:

  1. En Visual Studio, abra la solución.

  2. En Explorador de soluciones, abra el archivo Web.config.

  3. En la system.web sección , agregue el código XML siguiente:

    <customErrors mode="Off" />
    
  4. Guarde el archivo.

  5. 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:

  1. En Azure Portal, busque y seleccione Servicios en la nube (soporte extendido) .

  2. En la lista de servicios en la nube, seleccione el nombre del servicio en la nube.

  3. En el panel de menús, busque en Configuración y, a continuación, seleccione Roles e instancias.

  4. Seleccione el nombre de la instancia de rol.

  5. 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:

  1. Adición de la extensión del Escritorio remoto en Azure Cloud Services (soporte extendido).

  2. 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.

  3. Inicie sesión en la máquina virtual (VM) con las credenciales que usó para configurar Escritorio remoto.

  4. Abra una ventana de Símbolo del sistema.

  5. Ejecute el comando ipconfig . Copie el valor devuelto para la dirección IPv4.

  6. Abra un explorador web.

  7. 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:

  1. Instale el SDK de Azure.

  2. En el equipo de desarrollo, compile el proyecto de servicio en la nube.

  3. En el Explorador de archivos, en el proyecto de servicio en la nube, vaya a la carpeta bin\debug.

  4. Copie la carpeta .csx y el archivo .cscfg en el equipo que se usa para depurar los problemas.

  5. En el equipo limpio, abra una ventana del símbolo del sistema del SDK de Azure.

  6. En el símbolo del sistema, ejecute el siguiente csrun comando:

    csrun.exe /devstore:start
    
  7. 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:

  1. Compruebe que azure SDK 1.3 o una versión posterior esté instalada.

  2. En Visual Studio, implemente la solución. Al configurar la implementación, seleccione la casilla Habilitar IntelliTrace para roles de .NET 4.

  3. Una vez que se inicie la instancia de rol, abra el Explorador de servidores.

  4. Expanda el nodo Azure\Cloud Services.

  5. 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.

  6. Seleccione Ver registros de IntelliTrace.

  7. En Resumen de IntelliTrace, vaya a Datos de excepción y expanda ese nodo.

  8. 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:

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:

  1. Intente usar Escritorio remoto para conectarse a la instancia de rol con problemas.

  2. Después de conectarse a la instancia de rol, seleccione Iniciar y busque y seleccione Administrador de tareas.

  3. Para ver una lista de procesos, seleccione la pestaña Detalles en el Administrador de tareas.

  4. 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:

  1. En Visual Studio, abra la solución.

  2. En el Explorador de soluciones, abra la carpeta Referencias.

  3. Seleccione el ensamblado que se identifica en el mensaje de error.

  4. En Propiedades, establezca la propiedad Copiar de forma local en Verdadero.

  5. 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:

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.