Microsoft Windows Azure. Быстрый старт. Часть 5. Развертывание VM-роли
Мы завершим рассмотрение развертывания приложений в Windows Azure кратким обсуждением развертывания VM-роли – специализированной роли, позволяющей разработчикам использовать собственные образы виртуальных машины на базе Windows Server 2008 R2 для их запуска в инфраструктуре Windows Azure.
См. также предыдущие части цикла по развертыванию приложений:
- Часть 1. Развертывание приложений. Часть 1
- Описываются подходы к публикации приложений в Windows Azure, развертывание под эмулятором Windows Azure, развертывание в Windows Azure, процесс развертывания приложения
- http://blogs.technet.com/b/isv_team/archive/2011/07/05/3439621.aspx
- Часть 2. Развертывание приложений. Часть 2
- Описывается создание сертификата, загрузка сертификата на портал Windows Azure, публикация с помощью Visual Studio, развертывание вручную, содержимое пакета развертывания
- http://blogs.technet.com/b/isv_team/archive/2011/07/15/3441848.aspx
- Часть 3. Стартовые задачи и дополнительные файлы
- Описывается использование стартовых задач (startup tasks) и в состав проекта включение дополнительных файлов
- http://blogs.technet.com/b/isv_team/archive/2011/07/26/3443549.aspx
- Часть 4. Внутри виртуальной машины Windows Azure
- Приводится пример создания приложения для удаленного запуска команд на виртуальной машине, а также описывается настройка удаленного доступа к виртуальной машине Windows Azure
- http://blogs.technet.com/b/isv_team/archive/2011/08/01/3444532.aspx
Примечание: На момент написания данного обзора (август 2011) VM-роль находилась в бета-тестировании, так что к моменту выхода финальной версии некоторые характеристики этой роли могут измениться.
VM-роль
В большинстве сценариев, веб-роли и прикладная роль, сконфигурированные с использованием стартовых задач (подробнее) являются более «правильным» решением по сравнению с использованием VM-роли. VM-роль дает разработчикам больший контроль над образом виртуальной машины, но при этом задача обновления этого образа (решаемая автоматически для веб-роли и прикладной роли на уровне инфраструктуры Windows Azure) должна выполняться ими самостоятельно. Как следствие, это увеличивает общую стоимость разработки, тестирования и сопровождения такого решения.
VM-роль следует использовать в тех сценариях, когда требуется развертывание приложений, занимающее длительное время и используется развертывание, требующее интерактивных действий. Также, VM-роль используется для запуска приложений, которые в настоящий момент невозможно перенести в модель Windows Azure (с использование веб-ролей и прикладных ролей), приложений, использующих дополнительные компоненты и т.п.
VM-роль поддерживает ту же самую программную модель, что и веб-роль и прикладная роль. Это, в частности означает, что для того, чтобы Windows Azure могла корректно обрабатывать ситуации со сбоями экземпляров роли, приложения не должны хранить состояния и не должны полагаться на сохранение данных на локальных дисках экземпляра роли. Поэтому, в VM-роли не поддерживается работа таких серверных приложений, как SharePoint Server, SQL Server, Small Business Server и Terminal Server, а отсутствие поддержки UDP-трафика означает, что Domain Controller (Active Directory) также не будет работать в VM-роли.
Жизненный цикл VM-роли
Жизненный цикл VM-роли состоит из следующих основных этапов:
- Создание образа виртуальной машины
- Загрузка образа
- Создание сервиса
- Развертывание сервиса
- Сопровождение сервиса
- Обновление сервиса
Визуально данный процесс показан на следующей иллюстрации.
Рис. Жизненный цикл VM-роли
Рассмотрим каждый этап более подробно. Прежде чем начать создание образа виртуальной машины, убедитесь в том, что вы подписаны на бета-программу VM-роли. Это можно сделать из портала Windows Azure (https://windows.azure.com/) в разделе «Программы тестирования бета-версий».
Рис. Программа тестирования VM-роли
Создание образа виртуальной машины
На этом этапе мы выполняем преобразование DVD с операционной системой в виртуальный диск (VHD) или использование существующего виртуального диска. Подробнее о создании виртуальных машин см. http://technet.microsoft.com/ru-ru/library/cc764277(en-us).aspx. Отметим, что в качестве готового образа виртуального диска можно использовать пробную версию Windows Server 2008 R2, которую можно загрузить по адресу http://download.microsoft.com/download/D/E/C/DEC012DC-C822-43C2-88EA-D53234930393/Windows%20Server%202008%20R2%20Enterprise%20Evaluation%20(Full%20Edition).exe.
После того как образ готов и загружен под Hyper-V, необходимо настроить серверную роль и установить несколько дополнительных компонентов:
- Включить серверную роль «Web Server»
- Запустить Server Manager через All Programs | Administrative Tools
- Выбрать элемент «Roles», выполнить команду «Add Roles»
- Выбрать роль «Web Server (IIS) »
- В разделе «Role Services» убедиться, что все ключевые сервисы включены
- Завершить конфигурацию роли сервера
- Установить .NET Framework 3.5
- Выбрать элемент «Features»
- Выполнить команду «Add Features»
- В группе « .NET Framework 3.5.1 Features» выбрать « .NET Framework 3.5.1»
- Дождаться установки выбранных компонентов
- Установить обновления и отключить автоматическое обновление
- Выполнить команду «Start | All Programs | Windows Update»
- Выполнить команду «Change Settings», выбрать опцию «Never check for updates (not recommended) »
- Выполнить команду «Check for updates» и установить все доступные обновления
- Установить Windows Azure VM Role Integration Components. К этим компонентам относятся:
- Fabric Agent
- Интерфейсы времени исполнения (Runtime Interface)
- Средство конфигурации Remote Desktop
- Компонент Azure Diagnostics
- Драйвер Windows Azure Drive
- Windows Azure Connect
- Компоненты Windows Azure VM Role Integration Components входят в состав Windows Azure SDK (http://www.microsoft.com/download/en/details.aspx?id=15658)
- После установки SDK компоненты Windows Azure VM Role Integration Components располагаются в каталоге C:\Program Files\Windows Azure SDK\v1.4\iso в виде образа диска с именем wavmroleic.
Рис. Установка Windows Azure VM Role Integration Components
После того как образ готов, его необходимо протестировать локально, чтобы убедиться в том, что все компоненты на месте, затем развернуть программное обеспечение, которое будет выполняться в VM-роли.
Загрузка образа
На этом этапе мы сохраняем образ виртуального диска в хранилище бинарных объектов Windows Azure Blob Storage. Загрузка образа в Windows Azure Blob Storage осуществляется с помощью утилиты командной строки csupload, которая входит в состав Azure SDK. Для выполнения этой команды запускаем Windows Azure SDK Command Prompt с повышенными привилегиями и выполняем следующую команду:
csupload Add-VMImage -Connection "SubscriptionId=[subscription_id]; CertificateThumbprint=[certificate_thumbprint]" -Description "[description]" -LiteralPath "[vhd_location]" –Name [vhd_filename] -Location "[azure_subregion]" -TempLocation %TEMP% -SkipVerify
где:
Опция ``Add`` - ``VMImage`` указывает на операцию добавления локального виртуального диска в хранилище ``Windows``Azure
Опция – ``Connection`` указывает параметры соединения с ``Windows``Azure``:
- subscription_ id – идентификатор подписки, в рамках которой будет загружен образ виртуального диска
- certificate_ thumbprint - это идентификатор management-сертификата, загруженного для указанной выше подписки
Опция – ``Description
Задает описание для данной загрузки
Опция –``LiteralPath
Задает местоположение образа на локальной машине или в сети
Опция ``–Name
Задает имя образа
Опция –``Location
Задает местоположение образа в ``Windows``Azure`` – необходимо указать суб-регион для размещения. Названия суб-регионов можно найти на портале ``Windows``Azure
Две последние опции нужны в тех случаях, когда у нас нет доступа на запись в папку с образом на локальном или сетевом компьютере
Опция –``TempLocation`` задает местоположение временной папки
Опция –``SkipVerify`` указывает на необходимость пропуска проверки образа – это может понадобиться при развертывании образа с 32-битной версии ``Windows`` 7
Для получения более подробной информации об опциях
утилиты командной строки csupload запустите ее с опцией ``get`` - ``help`` – это выдаст список всех команд или ``get`` - ``help`` <имя_команды> `` (например ``get`` - ``help``add`` - ``vmimage`` ) для получения подробного описания команды ``add`` - ``vmimage`` .
Развертывание сервиса
На этом этапе, с помощью Visual Studio 2010 мы описываем сервисную модель и развертываем сервис. Чтоб сформировать конфигурационные файлы, можно использовать поддержку VM-роли в Visual Studio. Чтобы включить поддержку VM-роли в Visual Studio, следует внести изменения в реестр – записать следующую настройку:
[HKEY_CURRENT_USER\SOFTWARE\Wow6432Node\Microsoft\Windows Azure Tools for Microsoft Visual Studio 2010\1.0]
"VirtualMachineRoleEnabled"=dword:00000001
Рис. Включение поддержки VM-роли в Visual Studio
Скрит для 32- и 64-битной версии Visual Studio можно скачать по следующим адресам:
После включения поддержки VM-роли в Visual Studio необходимо выполнить следующие действия:
- Создать новый проект на Windows Azure и не добавлять в него никаких ролей.
- В Solution Explorer выбрать название проекта, нажать правую кнопку «мыши» и выполнить команду «Add | New Virtual Machine Role».
Рис. Добавление VM-роли к проекту
Далее, в панели свойств VM-роли мы указываем:
- На вкладке «Virtual Hard Disk»
- Сертификат для доступа к порталу Windows Azure. Это может быть тот же Management-сертификат, что и для развертывания других типов ролей из Visual Studio
- Местоположение образа виртуальной машины в Windows Azure Storage
- На вкладке «Configuration»
- Число экземпляров виртуальной машины
- Размер виртуальной машины (по умолчанию используется Small)
- Необходимость поддержки диагностики (по умолчанию включена, нужно изменить тип хранилища в случае использования в виртуальной машине)
- На вкладке «Settings»
- Дополнительные конфигурационные настройки
- На вкладке «Endpoints»
- Порты, открываемые в виртуальной машине
- На вкладке «Virtual Network»
- Необходимость во включении Windows Azure Connect – для этого у вас должен быть активационный маркер (activation token), полученный на портале Windows Azure
Настройки для VM-роли будут выглядеть примерно так, как показано на следующих иллюстрациях.
Рис. Описание сервиса (Service Definition)
Рис. Конфигурация сервиса (Service Configuration)
После того как все сконфигурировано, выбираем в Solution Explorer название проекта, нажимаем правую кнопку «мыши» и выполняем команду «Publish». Далее – все как и при публикации других типов ролей – см. предыдущие посты в рамках данного цикла, перечисленные в начале данной публикации.
Сопровождение сервиса
После того как виртуальная машина запустилась в Windows Azure, в нее можно зайти через терминал (этот процесс ничем не отличается от рассмотренного нами выше процесса для других типов ролей), выполнить тестирование, настройки и т.п.
В понятие «сопровождение сервиса» также входят такие операции, как перезагрузка образа (при необходимости), изменение образа и т.п.
Обновление сервиса
Под обновлением сервиса мы повторение перечисленных выше шагов с использованием нового образа операционной системы.
Желающие пройти весь процесс по шагам (для этого потребуется Windows Server 2008 R2 с включенным Hyper-V) – это займет порядка 2-х часов, могут выполнить лабораторную работу, описание которой находится по адресу http://msdn.microsoft.com/en-us/windowsazure/wazplatformtrainingcourse_vmrolelab_topic2.
На этом наше обсуждение различных вариантов развертывания в Windows Azure заканчивается. Последующие публикации в данном блоге будут посвящены другим вопросам, связанным с созданием приложений на платформе Windows Azure.
/АФ
Comments
Anonymous
August 12, 2011
Так-то здорово, только пока бесполезно, т.к. azure недоступен в РФAnonymous
November 04, 2011
Даже удивительно что столь старый материал, исходяший от компании Microsoft пестрит чудовищными ошибками которые никак не помогают справиться с простой казалось бы задачей закачки образа vhd в azure. Я прихожу к выводу что те кто подготовил этот текст и сюда поместил не более чем роботы которые тупо переводят старые материалы из англоязычного msdn. Очень хотел бы вам при случае сказать свое "фи" за бессмысленную и ничем не помогающу работу которую вы несомненно делаете и думаете что она кому либо полезна.