Рабочий процесс классической архитектуры виртуальной машины Windows Azure

Важно!

Облачные службы (классическая версия) объявлены устаревшими для новых клиентов. Их поддержка будет полностью прекращена 31 августа 2024 года. Для новых развертываний следует использовать Облачные службы Azure с расширенной поддержкой . Это новая модель развертывания на основе Azure Resource Manager.

В этой статье приведены общие сведения о рабочих процессах, выполняемых при развертывании или обновлении ресурсов Azure, таких как виртуальная машина.

Примечание

В Azure предусмотрены две модели развертывания для создания ресурсов и работы с ними: модель Resource Manager и классическая модель. В этой статье рассматривается использование классической модели развертывания.

На следующей схеме представлена архитектура ресурсов Azure.

<alt Изображение рабочего процесса Azure>

Основы рабочих процессов

A. RDFE / FFE — это путь взаимодействия от пользователя к структуре. RDFE (RedDog Front End) — это общедоступный API, который является внешним интерфейсом для портала управления и API управления службами, например Visual Studio, Azure MMC и т. д. Все запросы пользователя проходят через RDFE. FFE (внешний интерфейс структуры) — это слой, который преобразует запросы из RDFE в команды структуры. Все запросы из RDFE проходят через FFE, чтобы связаться с контроллерами структуры.

B. Контроллер структуры отвечает за обслуживание и мониторинг всех ресурсов в центре обработки данных. Он взаимодействует с агентами узлов структуры в ОС структуры, отправляя такие сведения, как версия гостевой ОС, пакет службы, конфигурация службы и состояние службы.

C. Агент узла находится в ОС узла и отвечает за настройку гостевой ОС и связь с гостевым агентом (WindowsAzureGuestAgent) для обновления роли до предполагаемого целевого состояния и проверки работоспособности с помощью гостевого агента. Если агент узла не получает ответ о работоспособности в течение 10 минут, агент узла перезапускает гостевую ОС.

C2. WaAppAgent отвечает за установку, настройку и обновление WindowsAzureGuestAgent.exe.

D. WindowsAzureGuestAgent отвечает за следующие функции:

  1. Настройка гостевой ОС, включая брандмауэр, списки управления доступом, ресурсы LocalStorage, пакет и конфигурацию службы, и сертификаты.
  2. Настройка идентификатора безопасности для учетной записи пользователя, под которой будет выполняться роль.
  3. Передача состояния роли в структуру.
  4. Запуск WaHostBootstrapper и его отслеживание для гарантии того, что роль находится в целевом состоянии.

E. WaHostBootstrapper отвечает за следующее:

  1. Чтение конфигурации роли и запуск всех соответствующих задач и процессов для настройки и запуска роли.
  2. Мониторинг всех дочерних процессов.
  3. Вызов события StatusCheck в хост-процессе роли.

F. IISConfigurator выполняется, если роль настроена как полная веб-роль IIS. Он отвечает за следующее:

  1. Запуск стандартных служб IIS
  2. Настройка модуля перезаписи в веб-конфигурации
  3. Настройка AppPool для настроенной роли в модели службы
  4. Настройка ведения журнала IIS для указания на папку DiagnosticStore LocalStorage
  5. Настройка разрешений и списков управления доступом
  6. Веб-сайт находится в каталоге %roleroot%:\sitesroot\0, а AppPool указывает на это расположение для запуска IIS.

G. Задачи запуска определяются моделью роли и запускаются при помощи WaHostBootstrapper. Задачи запуска можно настроить на асинхронное выполнение в фоновом режиме, а начальный загрузчик узла активирует задачу запуска, а затем переходит к другим задачам запуска. Задачи запуска также можно настроить на работу в простом режиме (по умолчанию), в котором начальный загрузчик узла будет ожидать завершения выполнения задачи запуска и вернет код успешного завершения (0), прежде чем переходить к следующей задаче запуска.

H. Эти задачи являются частью пакета SDK и определяются как подключаемые модули в определении службы роли (.csdef). В случае применения к задачам запуска агенты DiagnosticsAgent и RemoteAccessAgent уникальны в том, что каждый из них определяет две задачи запуска: одна обычная и одна с параметром /blockStartup. Обычная задача запуска определяется как фоновая, чтобы она могла выполняться в фоновом режиме во время выполнения самой роли. Задача при запуске /blockStartup определяется как простая задача запуска, поэтому WaHostBootstrapper ожидает завершения ее работы, прежде чем продолжить. Задача /blockStartup ожидает завершения инициализации обычной задачи, а затем завершает свою работу и разрешает продолжение работы загрузчика узла. Это сделано для того, чтобы можно было настроить диагностику и доступ по протоколу RDP перед запуском процессов роли (это делается с помощью задачи /blockStartup). Это также позволяет продолжать выполнять диагностику и доступ по протоколу RDP после того, как начальный загрузчик узла завершит задачи запуска (это выполняется с помощью обычной задачи).

