Flujo de trabajo de la arquitectura clásica de máquina virtual (VM) de Microsoft Azure
Importante
Cloud Services (clásico) ahora está en desuso para todos los clientes a partir del 1 de septiembre de 2024. Microsoft detendrá y apagará las implementaciones en ejecución existentes y los datos se perderán permanentemente a partir de octubre de 2024. Las nuevas implementaciones deben utilizar el nuevo modelo de implementación basado en Azure Resource Manager Azure Cloud Services (soporte extendido) .
En este artículo se proporciona información general de los procesos de flujo de trabajo que se producen al implementar o actualizar un recurso de Azure, como una máquina virtual.
Nota:
Azure tiene dos modelos de implementación diferentes para crear recursos y trabajar con ellos: el de Resource Manager y el clásico. Este artículo trata del modelo de implementación clásico.
El diagrama siguiente presenta la arquitectura de los recursos de Azure.
Conceptos básicos del flujo de trabajo
R. RDFE/FFE es la ruta de comunicación desde el usuario hasta el tejido. RDFE (Front-end RedDog) es la API expuesta públicamente que es el front-end para el Portal de administración y la API del modelo de implementación clásica, como Visual Studio, MMC de Azure, etc. Todas las solicitudes del usuario se realizan a través de RDFE. FFE (Front-end de tejido) es la capa que convierte las solicitudes de RDFE en los comandos de tejido. Todas las solicitudes de RDFE pasan por FFE para llegar hasta el controlador de tejido.
B. El controlador de tejido es el responsable del mantenimiento y la supervisión de todos los recursos del centro de datos. Se comunica con los agentes de host de tejido en el SO de tejido enviando información, como la versión del SO invitado, el Service Pack, la configuración del servicio y el estado del servicio.
C. El agente host reside en el sistema operativo host y es responsable de configurar el sistema operativo invitado. También se encarga de la comunicación con el agente invitado (WindowsAzureGuestAgent) para actualizar el rol hacia un estado objetivo y realizar comprobaciones de latido con el agente invitado. Si el agente de host no recibe respuesta de latido durante diez minutos, reinicia el SO invitado.
C2. WaAppAgent es el responsable de instalar, configurar y actualizar WindowsAzureGuestAgent.exe.
D. WindowsAzureGuestAgent es responsable de las siguientes tareas:
- Configurar el SO invitado, lo que incluye el firewall, las ACL, los recursos LocalStorage, la configuración y el paquete de servicio, y los certificados.
- Configurar el SID de la cuenta de usuario en la que se ejecuta el rol.
- Comunicar el estado del rol al tejido.
- Iniciar WaHostBootstrapper y supervisarlo para asegurarse de que el rol se encuentra en el estado previsto.
E. WaHostBootstrapper es el responsable de:
- Leer la configuración del rol e iniciar todas las tareas y procesos apropiados para configurar y ejecutar dicho rol.
- Supervisar todos sus procesos secundarios.
- Generar el evento StatusCheck en el proceso de host del rol.
F. IISConfigurator se ejecuta si el rol se configura como un rol web de IIS completo. Es responsable de:
- Iniciar los servicios de IIS estándar
- Configurar el módulo de reescritura en la configuración web
- Configurar AppPool para el rol configurado en el modelo de servicio
- Configurar el registro de IIS para que apunte a la carpeta DiagnosticStore LocalStorage
- Configurar los permisos y las ACL
- El sitio web reside en %roleroot%:\sitesroot\0 y AppPool apunta a esta ubicación para ejecutar IIS.
G. El modelo de roles define las tareas de inicio y WaHostBootstrapper las inicia. Las tareas de inicio se pueden configurar para que se ejecuten de forma asincrónica en segundo plano y el arranque del host inicia la tarea de inicio y, luego, continúa con otras tareas de inicio. Las tareas de inicio también se pueden configurar para ejecutarse en modo Simple (predeterminado). En el modo Simple, el arranque del host espera a que la tarea de inicio termine de ejecutarse y devuelva un código de salida correcto (0) antes de continuar con la siguiente tarea de inicio.
H. Estas tareas forman parte del SDK y se definen como complementos en la definición del servicio del rol (.csdef). Cuando se expande en las tareas de inicio, DiagnosticsAgent y RemoteAccessAgent son únicos en que cada uno de ellos define dos tareas de inicio, una normal y otra que tiene un parámetro /blockStartup. La tarea de inicio normal se define como una tarea de inicio en segundo plano para que pueda ejecutarse en segundo plano mientras se está ejecutando el propio rol. La tarea de inicio /blockStartup se define como una tarea de inicio Simple para que WaHostBootstrapper espere a que salga antes de continuar. La tarea /blockStartup espera a que la tarea normal termine de inicializarse y luego se cierra y permite que el arranque del host continúe. Este proceso se hace para que los diagnósticos y el acceso RDP se puedan configurar antes de que los procesos de rol se inicien, que se hacen a través de la tarea /blockStartup. Este proceso también permite que los diagnósticos y el acceso RDP continúen ejecutándose después de que el arranque del host finalice las tareas de inicio, que se hace a través de la tarea Normal.
I. WaWorkerHost es el proceso de host estándar para los roles de trabajo normales. Este proceso de host hospeda los archivos DLL y código de punto de entrada, como OnStart y Run.
J. WaIISHost es el proceso de host para el código de punto de entrada de rol para roles web que usan IIS completo. Este proceso carga el primer archivo DLL que se encuentra que usa la clase RoleEntryPoint y ejecuta el código de esta clase (OnStart, Run, OnStop). Todos los eventos RoleEnvironment (como StatusCheck y Changed) que se crean en la clase RoleEntryPoint se generan en este proceso.
K. W3WP es el proceso de trabajo de IIS estándar usado si el rol está configurado para usar IIS completo. Este proceso ejecuta AppPool configurado desde IISConfigurator. Todos los eventos RoleEnvironment (como StatusCheck y Changed) que se crean aquí se generan en este proceso. Los eventos RoleEnvironment se activan en ambas ubicaciones (WaIISHost y w3wp.exe) si se suscribe a eventos en ambos procesos.
Procesos de flujo de trabajo
- Un usuario realiza una solicitud, como cargar archivos ".cspkg" y ".cscfg", indicando a un recurso que detenga o haga un cambio de configuración, etc. Las solicitudes se pueden realizar a través de Azure Portal o herramientas que usan la API del modelo de implementación clásica, como la característica Publicar de Visual Studio. Esta solicitud se pasa a RDFE para hacer todo el trabajo relacionado con las suscripciones y luego comunica la solicitud a FFE. El resto de estos pasos de flujo de trabajo son para implementar un nuevo paquete e iniciarlo.
- FFE encuentra el grupo de máquinas correcto (en función de las aportaciones del cliente, como el grupo de afinidad o la ubicación geográfica, y de la entrada del tejido, como la disponibilidad de la máquina) y se comunica con el controlador de tejido maestro de ese grupo de máquinas.
- El controlador de tejido encuentra un host que tiene núcleos de CPU disponibles (o implementa un nuevo host). El Service Pack y la configuración del servicio se copian en el host y el controlador de tejido se comunica con el agente de host en el SO del host para implementar el paquete (configurar DIP, puertos, SO invitado, etc.).
- El agente de host inicia el SO invitado y se comunica con el agente invitado (WindowsAzureGuestAgent). El host envía los latidos al invitado para asegurarse de que el rol funciona para conseguir el estado previsto.
- WindowsAzureGuestAgent configura el SO invitado (firewall, ACL, LocalStorage, etc.), copia un nuevo archivo de configuración XML en c:\Config y, por último, inicia el proceso WaHostBootstrapper.
- Para los roles web de IIS completo, WaHostBootstrapper inicia IISConfigurator y le indica que elimine cualquier AppPool existente para el rol web de IIS.
- WaHostBootstrapper lee las tareas Startup de E:\RoleModel.xml y comienza a ejecutar las tareas de inicio. WaHostBootstrapper espera hasta que finalicen todas las tareas de inicio Simple y devuelvan un mensaje de operación correcta.
- Para los roles web de IIS completo, WaHostBootstrapper indica a IISConfigurator que configure la instancia de AppPool de IIS y apunta el sitio a
E:\Sitesroot\<index>
, donde<index>
es un índice basado en cero en el número de<Sites>
elementos definidos para el servicio. - WaHostBootstrapper inicia el proceso de host según el tipo de rol:
- Rol de trabajo: WaWorkerHost.exe se inicia. WaHostBootstrapper ejecuta el método OnStart(). Después de regresar, WaHostBootstrapper comienza a ejecutar el método Run() y luego marca simultáneamente el rol como Listo y lo coloca en la rotación del equilibrador de carga (si se definen elementos InputEndpoints). Después, WaHostBootsrapper entra en un bucle de comprobación del estado del rol.
- Rol web de IIS completo: aIISHost se inicia. WaHostBootstrapper ejecuta el método OnStart(). Después de regresar, comienza a ejecutar el método Run() y luego marca simultáneamente el rol como Listo y lo coloca en la rotación del equilibrador de carga. Después, WaHostBootsrapper entra en un bucle de comprobación del estado del rol.
- Las solicitudes web entrantes a un rol web de IIS completo activan IIS para iniciar el proceso W3WP y atender la solicitud, de la misma manera que lo haría en un entorno de IIS local.
Ubicaciones del archivo de registro
WindowsAzureGuestAgent
- C:\Logs\AppAgentRuntime.Log.
Este registro contiene los cambios realizados en el servicio, como los inicios, las detenciones y las nuevas configuraciones. Si el servicio no cambia, puede esperar ver grandes espacios de tiempo en este archivo de registro. - C:\Logs\WaAppAgent.Log.
Este registro contiene las actualizaciones de estado y notificaciones de latido y se actualiza cada 2 o 3 segundos. Este registro contiene una vista histórica del estado de la instancia y le indica cuándo la instancia no estaba en estado Listo.
WaHostBootstrapper
C:\Resources\Directory\<deploymentID>.<role>.DiagnosticStore\WaHostBootstrapper.log
WaIISHost
C:\Resources\Directory\<deploymentID>.<role>\WaIISHost.log
IISConfigurator
C:\Resources\Directory\<deploymentID>.<role>\IISConfigurator.log
Registros de IIS
C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1
Registros de eventos de Windows
D:\Windows\System32\Winevt\Logs