Flusso di lavoro dell'architettura della macchina virtuale classica di Windows Azure

Importante

Servizi cloud (versione classica) è ora deprecato per i nuovi clienti e verrà ritirato il 31 agosto 2024 per tutti i clienti. Le nuove distribuzioni devono usare il nuovo modello di distribuzione basato su Azure Resource Manager, Servizi cloud di Azure (supporto "Extended").

Questo articolo offre una panoramica dei processi del flusso di lavoro che si verificano quando si distribuisce o si aggiorna una risorsa di Azure, ad esempio una macchina virtuale.

Nota

Azure offre due modelli di distribuzione per creare e usare le risorse: Gestione risorse e la distribuzione classica. Questo articolo illustra l'uso del modello di distribuzione classica.

Il diagramma seguente presenta l'architettura delle risorse di Azure.

<alt The image about Azure workflow>

Concetti di base del flusso di lavoro

A. RDFE/FFE è il percorso di comunicazione dall'utente all'infrastruttura. RDFE (RedDog Front End) è l'API esposta pubblicamente che rappresenta il front-end del portale di gestione e l'API Gestione dei servizi, ad esempio Visual Studio, Azure MMC e così via. Tutte le richieste provenienti dall'utente passano attraverso RDFE. FFE (Fabric Front End) è il livello che converte le richieste da RDFE in comandi di infrastruttura. Tutte le richieste da RDFE passano attraverso FFE per raggiungere i controller di infrastruttura.

B. Il controller di infrastruttura è responsabile della gestione e del monitoraggio di tutte le risorse nel data center. Comunica con gli agenti host dell'infrastruttura nel sistema operativo di infrastruttura che inviano informazioni quali la versione del sistema operativo guest, il pacchetto del servizio, la configurazione del servizio e lo stato del servizio.

C. L'agente host si trova nel sistema operativo host ed è responsabile della configurazione del sistema operativo guest e della comunicazione con l'agente guest (WindowsAzureGuestAgent) per aggiornare il ruolo verso uno stato obiettivo previsto ed eseguire controlli heartbeat con l'agente guest. Se l'agente host non riceve la risposta heartbeat per 10 minuti, l'agente host riavvia il sistema operativo guest.

C2. WaAppAgent è responsabile dell'installazione, della configurazione e dell'aggiornamento di WindowsAzureGuestAgent.exe.

D. WindowsAzureGuestAgent è responsabile per le operazioni seguenti:

  1. Configurazione del sistema operativo guest, inclusi firewall, ACL, risorse LocalStorage, pacchetto e configurazione del servizio e certificati.
  2. Configurazione del SID per l'account utente in cui verrà eseguito il ruolo.
  3. Comunicazione dello stato del ruolo all'infrastruttura.
  4. Avvio di WaHostBootstrapper e monitoraggio per assicurarsi che il ruolo sia nello stato obiettivo.

E. WaHostBootstrapper è responsabile di:

  1. Lettura della configurazione del ruolo e avvio di tutte le attività e i processi appropriati per configurare ed eseguire il ruolo.
  2. Monitoraggio di tutti i processi figlio.
  3. Generazione dell'evento StatusCheck nel processo host del ruolo.

F. IISConfigurator viene eseguito se il ruolo è configurato come ruolo Web IIS completo. È responsabile delle operazioni seguenti:

  1. Avvio dei servizi IIS standard
  2. Configurazione del modulo di riscrittura nella configurazione Web
  3. Configurazione di AppPool per il ruolo configurato nel modello di servizio
  4. Configurazione della registrazione IIS in modo che punti alla cartella DiagnosticStore LocalStorage
  5. Configurazione delle autorizzazioni e degli ACL
  6. Il sito Web si trova in %roleroot%:\sitesroot\0 e AppPool punta a questo percorso per eseguire IIS.

G. Le attività di avvio vengono definite dal modello di ruolo e avviate da WaHostBootstrapper. Le attività di avvio possono essere configurate per l'esecuzione in background in modo asincrono e il programma di bootstrap dell'host avvierà l'attività di avvio e quindi continuerà con altre attività di avvio. Le attività di avvio possono anche essere configurate per l'esecuzione in modalità semplice (impostazione predefinita) in cui il programma di bootstrap attenderà che l'attività di avvio finisca e restituisca un codice di uscita di operazione riuscita (0) prima di continuare con l'attività di avvio successiva.

H. Queste attività fanno parte dell'SDK e sono definite come plug-in nella definizione del servizio del ruolo (.csdef). Quando vengono estesi alle attività di avvio, DiagnosticsAgent e RemoteAccessAgent sono univoci in quanto definiscono due attività di avvio, una normale e una con un parametro /blockStartup. L'attività di avvio normale viene definita come attività di avvio in background in modo che possa essere eseguita in background mentre il ruolo stesso è in esecuzione. L'attività di avvio /blockStartup è definita come attività di avvio semplice in modo che WaHostBootstrapper ne attenda il completamento prima di continuare. L'attività /blockStartup attende il completamento dell'inizializzazione dell'attività normale e quindi esce e consente al programma di bootstrap dell'host di continuare. Questa operazione viene eseguita in modo che la diagnostica e l'accesso RDP possano essere configurati prima dell'avvio dei processi del ruolo (operazione eseguita tramite l'attività /blockStartup). Ciò consente anche alla diagnostica e all'accesso RDP di continuare l'esecuzione dopo che il programma di bootstrap dell'host ha completato le attività di avvio (operazione eseguita tramite l'attività Normale).

