Fluxo de trabalho da arquitetura clássica de máquina virtual (VM) do Microsoft Azure
Importante
Os Serviços de Nuvem (clássicos) agora se encontram 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 desligadas pela Microsoft e os dados serão perdidos de forma permanente a partir de outubro de 2024. As 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.
Observação
O Azure tem dois modelos de implantação diferentes para criar e trabalhar com recursos: Gerenciador de Recursos e Clássico. Este artigo aborda o uso do modelo de implantação clássica.
O diagrama a seguir apresenta a arquitetura dos recursos do Azure.
Noções básicas do 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 da API do modelo de implantação clássico, como Visual Studio, Azure MMC e assim por diante. Todas as solicitações do usuário passam por RDFE. FFE (Front-End da Malha) é a camada que converte solicitações do RDFE em comandos de malha. Todas as solicitações de RDFE percorrem o FFE para alcançar os 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, o pacote de serviço, a configuração de serviço e o estado do serviço.
C. O Host Agent reside no sistema operacional host e é responsável por configurar o sistema operacional 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 reinicia o sistema operacional convidado.
C2. O WaAppAgent é responsável por instalar, configurar e atualizar o WindowsAzureGuestAgent.exe.
D. WindowsAzureGuestAgent é responsável pelas seguintes tarefas:
- Configurar o sistema operacional convidado, incluindo Firewall, ACLs, recursos de LocalStorage, pacote de serviço e configuração e certificados.
- Configurando o SID para a conta de usuário sob a qual a função é executada.
- Comunicar o status da função à malha.
- Iniciar o WaHostBootstrapper e monitorando-o para se certificar de que a função está no estado de meta.
E. O 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.
- Monitorar todos os seus processos filho.
- Gerar o evento StatusCheck no processo de host da função.
F. O IISConfigurator será executado se a função estiver configurada como uma função Web do IIS completa. É responsável por:
- Iniciar os serviços padrão do IIS
- Configurar o módulo Rewrite na configuração da Web
- Configurar o AppPool para a função configurada no modelo de serviço
- Configurar o log do IIS para apontar para a pasta DiagnosticStore LocalStorage
- Configurar permissões e ACLs
- O site reside em %roleroot%:\sitesroot\0, e o AppPool aponta para esse local para executar o IIS.
G. O modelo define as 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 depois continua com 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 a conclusão da tarefa de inicialização e retorna um código de saída de sucesso (0) antes de continuar para a próxima tarefa de inicialização.
H. Essas tarefas fazem parte do SDK e são definidas como plug-ins na definição de serviço da função (.csdef). Quando expandido para tarefas de inicialização, o DiagnosticsAgent e o RemoteAccessAgent são exclusivos, pois cada um deles 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 o WaHostBootstrapper aguarde sua saída antes de continuar. A tarefa /blockStartup aguarda a conclusão da inicialização da tarefa regular e, em seguida, sai 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 através da tarefa /blockStartup. Esse processo também permite que o diagnóstico e o acesso RDP continuem em execução após o bootstrapper do host concluir as tarefas de inicialização, o que é feito por meio da tarefa Normal.
I. O WaWorkerHost é o processo de host padrão para funções de trabalho normais. Esse processo de host hospeda todas as DLLs da função e o código de ponto de entrada, como OnStart e Run.
J. O WaIISHost é o processo de host para o 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.
K. W3WP é o processo de trabalho padrão do IIS usado se a função estiver configurada para usar o IIS completo. Esse processo executa o AppPool configurado no IISConfigurator. Qualquer evento RoleEnvironment (como StatusCheck e Changed) que são criados aqui são gerados nesse processo. Os eventos RoleEnvironment são acionados em ambos os locais (WaIISHost e w3wp.exe) se você assinar eventos em ambos os processos.
Processos de fluxo de trabalho
- Um usuário faz uma solicitação, como carregar arquivos ".cspkg" e ".cscfg", informando a um recurso para parar ou fazendo 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 Visual Studio Publish. Essa solicitação vai para RDFE para fazer todo o trabalho relacionado à assinatura e, em seguida, comunicar a solicitação ao FFE. O restante dessas etapas de fluxo de trabalho é implantar um novo pacote e iniciá-lo.
- O FFE localiza o pool de computadores correto (com base na entrada do cliente, como grupo de afinidade ou localização geográfica, além de entrada da malha, como disponibilidade do computador) e se comunica com o controlador de malha mestre nesse pool de computadores.
- O controlador de malha localiza um host que tem núcleos de CPU disponíveis (ou cria 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 do host para implantar o pacote (configurar DIPs, portas, sistemas operacionais convidado e assim por diante).
- O agente de host inicia o sistema operacional convidado e se comunica com o agente convidado (WindowsAzureGuestAgent). O host envia pulsações ao convidado para garantir que a função esteja funcionando em direção ao seu estado desejado.
- O WindowsAzureGuestAgent configura o sistema operacional convidado (firewall, ACLs, LocalStorage e assim por diante), copia um novo arquivo de configuração XML para c:\Config e, em seguida, inicia o processo de WaHostBootstrapper.
- Para funções Web do IIS completas, o WaHostBootstrapper inicia o IISConfigurator e informa a ele para excluir quaisquer AppPools existentes para a função Web do IIS.
- O WaHostBootstrapper lê as tarefas de Inicialização de E:\RoleModel.xml e começa a executar as tarefas de inicialização. WaHostBootstrapper espera até que todas as tarefas de inicialização simples sejam concluídas e retorne uma mensagem de sucesso.
- Para funções Web do IIS completas, o WaHostBootstrapper informa ao IISConfigurator para configurar o AppPool do IIS e aponta para o site
E:\Sitesroot\<index>
, em que<index>
é um índice de base zero no número de<Sites>
elementos definidos para o serviço. - WaHostBootstrapper inicia o processo host dependendo do tipo de função:
- Função de trabalho: O WaWorkerHost.exe é iniciado. O WaHostBootstrapper executa o método OnStart (). Depois de retornar, o WaHostBootstrapper começa a executar o método Run () e, em seguida, marca a função simultaneamente como Pronta e a coloca na rotação do balanceador de carga (se InputEndpoints for definido). Em seguida, o WaHostBootsrapper, entra em um loop de verificação do status da função.
- Função Web do IIS completa: o aIISHost foi iniciado. O WaHostBootstrapper executa o método OnStart (). Depois de retornar, ele começa a executar o método Run () e, em seguida, marca a função simultaneamente como Pronta e a coloca na rotação do balanceador de carga. Em seguida, o WaHostBootsrapper, entra em um loop de verificação do status da função.
- As solicitações da Web recebidas para uma função da Web Full IIS acionam o IIS para iniciar o processo W3WP e atender a solicitação, da mesma forma que faria em um ambiente IIS local.
Localizações dos Arquivos de log
WindowsAzureGuestAgent
- C:\Logs\AppAgentRuntime.Log.
Esse log contém alterações no serviço, incluindo início, interrupções e novas configurações. Se o serviço não alterar, você verá grandes intervalos de tempo nesse arquivo de log. - C:\Logs\WaAppAgent.Log.
Esse log contém as atualizações de status, as notificações de pulsação e é atualizado a cada 2-3 segundos. Esse log contém uma visã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
IISConfigurator
C:\Resources\Directory\<deploymentID>.<role>\IISConfigurator.log
Logs do IIS
C:\Resources\Directory\<guid>.<role>.DiagnosticStore\LogFiles\W3SVC1
Logs de eventos do Windows
D:\Windows\System32\Winevt\Logs