I. WaWorkerHost — это стандартный хост-процесс для обычных рабочих ролей. В этом хост-процессе находятся все библиотеки DLL роли и код точки входа роли, такие как OnStart и Run.

J. WaIISHost — это хост-процесс для кода точки входа роли для веб-ролей, использующих полные службы IIS. Этот процесс загружает первую найденную библиотеку DLL, которая использует класс RoleEntryPoint, и выполняет код из этого класса (OnStart, Run, OnStart). В этом процессе вызываются все события RoleEnvironment (например, StatusCheck и Changed), созданные в классе RoleEntryPoint.

K. W3WP — это стандартный рабочий процесс IIS, который используется, если роль настроена на использование полных служб IIS. При этом выполняется запуск AppPool, настроенного в IISConfigurator. В этом процессе вызываются все события RoleEnvironment (например, StatusCheck и Changed), созданные здесь. Обратите внимание, что события RoleEnvironment будут срабатывать в обоих расположениях (WaIISHost и w3wp.exe), если вы подписываетесь на события в обоих процессах.

Рабочие процессы

  1. Пользователь выполняет запрос, например загрузку файлов ".cspkg" и ".cscfg", говорит ресурсу остановиться или изменить конфигурацию и т. д. Это можно сделать с помощью портала Azure или средства, использующего API управления службами, например с помощью функции публикации Visual Studio. Этот запрос переходит к RDFE для выполнения всех операций, связанных с подпиской, а затем передает запрос в FFE. Остальные этапы рабочего процесса — это развертывание нового пакета и его запуск.
  2. FFE находит правильный пул компьютеров (на основе введенных данных, например территориальная группа или географическое расположение, а также входных данных из структуры, например доступность компьютеров) и обменивается данными с главным контроллером структуре в этом пуле компьютеров.
  3. Контроллер структуры находит узел, у которого есть свободные ядра ЦП (или задействует новый узел). Пакет и конфигурация службы копируются на узел, и контроллер структуры взаимодействует с агентом узла в ОС узла для развертывания пакета (настройка DIP, портов, гостевой ОС и т. д.).
  4. Агент узла запускает гостевую ОС и взаимодействует с гостевым агентом (WindowsAzureGuestAgent). Узел отправляет пакеты пульса на гостевую систему, чтобы убедиться, что роль работает в направлении целевого состояния.
  5. WindowsAzureGuestAgent настраивает гостевую ОС (брандмауэр, списки управления доступом, LocalStorage и т. д.), копирует новый XML-файл конфигурации в папку c:\Config, а затем запускает процесс WaHostBootstrapper.
  6. Для полных веб-ролей IIS WaHostBootstrapper запускает IISConfigurator и сообщает ему об удалении всех существующих экземпляров AppPool для веб-роли из IIS.
  7. WaHostBootstrapper считывает задачи Запуска из E:\RoleModel.xml и начинает выполнять задачи запуска. WaHostBootstrapper ожидает завершения всех простых задач запуска и возвращает сообщение об успешном выполнении.
  8. Для полных веб-ролей IIS WaHostBootstrapper указывает IISConfigurator настроить AppPool IIS и указывает сайту на E:\Sitesroot\<index>, где <index> — отсчитываемый от нуля индекс в количестве <Sites> элементов, определенных для службы.
  9. WaHostBootstrapper запустит хост-процесс в зависимости от типа роли:
    1. Рабочая роль: запускается WaWorkerHost.exe. WaHostBootstrapper выполняет метод OnStart(). После его завершения WaHostBootstrapper начинает выполнение метода Run(), а затем помечает роль как готовую и одновременно отправляет ее в подсистему балансировки нагрузки (если определены InputEndpoints). Затем WaHostBootsrapper переходит в цикл проверки состояния роли.
    2. Полная веб-роль IIS: запускается aIISHost. WaHostBootstrapper выполняет метод OnStart(). После его завершения он начинает выполнять метод Run(), а затем одновременно помечает роль как готовую и отправляет ее в подсистему балансировки нагрузки. Затем WaHostBootsrapper переходит в цикл проверки состояния роли.
  10. Входящие веб-запросы к полной веб-роли IIS заставляют IIS запустить процесс W3WP и обработать запрос так же, как и в локальной среде IIS.

Расположение файлов журнала

WindowsAzureGuestAgent

  • C:\Logs\AppAgentRuntime.Log.
    Этот журнал содержит изменения в службе, включая запуск, остановку и новые конфигурации. Если служба не меняется, в этом файле журнала будет много пустого места.
  • C:\Logs\WaAppAgent.Log.
    Этот журнал содержит обновления состояния и уведомления о пульсе и обновляется каждые 2–3 секунды. Этот журнал содержит архивные данные о состоянии экземпляра и сообщает, когда экземпляр не находится в состоянии готовности.

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

Журналы IIS

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

Журналы событий Windows

D:\Windows\System32\Winevt\Logs