I. WaWorkerHost è il processo host standard per i ruoli di lavoro normali. Questo processo host ospita tutte le DLL del ruolo e il codice del punto di ingresso, ad esempio OnStart e Run.

J. WaIISHost è il processo host per il codice del punto di ingresso del ruolo per i ruoli Web che usano IIS completo. Questo processo carica la prima DLL trovata che usa la classe RoleEntryPoint ed esegue il codice da questa classe (OnStart, Run, OnStop). Tutti gli eventi RoleEnvironment (ad esempio StatusCheck e Changed) creati nella classe RoleEntryPoint vengono generati in questo processo.

K. W3WP è il processo di lavoro IIS standard usato se il ruolo è configurato per l'uso di IIS completo. Viene eseguito il pool di app configurato da IISConfigurator. Tutti gli eventi RoleEnvironment(ad esempio StatusCheck e Changed) creati qui vengono generati in questo processo. Si noti che gli eventi RoleEnvironment verranno attivati in entrambe le posizioni (WaIISHost e w3wp.exe) se si sottoscrivono eventi in entrambi i processi.

Processi di flussi di lavoro

  1. Un utente effettua una richiesta, ad esempio caricare i file ".cspkg" e ".cscfg", indicare a una risorsa di interrompere o apportare una modifica alla configurazione e così via. Questa operazione può essere eseguita tramite il portale di Azure o uno strumento che usa l'API Gestione dei servizi, ad esempio la funzionalità di pubblicazione di Visual Studio. Questa richiesta passa a RDFE per eseguire tutto il lavoro correlato alla sottoscrizione e quindi comunicare la richiesta a FFE. Il resto di questi passaggi del flusso di lavoro sono la distribuzione di un nuovo pacchetto e l'avvio.
  2. FFE trova il pool di computer corretto (in base all'input del cliente, ad esempio un gruppo di affinità o una posizione geografica più l'input dell'infrastruttura, ad esempio la disponibilità del computer) e comunica con il controller di infrastruttura master in tale pool di computer.
  3. Il controller di infrastruttura trova un host con core CPU disponibili (o attiva un nuovo host). Il pacchetto e la configurazione del servizio vengono copiati nell'host e il controller di infrastruttura comunica con l'agente host nel sistema operativo host per distribuire il pacchetto (configurare DIP, porte, sistema operativo guest e così via).
  4. L'agente host avvia il sistema operativo guest e comunica con l'agente guest (WindowsAzureGuestAgent). L'host invia heartbeat al guest per assicurarsi che il ruolo operi verso lo stato obiettivo.
  5. WindowsAzureGuestAgent configura il sistema operativo guest (firewall, ACL, LocalStorage e così via), copia un nuovo file di configurazione XML in c:\Config e quindi avvia il processo WaHostBootstrapper.
  6. Per i ruoli Web IIS completi, WaHostBootstrapper avvia IISConfigurator e indica di eliminare eventuali pool di app esistenti per il ruolo Web da IIS.
  7. WaHostBootstrapper legge le attività di avvioda E:\RoleModel.xml e inizia l'esecuzione delle attività di avvio. WaHostBootstrapper attende il completamento di tutte le attività di avvio semplici e restituisce un messaggio di "esito positivo".
  8. Per i ruoli Web IIS completi, WaHostBootstrapper indica a IISConfigurator di configurare il pool di app IIS e punta il sito a E:\Sitesroot\<index>, dove <index> è un indice in base zero per il numero di elementi <Sites> definiti per il servizio.
  9. WaHostBootstrapper avvierà il processo host a seconda del tipo di ruolo:
    1. Ruolo di lavoro: WaWorkerHost.exe viene avviato. WaHostBootstrapper esegue il metodo OnStart(). Al termine, WaHostBootstrapper inizia a eseguire il metodo Run() e quindi contrassegna contemporaneamente il ruolo come pronto e lo inserisce nella rotazione del servizio di bilanciamento del carico (se vengono definiti InputEndpoint). WaHostBootsrapper passa quindi a un ciclo di controllo dello stato del ruolo.
    2. Ruolo Web IIS completo: viene avviato aIISHost. WaHostBootstrapper esegue il metodo OnStart(). Al termine, inizia a eseguire il metodo Run() e quindi contrassegna contemporaneamente il ruolo come pronto e lo inserisce nella rotazione del servizio di bilanciamento del carico. WaHostBootsrapper passa quindi a un ciclo di controllo dello stato del ruolo.
  10. Le richieste Web in ingresso per un ruolo Web IIS completo attivano IIS per avviare il processo W3WP e gestire la richiesta, come avviene in un ambiente IIS locale.

Percorsi dei file di log

WindowsAzureGuestAgent

  • C:\Logs\AppAgentRuntime.Log.
    Questo log contiene le modifiche apportate al servizio, inclusi avvii, arresti e nuove configurazioni. Se il servizio non cambia, è possibile prevedere grandi intervalli di tempo vuoti in questo file di log.
  • C:\Logs\WaAppAgent.Log.
    Questo log contiene gli aggiornamenti dello stato e le notifiche heartbeat e viene aggiornato ogni 2-3 secondi. Questo log contiene una visualizzazione cronologica dello stato dell'istanza e indicherà quando l'istanza non era nello stato pronto.

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

Log IIS

C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1

Log eventi di Windows

D:\Windows\System32\Winevt\Logs