Fluxo de trabalho da arquitetura clássica de máquina virtual (VM) do Microsoft Azure
Importante
Os Serviços na Nuvem (clássicos) foram preteridos para todos os clientes a partir de 1º de setembro de 2024. Todas as implantações em execução existentes serão interrompidas e encerradas pela Microsoft e os dados serão perdidos permanentemente a partir de outubro de 2024. Novas implantações devem usar o novo modelo de implantação baseado no Azure Resource Manager Serviços de Nuvem do Azure (suporte estendido).
Este artigo fornece uma visão geral dos processos de fluxo de trabalho que ocorrem quando você implanta ou atualiza um recurso do Azure, como uma máquina virtual.
Nota
O Azure tem dois modelos de implementação diferentes para criar e trabalhar com os recursos: Resource Manager e clássico. Este artigo cobre a utilização do modelo de implementação clássica.
O diagrama a seguir apresenta a arquitetura dos recursos do Azure.
Noções básicas de fluxo de trabalho
A. RDFE / FFE é o caminho de comunicação do usuário para a malha. RDFE (RedDog Front End) é a API exposta publicamente que é o front-end do Portal de Gerenciamento e a API do modelo de implantação clássico, como Visual Studio, MMC do Azure e assim por diante. Todas as solicitações do usuário passam pelo RDFE. FFE (Fabric Front End) é a camada que traduz solicitações do RDFE em comandos de malha. Todas as solicitações do RDFE passam pelo FFE para chegar aos controladores de malha.
B. O controlador de malha é responsável por manter e monitorar todos os recursos no data center. Ele se comunica com agentes de host de malha no sistema operacional de malha, enviando informações como a versão do sistema operacional convidado, pacote de serviço, configuração de serviço e estado do serviço.
C. O Host Agent vive no SO Host e é responsável pela configuração do SO Convidado. Ele também lida com a comunicação com o Agente Convidado (WindowsAzureGuestAgent) para atualizar a função em direção a um estado de meta pretendido e fazer verificações de pulsação com o Agente Convidado. Se o Host Agent não receber resposta de pulsação por 10 minutos, o Host Agent reiniciará o SO convidado.
C2. O WaAppAgent é responsável pela instalação, configuração e atualização WindowsAzureGuestAgent.exe.
D. WindowsAzureGuestAgent é responsável pelas seguintes tarefas:
- Configuração do SO convidado, incluindo firewall, ACLs, recursos LocalStorage, pacote de serviço e configuração e certificados.
- Configurar o SID para a conta de usuário na qual a função é executada.
- Comunicar o status da função para a malha.
- Iniciando o WaHostBootstrapper e monitorando-o para garantir que a função esteja no estado de meta.
E. WaHostBootstrapper é responsável por:
- Ler a configuração da função e iniciar todas as tarefas e processos apropriados para configurar e executar a função.
- Acompanhamento de todos os seus processos filhos.
- Levantando o evento StatusCheck no processo de host da função.
F. IISConfigurator é executado se a função estiver configurada como uma função Web Full IIS. É responsável por:
- Iniciando os serviços padrão do IIS
- Configurando o módulo de reescrita na configuração da Web
- Configurando o AppPool para a função configurada no modelo de serviço
- Configurando o log do IIS para apontar para a pasta DiagnosticStore LocalStorage
- Configurando permissões e ACLs
- O site reside em %roleroot%:\sitesroot\0 e o AppPool aponta para esse local para executar o IIS.
Não. O modelo define tarefas de inicialização e o WaHostBootstrapper as inicia. As tarefas de inicialização podem ser configuradas para serem executadas em segundo plano de forma assíncrona, e o bootstrapper do host inicia a tarefa de inicialização e, em seguida, continua para outras tarefas de inicialização. As tarefas de inicialização também podem ser configuradas para serem executadas no modo Simples (padrão). No modo Simples, o bootstrapper do host aguarda que a tarefa de inicialização termine a execução e retorne um código de saída bem-sucedido (0) antes de continuar para a próxima tarefa de inicialização.
Não. Essas tarefas fazem parte do SDK e são definidas como plug-ins na definição de serviço da função (.csdef). Quando expandidos em tarefas de inicialização, o DiagnosticsAgent e o RemoteAccessAgent são exclusivos, pois cada um define duas tarefas de inicialização, uma regular e outra que tem um parâmetro /blockStartup. A tarefa de inicialização normal é definida como uma tarefa de inicialização em segundo plano para que possa ser executada em segundo plano enquanto a própria função está em execução. A tarefa de inicialização /blockStartup é definida como uma tarefa de inicialização simples para que WaHostBootstrapper aguarde que ela saia antes de continuar. A tarefa /blockStartup aguarda que a tarefa regular termine a inicialização e, em seguida, ela é encerrada e permite que o bootstrapper do host continue. Esse processo é feito para que o diagnóstico e o acesso RDP possam ser configurados antes do início dos processos de função, o que é feito por meio da tarefa /blockStartup. Esse processo também permite que o diagnóstico e o acesso RDP continuem em execução depois que o bootstrapper do host concluir as tarefas de inicialização, o que é feito por meio da tarefa Normal.
Não. WaWorkerHost é o processo de host padrão para funções de trabalho normais. Esse processo de host hospeda todas as DLLs e código de ponto de entrada da função, como OnStart e Run.
J. WaIISHost é o processo de host para código de ponto de entrada de função para funções Web que usam o IIS completo. Esse processo carrega a primeira DLL encontrada que usa a classe RoleEntryPoint e executa o código dessa classe (OnStart, Run, OnStop). Todos os eventos RoleEnvironment (como StatusCheck e Changed) criados na classe RoleEntryPoint são gerados nesse processo.
Não. O W3WP é o processo de trabalho padrão do IIS usado se a função estiver configurada para usar o IIS completo. Este processo executa o AppPool configurado a partir do IISConfigurator. Todos os eventos RoleEnvironment (como StatusCheck e Changed) criados aqui são gerados neste processo. Os eventos RoleEnvironment são acionados em ambos os locais (WaIISHost e w3wp.exe) se você se inscrever em eventos em ambos os processos.
Procedimentos de fluxos de trabalho
- Um usuário faz uma solicitação, como carregar arquivos ".cspkg" e ".cscfg", dizer a um recurso para parar ou fazer uma alteração de configuração, e assim por diante. As solicitações podem ser feitas por meio do portal do Azure ou de ferramentas que usam a API do modelo de implantação clássico, como o recurso Publicar do Visual Studio. Esta solicitação vai para RDFE para fazer todo o trabalho relacionado à assinatura e, em seguida, comunicar a solicitação à FFE. O restante dessas etapas de fluxo de trabalho são implantar um novo pacote e iniciá-lo.
- O FFE encontra o pool de máquinas correto (com base na entrada do cliente, como grupo de afinidade ou localização geográfica, além da entrada da malha, como a disponibilidade da máquina) e se comunica com o controlador de malha mestre nesse pool de máquinas.
- O controlador de malha encontra um host que tem núcleos de CPU disponíveis (ou gira um novo host). O pacote de serviço e a configuração são copiados para o host, e o controlador de malha se comunica com o agente do host no sistema operacional host para implantar o pacote (configurar DIPs, portas, SO convidado e assim por diante).
- O agente de host inicia o sistema operacional convidado e se comunica com o agente convidado (WindowsAzureGuestAgent). O anfitrião envia batimentos cardíacos ao hóspede para se certificar de que a função está a trabalhar para o seu estado alvo.
- WindowsAzureGuestAgent configura o SO convidado (firewall, ACLs, LocalStorage e assim por diante), copia um novo arquivo de configuração XML para c:\Config e inicia o processo WaHostBootstrapper.
- Para funções Web completas do IIS, o WaHostBootstrapper inicia o IISConfigurator e diz a ele para excluir do IIS quaisquer AppPools existentes para a função Web.
- WaHostBootstrapper lê as tarefas de inicialização de E:\RoleModel.xml e começa a executar tarefas de inicialização. WaHostBootstrapper espera até que todas as tarefas de inicialização simples terminem e retorne uma mensagem de sucesso.
- Para funções Web completas do IIS, WaHostBootstrapper diz ao IISConfigurator para configurar o AppPool do IIS e aponta o site para
E:\Sitesroot\<index>
, onde<index>
é um índice baseado em zero no número de<Sites>
elementos definidos para o serviço. - WaHostBootstrapper inicia o processo de host dependendo do tipo de função:
- Função de trabalho: WaWorkerHost.exe é iniciado. WaHostBootstrapper executa o método OnStart(). Depois que ele retorna, WaHostBootstrapper começa a executar o método Run() e, em seguida, marca simultaneamente a função como Ready e a coloca na rotação do balanceador de carga (se InputEndpoints estiverem definidos). WaHostBootsrapper então entra em um loop de verificação do status da função.
- Função Web completa do IIS: aIISHost é iniciado. WaHostBootstrapper executa o método OnStart(). Depois que ele retorna, ele começa a executar o método Run() e, em seguida, marca simultaneamente a função como Ready e a coloca na rotação do balanceador de carga. WaHostBootsrapper então entra em um loop de verificação do status da função.
- As solicitações da Web de entrada para uma função Web completa do IIS acionam o IIS para iniciar o processo W3WP e atender à solicitação, da mesma forma que faria em um ambiente IIS local.
Locais dos arquivos de log
WindowsAzureGuestAgent
- C:\Logs\AppAgentRuntime.Log.
Esse log contém alterações no serviço, incluindo inícios, paradas e novas configurações. Se o serviço não for alterado, você pode esperar ver grandes lacunas de tempo neste arquivo de log. - C:\Logs\WaAppAgent.Log.
Este registo contém atualizações de estado e notificações de pulsação e é atualizado a cada 2-3 segundos. Esse log contém uma exibição histórica do status da instância e informa quando a instância não estava no estado Pronto.
WaHostBootstrapper
C:\Resources\Directory\<deploymentID>.<role>.DiagnosticStore\WaHostBootstrapper.log
WaIISHost
C:\Resources\Directory\<deploymentID>.<role>\WaIISHost.log
IISConfigurador
C:\Resources\Directory\<deploymentID>.<role>\IISConfigurator.log
Registos do IIS
C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1
Logs de eventos do Windows
D:\Windows\System32\Winevt\Logs