Развертывание приложений в Windows Azure

advertisement
Практическая
лабораторная работа
Развертывание приложений в Windows
Azure
Версия:2.0.0
Обновлено:
1/21/2016
Страница | 1
СОДЕРЖАНИЕ
ОБЗОР.......................................................................................................................................................... 3
УПРАЖНЕНИЕ 1: РАЗВЕРТЫВАНИЕ ПРИЛОЖЕНИЯ С ИСПОЛЬЗОВАНИЕМ ПОРТАЛА
УПРАВЛЕНИЯ WINDOWS AZURE ............................................................................................................ 6
Задание 1 – Создание аккаунта хранилищ и сервисного компонента ........................................... 6
Задание 2 – Развертывание приложение с помощью портала управления Windows Azure ..... 14
Задание 3 – Настройка количества экземпляров ........................................................................... 23
Задание 4 – Тестирование приложения в тестовом(staging) развертывании ............................. 25
Задание 5 – Перевод приложения в реальное развертывание .................................................... 28
УПРАЖНЕНИЕ 2: УПРАВЛЕНИЕ ПРИЛОЖЕНИЯМИ WINDOWS AZURE С ПОМОЩЬЮ
POWERSHELL ........................................................................................................................................... 31
Задание 1 – Создание самоподписанного сертификата (опционально)...................................... 31
Задание 2 – Подготовка аккаунта Windows Azure .......................................................................... 32
Задание 3 – Загрузка пакета сервиса с использованием Windows PowerShell............................ 36
Задание 4 – Обновление развертывания с использованием Windows PowerShell..................... 40
Проверка ............................................................................................... Error! Bookmark not defined.
УПРАЖНЕНИЕ 3: ИСПОЛЬЗОВАНИЕ VISUAL STUDIO ДЛЯ РАЗВЕРТЫВАНИЯ ПРИЛОЖЕНИЙ 45
Задание 1 – Настройка решения для его развертывания.............................................................. 45
Задание 2 – Создание самоподписанного сертификата средствами Visual Studio ..................... 46
Задание 3 – Развертывание сервиса с Windows Azure Tools ......................................................... 53
УПРАЖНЕНИЕ 4: БЕЗОПАСНОСТЬ WINDOWS AZURE С SSL .......................................................... 60
Задание 1 – Добавление в приложение точки входа HTTPS ......................................................... 60
Задание 2 – Создание самоподписанного сертификата ................................................................ 65
Задание 3 – Добавление сертификата в сервисную модель приложения .................................. 70
Задание 4 – Загрузка сертификата на портал Windows Azure ....................................................... 72
Проверка ............................................................................................... Error! Bookmark not defined.
Задание 5 – Создание записи CNAME для DNS-определения (опционально) ............................. 75
ЗАКЛЮЧЕНИЕ .......................................................................................................................................... 79
Страница | 2
Обзор
В этой практической лабораторной работе вы научитесь развертывать ваше приложение в
Windows Azure. В лабораторной используется приложение myTODO – простое приложение для
создания и управления списками, разработанное на ASP.NET MVC. Лабораторная содержит шаги,
необходимые для подготовки необходимых компонентов на портале управления Windows Azure,
загрузки пакета сервиса и дальнейшей конфигурации. Вы увидите, как можно тестировать ваше
приложение в тестовом (staging) развертывании и как переводить приложение в реальное
(production) развертывание, когда вы убедитесь, что оно работает так, как предполагается.
Изображение 1
Приложение myTODO, запущенное в Windows Azure
Также мы рассмотрим развертывание, обновление и конфигурирование приложений Windows
Azure с помощью Service Management API. Вы воспользуетесь инструментарием по управлению
сервисами Windows Azure Service Management Tools, «обёртывающим» API управления, для
Страница | 3
выполнения скриптов Windows Powershell. И, наконец, вы примените для задачи прямого
развертывания с использованием Visual Studio инструменты Windows Azure Tools.
Вы также научитесь осуществлять защищённое SSL подключение к сервису в Windows Azure.
Цели
В этой практической лабораторной вы научитесь:

Использовать портал управления Windows Azure для создания аккаунтов хранилища и
сервисов

Развертывать пакеты сервисов с использованием пользовательского интерфейса
портала управления Windows Azure

Изменять значения настроек конфигурации развернутого приложения

Тестировать сервисы в отдельном тестовом (staging) развертывании перед переводом
его в реальное (production)

Использовать Windows PowerShell для развертывания, обновления и
конфигурирования сервисов Windows Azure с помощью кода

Использовать для развертывания сервиса из Visual Studio инструменты Windows Azure
Tools

Обеспечивать безопасность приложений Windows Azure с SSL
Требования
Для выполнения лабораторной работы необходимо иметь следующее установленное ПО:

Microsoft .NET Framework 4.0

Microsoft Visual Studio 2010

ASP.NET MVC 2

Windows Azure Tools for Microsoft Visual Studio 1.6

IIS 7 (с ASP.NET, WCF HTTP Activation, Tracing)

Windows Azure Service Management CmdLets 1.0
Примечание: исходный код для командлетов управления сервисами Windows Azure расположен
в папке Assets и устанавливается во время настройки.
Страница | 4
Настройка
Для выполнения упражнений вы должны настроить соответствующим образом среду.
1. Откройте Windows Explorer и перейдите в подпапку лабораторной Source.
2. Щелкните два раза на файле Setup.cmd для запуска процесса настройки, который
настроить среду и установит сниппеты кода Visual Studio, необходимые для лабораторной.
3. Если во время настройки появится диалоговое окно User Account Control, подтвердите
действие.
Примечание: Перед запуском скрипта настройки убедитесь, что у вас установлено всё, что
необходимо для лабораторной.
Упражнения
Лабораторная включает в себя следующие упражнения:
1. Развертывание приложения с использованием портала управления Windows Azure
2. Использование PowerShell для управления приложениями Windows Azure
3. Развертывание приложений с помощью Visual Studio
4. Обеспечение безопасного подключения с SSL
Примерное время на выполнение лабораторной работы: 90 минут.
Примечание: При первом запуске Visual Studio вы должны выбрать один из предустановленных
наборов настроек. Каждый набор настроек спроектирован с целью использования с различными
стилями разработки и определяет расположение окон, поведение редактора, сниппеты кода
IntelliSense и опции диалоговых окон. Данная лабораторная подразумевает использование
набора настроек General Development Settings. Обратите внимание: если вы выберите другой
набор настроек, могут быть различия с представленными описаниями.
Страница | 5
Упражнение 1: Развертывание
приложения с использованием
портала управления Windows Azure
В этом упражнении вы развернете в Windows Azure приложение myTODO, используя портал
управления Windows Azure. Для этого необходимо подготовить соответствующие компоненты,
загрузить пакет приложения в тестовое (staging) развертывания и провести настройку. После этого
вы запустите приложение в тестовом развертывании, проверив его работоспособность.
Удостоверившись, что приложение работает так, как предполагается, вы переведете приложение
в реальное развертывание.
Примечание: Для выполнения упражнения вам необходимо зарегистрировать аккаунт Windows
Azure и приобрести подписку
Инструкция - Provisioning Windows Azure.
Задание 1 – Создание аккаунта хранилищ и сервисного компонента
Приложение, развертываемое в этом упражнении, требует наличия вычислительных ресурсов и
сервисов хранилища. В этом задании вы создадите новый аккаунт хранилища Windows Azure для
возможности сохранения приложением данных в долговременное хранилище. Кроме этого вы
определите сервисный компонент для выполнения вашего приложения.
1. Откройте в веб-браузере http://windows.azure.com и войдите в систему, используя ваш
Windows Live ID, к которому привязан аккаунт Windows Azure.
Страница | 6
Изображение 2
Вход на портал управления Windows Azure
2. Создайте новый аккаунт хранилища, в котором будут храниться данные приложения. В
меню Windows Azure нажмите New Storage Account.
Изображение 3
Создание нового аккаунта хранилища
Страница | 7
3. В появившемся диалоговом окне Create a New Storage Account выберите в выпадающем
списке Choose a subscription вашу подписку.
Изображение 4
Выбор подписки для размещения аккаунта хранилища
4. В текстовом поле Enter a URL введите имя вашего аккаунта хранилища, например,
<yourname>mytodo, где <yourname> является уникальным именем. Windows Azure
использует это значение для создания URL точек входа для сервисов аккаунта хранилища.
Изображение 5
Выбор URL для нового аккаунта хранилища
Примечание: имя, используемое для аккаунта хранилища, должно соответствовать DNSимени и стандартам именования DNS. Более того, имя является публично видимым и
должно быть уникальным. Портал проверяет доступность, уникальность и соответствие
правилам имени. Если имя не пройдёт проверку, будет выведено сообщение об ошибке.
Страница | 8
5. Выберите Create or choose an affinity group и нажмите в выпадающем списке Create a new
affinity group.
Изображение 6
Создание новой аффинной группы
Примечание: новая аффинная группа необходима для размещения сервиса и аккаунта
хранилища в одном месте, что обеспечивает высокую пропускную способность и низкую
латентность между приложением и данными, которые оно использует.
6. В диалоговом окне Create a New Affinity Group введите в текстовое поле Affinity Group
Name имя аффинной группы, выберите расположение (Location) в выпадающем списке и
нажмите OK.
Изображение 7
Создание новой аффинной группы
Страница | 9
7. Вернувшись в диалоговое окно Create a New Storage Account, нажмите Create для
создания нового аккаунта хранилища. Подождите окончания процесса инициализации
аккаунта и обновления «дерева» Storage Accounts. Обратите внимание, что панель
свойств Properties показывает URL, ассоциированный с каждым сервисом в аккаунте
хранилища. Запишите публичное имя аккаунта хранилища – первый сегмент URL ваших
точек входа.
Изображение 8
Аккаунт хранилища успешно создан
8. Нажмите кнопку View, расположенную рядом с Primary access key в панели свойств
Properties. В диалоговом окне View Storage Access Keys нажмите Copy to Clipboard (рядом
с Primary Access Key). Это значение понадобится для конфигурирования приложения.
Страница | 10
Изображение 9
Получение ключей к аккаунту хранилища
Примечание: Первичный Primary Access Key и вторичный ключи доступа Secondary
Access Key предоставляют общий секретный ключ, который можно использовать для
доступа к хранилищу. Вторичный ключ аналогичен первичному и необходим для целей
резервирования. Вы можете пересоздать каждый из ключей в случае
скомпрометирования одного из них.
9. Создайте вычислительный сервис, который будет выполнять код вашего приложения. На
левой панели нажмите Hosted Services и нажмите кнопку New Hosted Service,
расположенную в меню.
Изображение 10
Создание нового сервиса
Страница | 11
10. В диалоговом окне Create a new Hosted Service выберите вашу подписку из выпадающего
списка Choose a subscription.
Изображение 11
Выбор подписки
11. Введите имя сервиса в текстовое поле Enter a name for your service и укажите URL, введя
соответствующее значение Enter a URL prefix for your service, например,
<yourname>mytodo, где <yourname> должно быть уникальным именем. Windows Azure
использует это значение для создания URL точек входа в сервис.
Страница | 12
Изображение 12
Настройка URL и аффинной группы сервиса
Примечание: Если это возможно, используйте одинаковое имя для аккаунта хранилища
и сервиса. Однако вы должны будете выбрать другое имя, если одно из них будет
недоступно.
Примечание: Портал производит проверку доступности и соответствия правилам имени.
Если имя не пройдёт проверку, будет выведено сообщение об ошибке.
12. Выберите в выпадающем списке Create or choose an affinity group аффинную группу,
которую вы создали ранее для аккаунта хранилища.
Изображение 13
Выбор аффинной группы
Примечание: Выбрав эту аффинную группу, вы определяете, что сервис и аккаунт
хранилища, созданный ранее, будут расположены в одном датацентре.
13. Укажите Do not Deploy.
Страница | 13
Примечание: Несмотря на то, что вы можете создать и развернуть ваше приложение в
Windows Azure одной операцией, заполнив секцию Deployment Options, в этой
лабораторной вы выполните развертывание в следующем задании.
14. Нажмите OK для создания сервиса и подождите, пока не завершится процесс
инициализации.
Изображение 14
Сервис успешно создан
15. Не закрывайте окно браузера.
Задание 2 – Развертывание приложение с помощью портала управления Windows Azure
Вычислительный сервис – это сервис, выполняющий ваш код в среде Windows Azure. Этот сервис
имеет две ячейки развертывания – тестовую (staging) и реальную (production). Тестовое
развертывание позволяет протестировать ваше приложение в среде Windows Azure перед
развертыванием в реальное.
В этом задании вы создадите пакет сервиса для приложения myTODO и развернете его в тестовое
развертывание, используя портал управления Windows Azure.
1. Откройте Microsoft Visual Studio 2010 в режиме администратора: в Start | All Programs |
Microsoft Visual Studio 2010 нажмите правой кнопкой мыши на ярлыке Microsoft Visual
Studio 2010 и выберите Run as Administrator.
2. В меню File выберите Open и Project/Solution. В диалоговом окне Open Project перейдите
в папке Ex1-DeployingWithWindowsAzurePortal\Begin в папке лабораторной Source,
Страница | 14
выберите MyTodo.sln, исходя из используемого вами языка программирования (Visual C#
или Visual Basic) и нажмите Open.
Решение состоит из следующих проектов:
MyTodo
Стандартный «облачный» проект, настроенный с использованием
одной web-роли под названием MyTodo.WebUx
MyTodo.Data.WindowsAzure
Проект-библиотека, содержащий контракты данных для
приложения MyTodo.WebUx для хранилища таблиц
AspProviders
Реализация провайдеров ASP.NET Membership, Role, и
SessionState для хранилища Azure Storage
MyTodo.WebUx
Web-роль, содержащая ASP.NET MVC приложение MyTODO в
Windows Azure
3. Убедитесь, что в пакете сервиса присутствует сборка System.Web.Mvc. Чтобы сделать это,
для проекта на Visual C#, разверните в Solution Explorer узел References для проекта
MyTodo.WebUx, нажмите правой кнопкой мыши на сборке System.Web.Mvc и выберите
Properties. Для проекта на Visual Basic нажмите правой кнопкой мыши на проекте
MyTodo.WebUx и нажмите Properties. В окне свойств Project Properties переключитесь на
вкладку References , выберите System.Web.Mvc и нажмите F4.
Чтобы добавить сборку в пакет сервиса, в окне свойств Properties сборки System.Web.Mvc
убедитесь, что опция Copy Local указана как True. Если опция указана как False,
переопределите ее значение на True.
Страница | 15
Изображение 15
Включение сборок в пакет сервиса, развертываемый в Windows Azure
Примечание: Вам необходимо определить Copy Local = True для всех сборок, не
установленных в Windows Azure по умолчанию, для того, чтобы они были развернуты
вместе с вашим приложением.
4. Измените размер виртуальной машины, которая будет использоваться для вашего
приложения. Чтобы сделать это, в Solution Explorer разверните в проекте MyTodo узел
Roles и два раза щелкните на роли MyTodo.WebUX, чтобы открыть окно свойств. На
странице Configuration найдите опцию VM Size, расположенную в секции Instances, и
укажите в выпадающем меню размер Extra small.
Страница | 16
Изображение 16
Настройка размера виртуальной машины
Примечание: При создании сервисной модели вы можете определить размер
виртуальной машины, который будет применен к виртуальным машинам, на которых
будут развернуты экземпляры вашего сервиса, на основании требований к ресурсам.
Размер виртуальной машины определяет количество ядер процессора, количество ОЗУ,
размер локальной файловой системы и сетевую пропускную способность.
5. Для настройки хранилища перед развертыванием откройте файл
ServiceConfiguration.cscfg внутри сервиса MyTodo. Замените «болванку»
[YOUR_ACCOUNT_NAME] на имя вашего аккаунта хранилища Storage Account Name,
которое вы выбрали при настройке аккаунта хранилища в Задании 1. Если вы следовали
рекомендации, имя должно следовать правилу <yourname>mytodo, где <yourname> уникальное имя. Замените обе «болванки» в файле, одну для DataConnectionString и
вторую для Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString.
6. Замените «болванку» [YOUR_ACCOUNT_KEY] на первичный ключ доступа Primary Access
Key, который вы записали ранее при создании аккаунта хранилища в Задании 1.
Убедитесь, что вы заменили обе «болванки», для каждой строки подключения.
Страница | 17
Изображение 17
Настройка строк подключения к аккаунту хранилища
7. Определите версию гостевой операционной системы Windows Azure Guest Operating
System, которая будет запущена на виртуальных машинах вашего сервиса. Чтобы сделать
это, щелкните два раза на файле ServiceConfiguration.cscfg в проекте MyTodo, чтобы
открыть этот файл в XML-редакторе. После этого добавьте к корневому элементу
ServiceConfiguration атрибут osVersion и определите его значение в WA-GUEST-OS1.8_201010-01, как показано на изображении ниже.
Примечание: Значение, использующееся в данном случае для атрибута osVersion –
пример того, как можно выбрать, какая версия ОС будет использоваться в вашем
приложении. Вы можете выбрать «высшую» версию.
Изображение 18
Настройка версии гостевой операционной системы для виртуальных машин
приложения
Примечание: Windows Azure Fabric выполняет гостевую ОС с вашим развернутым
приложением. Эта гостевая ОС регулярно обновляется. Иногда обновление гостевой ОС
может привести к проблемам с вашим приложением. С помощью атрибута osVersion вы
можете убедиться, что ваше приложение работает на версии гостевой ОС, которая
совместима с версией Windows Azure SDK, с которой разрабатывалось приложение. Вы
Страница | 18
можете тестировать различные значения osVersion перед переводом в реальное
развертывание.
Для настройки версии ОС необходимо напрямую редактировать файл определения
сервиса, так как текущая версия Windows Azure Tools for Microsoft Visual Studio не
поддерживает определение версии ОС с помощью пользовательского интерфейса.
Windows Azure предоставляет функциональность автообновления, которая
автоматически обновляет сервис для использования последних версий ОС, что позволяет
быть уверенным, что ваш сервис работает в среде с последними обновлениями
безопасности. Этот режим определен по умолчанию, если вы не определяете атрибут
osVersion. Для перевода сервиса в режим автообновления определите значение
osVersion в “*”.
Подробная информация о доступных версиях гостевых ОС Windows Azure Guest OS
Versions and SDK Compatibility Matrix.
8. Нажмите CTRL + S для сохранения изменений в сервисной модели
9. Создайте пакет сервиса, щелкнув правой кнопкой на проекте «облачного» сервиса и
выбрав Package.
10. В диалоговом окне Package Windows Azure Application нажмите Package и подождите,
пока Visual Studio создаст пакет. После создания пакета Visual Studio покажет окно,
содержащее папку с созданными файлами. Закройте окно, убедившись, что пакет создан.
Изображение 19
Создание пакета сервиса в Visual Studio
11. Откройте в веб-браузере страницу Summary в проекте, созданном в предыдущем
задании.
12. На портале выберите созданный ранее сервис и нажмите в меню New Staging Deployment.
Примечание: Вычислительный сервис – это сервис, выполняющий ваш код в среде
Windows Azure. Этот сервис имеет две ячейки развертывания – тестовую (staging) и
Страница | 19
реальную (production). Тестовое развертывание позволяет протестировать ваше
приложение в среде Windows Azure перед развертыванием в реальное.
Изображение 20
Страница Summary вычислительного сервиса
13. В диалоговом окне Create a new Deployment, чтобы определить Package location, нажмите
Browse Locally, перейдите в папку с созданным в шаге 10 пакетов и выберите
MyTodo.cspkg.
Примечание: Файл .cspkg является архивом, содержащим исполняемые файлы и файлы,
необходимые для запуска сервиса. В этом случае это ASP.NET MVC приложение myTODO.
Visual Studio создаёт пакет сервиса при Package на вашем проекте Windows Azure.
14. Чтобы выбрать Configuration File, нажмите Browse Locally и выберите
ServiceConfiguration.cscfg в той же папке, что и в предыдущем шаге.
Примечание: Файл .cscfg содержит настройки конфигурации приложения, включая
количество экземпляров, которое мы будем менять позже.
15. Введите метку для имени развертывания Deployment name, например, v1.0.
Примечание: Портал управления показывает метку в пользовательском интерфейсе для
тестового и реального развертываний, что позволяет идентифицировать версию,
развернутую в данный момент в каждой из ячеек развертывания.
Страница | 20
Изображение 21
Настройка развертывания пакета сервиса
16. Нажмите OK для инициирования развертывания. Обратите внимание на появившееся
предупреждение. Нажмите See more details для просмотра сообщения.
Изображение 22
Просмотр сообщения
Примечание: В этом случае сообщение-предупреждение гласит о том, что количество
экземпляров для сервиса равно одному экземпляру. Так делать не рекомендуется,
Страница | 21
поскольку в таком случае не предоставляются гарантии по доступности сервиса. В
следующем задании вы увеличите количество экземпляров.
17. Нажмите Yes и отправьте запрос о развертывании. Обратите внимание, что пакет начал
загружаться и портал показывает текущий статус процесса развертывания.
Изображение 23
Загрузка пакета сервиса через портал управления Windows Azure
18. Дождитесь окончания процесса развертывания, который может занять несколько минут.
Вы уже загрузили пакет и он находится в состоянии Ready. Обратите внимание, что портал
назначил для развертывания собственное DNS-имя, включающее уникальный
идентификатор. Скоро вы сможете получить доступ по этому URL для тестирования
приложения и определения корректности его работы.
Страница | 22
Примечание: Во время развертывания Windows Azure анализирует файл конфигурации и
копирует сервис на выделенное количество машин, после чего запускает экземпляры. В
это время также настраиваются балансировщики нагрузки, сетевые устройства и
мониторинг.
Изображение 24
Пакет успешно развернут
Задание 3 – Настройка количества экземпляров
Перед тестированием развернутого приложения вам необходимо настроить его. В этом задании
вы измените конфигурацию уже загруженного сервиса и увеличите количество выделенных
экземпляров.
1. В Hosted Services выберите сервис MyTodo и нажмите в меню Configure.
Изображение 25
Настройка конфигурации приложения
Страница | 23
2. В диалоговом окне Configure Deployment выберите Edit current configuration, найдите в
конфигурации MyTodo.WebUX элемент Instances и измените значение атрибута count на
2.
Изображение 26
Настройка количества экземпляров
Примечание: Конфигурация является XML-документом, содержащим значения настроек,
определенных в файле определения сервиса. Его стандартное содержимое определяется
ServiceConfiguration.cscfg, загруженным ранее при развертывании пакета в Задании 2.
Примечание: Настройка Instances определяет количество ролей, запускаемых Windows
Azure и используемая для масштабирования сервиса. Для подписки на основе токенов –
на данный момент доступной только в странах, где не производится биллинг – это
количество ограничено двумя экземплярами. Однако в коммерческом предложении вы
можете изменить это количество на любое количество, за которое будете готовы
платить.
Страница | 24
3. Нажмите OK для обновления конфигурации и дождитесь применения сервисом
обновленных настроек.
Изображение 27
Обновление количества экземпляров роли
Примечание: Во время применения настроек портал отображает статус "Updating
deployment...".
Задание 4 – Тестирование приложения в тестовом(staging) развертывании
В этом задании вы запустите приложения в тестовой среде и получите доступ к нему по URL для
определения корректности его выполнения.
1. В Hosted Services выберите сервис MyTodo и нажмите на ссылку в правой панели под DNS
name.
Изображение 28
Запуск приложения в тестовом развертывании
Страница | 25
Примечание: URL выглядит как <guid>.cloudapp.net, где <guid> - некоторый случайный
идентификатор, отличающийся от адреса, который получит приложение при
развертывании в реальной среде. Хотя ячейки развертывания и разделены между собой,
физических различий между ними нет – все определяется тем, куда подключен
балансировщик нагрузки.
Примечание: В будущем вы сможете иметь несколько «виртуальных» площадок,
например, для тестов, препродакшна, etc...
2. Нажмите Start для подготовки приложения к первому запуску, что потребует создания
нового аккаунта. Перейдите в меню регистрации.
Изображение 29
Приложение в тестовом развертывании
3. Заполните информацию об аккаунте – имя пользователя, e-mail и пароль, и нажмите
Register.
Примечание: Информация аккаунтов содержится в аккаунте хранилища, созданном
ранее. Данные не делятся между списками дел.
Страница | 26
Изображение 30
Создание нового аккаунта
4. Приложение определит списки, имеющиеся в наличии. Так как это первый запуск, списки
отсутствуют.
Страница | 27
Изображение 31
Приложение готово для использования
5. Если хотите исследовать возможности приложения, создайте новый список дел и введите
информацию о делах.
Задание 5 – Перевод приложения в реальное развертывание
Определив корректность работы приложения с помощью тестового развертывания, можно
переводить его в реальное развертывание. При развертывании приложения в реальной среде
Windows Azure перенастраивает балансировщики нагрузки, обеспечивая доступ к приложению по
URL реального развертывания.
1. В Hosted Services выберите сервис MyTodo и нажмите в меню Swap VIP.
Страница | 28
Изображение 32
Перевод приложения в ячейку реального развертывания
2. В диалоговом окне Swap VIPs нажмите OK для перемены местами тестового и реального
развертываний.
Изображение 33
Перевод приложения в реальное развертывание
3. Нажмите на ссылку DNS name для открытия сайта в реальном развертывании в новом
окне браузера и обратите внимание на ссылку в адресной строке браузера.
Страница | 29
Изображение 34
Приложение, запущенное в реальном развертывании
Примечание: Если вы получаете при входе на сайт DNS-ошибку 404, подождите пару
минут и попробуйте еще – возможно, DNS-имя ещё не готово. Windows Azure создает
DNS-имена динамически и применение этих изменений может занять несколько минут.
Примечание: Даже если развертывание находится в статусе suspended, Windows Azure
всё ещё держит выделенные для каждого экземпляра виртуальные машины в рабочем
состоянии, таким образом начисляя за них счёт. После окончания тестирования
приложения вам необходимо удалить развертывание из Windows Azure во избежание
дополнительных затрат. Чтобы удалить выполняемое развертывание, перейдите в
Hosted Services, выберите ячейку развертывания с сервисом, тестовую или реальную, и
нажмите в меню Stop. После остановки сервиса нажмите в меню Delete для удаления
сервиса.
Страница | 30
Упражнение 2: Управление
приложениями Windows Azure с
помощью PowerShell
Обычно в течение жизненного цикла приложения оно испытывает изменения, после которых
необходимо обновлять развернутое приложение. В предыдущем упражнении вы увидели, как
можно использовать для развертывания портал управления Windows Azure. В качестве
альтернативы Service Management API предоставляет программный доступ к большей части
функциональности портала управления. С использованием SMAPI вы можете управлять вашими
аккаунтами хранилища и сервисами, развертываниями и аффинными группами.
Командлеты управления сервисами PowerShell являются «обёрткой» над Service Management API.
Эти командлеты упрощают автоматизацию развертывания, обновления и масштабирования ваших
приложений в Windows Azure. С помощью конвейерной архитектуры команд вы можете писать
сложные скрипты, использующие в качестве входа одной команды выходные данные от другой.
В этом упражнении вы научитесь развертывать и обновлять приложение в Windows Azure
используя командлеты управления сервисами.
Задание 1 – Создание самоподписанного сертификата (опционально)
Чтобы убедиться в том, что доступ к SMAPI безопасен, вы можете «привязать» к вашей подписке
сертификат. Сервис управления использует сертификаты для аутентификации запросов. Вы
можете использовать либо самоподписанный сертификат, либо сертификат, подписанный
центром сертификации. Подходит любой действительный сертификат X.509 v3 с длиной ключа как
минимум равной 2048 бит.
В этом задании вы создадите сертификат, который сможете загрузить на портал управления
Windows Azure. Этот шаг является опциональным, если у вас уже есть сертификат, подписанный
центром сертификации.
1. Откройте в режиме администратора командную строку Visual Studio Command Prompt.
Для этого: в Start | All Programs | Microsoft Visual Studio 2010 | Visual Studio Tools | Visual
Studio Command Prompt (2010) щелкните правой кнопкой мыши на ярлыке Visual Studio
2010 Command Prompt и выберите Run as administrator.
2. Измените текущую папку на папку, где вы хотите хранить файл вашего сертификата.
3. В строке ввода введите следующую команду, которая создаст файл сертификата.
Visual Studio Command Prompt
makecert -r -pe -n "CN=AzureMgmt" -a sha1 -len 2048 -ss My "AzureMgmt.cer"
Страница | 31
Примечание: Эта команда создает новый самоподписанный сертификат с длиной ключа
2048 бит и записывает его в файл "AzureMgmt.cer", находящийся в текущей директории,
и сохраняет его в My certificate текущего пользователя.
Задание 2 – Подготовка аккаунта Windows Azure
Для использования SMAPI вам необходимо загрузить сертификат в ваш аккаунт Windows Azure для
обеспечения аутентификации. Кроме этого, для использования API управления и командлетов
PowerShell необходимо предоставить дополнительные данные, такие как имя сервиса, отпечаток
(thumbprint) сертификата и ID подписки вашего аккаунта Windows Azure.
В этом задании вы загрузите сертификат в ваш аккаунт Windows Azure и получите необходимую
информацию, включая отпечаток сертификата и ID подписки.
1. Перейдите на https://windows.azure.com и зайдите в систему используя ваш Windows Live
ID.
2. Нажмите Hosted Services, Storage Accounts & CDN, выберите в левой панели Management
Certificates. Нажмите в меню кнопку Add Certificate.
Изображение 35
Управление сертификатами на портале управления Windows Azure
3. Выберите вашу подписку и загрузите новый сертификат с вашего локального хранилища.
Для этого нажмите Browse, найдите файл вашего сертификата и нажмите OK.
Страница | 32
Изображение 36
Добавление нового сертификата управления
Примечание: Service Management API принимает любой действительный сертификат
X.509 v3 с длиной ключа не менее 2048 бит. Вы можете использовать либо
самоподписанный сертификат, созданный ранее, либо сертификат, подписанный
центром сертификации.
Если вы загружаете самоподписанный сертификат на портал сразу же после его
создания, портал может отказать вам в связи с различиями между временем,
установленным на вашем компьютере и установленным на сервере (так как время на
сервере может быть «впереди» значения даты сертификата Valid From). Если при
загрузке сертификата вы получаете ошибку ”Certificate is not yet valid”, вы можете либо
подождать несколько минут для синхронизации времени либо перезапросить
сертификат, используя команду makecert с указанием даты, находящейся в прошлом.
4. Обратите внимание на значение в поле Thumbprint для установленного только
сертификата и на значение в поле Subscription Id. Вы можете сделать это, щелкнув на
корневом узле Subscription.
Страница | 33
Изображение 37
Свойства сертификата
Страница | 34
Изображение 38
Свойства подписки
5. Выберите в левой панели Hosted Services. Щелкните на сервисе MyTodo v1.0. Вы можете
получить имя сервиса с помощью ссылки DNS name, находящейся в Properties и имеющей
формат http://<ИМЯ_СЕРВИСА>.cloudapp.net.
Страница | 35
Изображение 39
Получение DNS-имени сервиса
Примечание: Вы воспользуетесь полями Thumbprint, Subscription ID, Service Name в
следующем задании при развертывании сервиса.
Можно скопировать эти значения в блокнот.
Задание 3 – Загрузка пакета сервиса с использованием Windows PowerShell
В предыдущем упражнении вы загружали пакет сервиса для приложения myTODO, используя
портал управления Windows Azure. В этом задании вы загрузите пакет с использованием
командлетов управления сервисами PowerShell.
1. Запустите Microsoft Visual Studio 2010 в режиме администратора. Для этого в Start | All
Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши на ярлыке
Microsoft Visual Studio 2010 и выберите Run as administrator.
2. В меню File нажмите Open и Project/Solution. В диалоговом окне Open Project перейдите в
Ex2-DeployingWithPowerShell\Begin в папке лабораторной Source, выберите
соответствующий вашему языку программирования (Visual C#/Visual Basic) MyTodo.sln и
нажмите Open.
3. Настройте строки подключения к хранилищу. Для этого разверните в проекте MyTodo узел
Roles и щелкните два раза на роли MyTodo.WebUX. В окне свойств роли выберите вкладку
Settings, отметьтье настройку DataConnectionString, убедитесь, что значение ее свойства
Type установлено в ConnectionString и нажмите на иконку с троеточием.
Страница | 36
Изображение 40
Определение строк подключения к аккаунту хранилища
4. В диалоговом окне Storage Connection String выберите Enter storage credentials. Заполните
имя аккаунта Account Name и ключ доступа Account Key и нажмите OK.
Изображение 41
Страница | 37
Настройка имени аккаунта хранилища и ключа доступа
Примечание: Эти данные доступны в секции вашего аккаунта хранилища Summary на
портале управления Windows Azure. Вы используете те же самые настройки, что и в
упражнении 1, когда вы развертывали и настраивали приложение.В этом случае, так как
приложение уже работало в Windows Azure, вы обновляли конфигурацию на портале
управления.
5. Повторите последовательность действий для настройки
Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString используя ту же информацию.
6. Для создания пакета сервиса щелкните правой кнопкой мыши на проекте «облачного»
сервиса и нажмите Package. В диалоговом окне Package Windows Azure Application
нажмите Package и подождите окончания процесса создания. Когда пакет будет готов,
Visual Studio откроет окно с содержимым папки с созданным пакетом. Закройте окно.
7. Откройте командную строку Windows PowerShell. В Windows Vista, Windows Server 2008, и
поздних версиях Windows в меню Start откройте All Programs | Accessories | Windows
PowerShell, и выберите Windows PowerShell. В Windows XP и Windows Server 2003, в меню
Start откройте Programs | Accessories | Windows PowerShell и выберите Windows
PowerShell.
8. В строке ввода введите следующую команду для добавления поддержки в текущей сессии
командлетов управления сервисами Windows Azure.
PowerShell
Add-PSSnapin AzureManagementToolsSnapIn
9. Измените текущую папку на папку, где вы создали пакет сервиса для приложения myTODO
в шаге 6.
10. Введите команду ниже. Используйте аргументы, убедившись, что вы заменили
«болванки» правильными значениями вашего аккаунта, определенные в задании 1 в этом
упражнении.
PowerShell
New-Deployment -serviceName <YOUR_SERVICE_NAME_LOWER_CASE> -subscriptionId
<YOUR_SUBSCRIPTION_ID> -certificate (get-item
cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMBPRINT>) -slot staging –package
<PACKAGE_LOCATION> -configuration <CONFIGURATION_LOCATION> -label "v2.0" –
storageServiceName <YOUR_STORAGE_SERVICE_NAME_LOWER_CASE>
Страница | 38
<YOUR_SERVICE_NAME_LOWER_CASE>
Выбранное в упражнении имя сервиса, не
его метка.
<YOUR_SUBSCRIPTION_ID>
ID подписки вашего аккаунта Windows
Azure.
<YOUR_CERTIFICATE_THUMBPRINT>
Значение отпечатка (в высшем регистре)
для загруженного ранее сертификата.
< PACKAGE_LOCATION>
Локальный путь к файлу или URL блоба в
хранилище Azure, содержащий пакет
сервиса.
< CONFIGURATION_LOCATION>
Локальный путь к файлу или публичный
URL блоба, содержащий файл
конфигурации сервиса.
<YOUR_STORAGE_SERVICE_NAME_LOWER_CASE>
Имя аккаунта хранилища.
Примечание: Команда, показанная выше, использует для загрузки пакета сервиса и
создания нового развертывания в тестовой среде командлет New-Deployment. Для
развертывания назначается метка "v2.0".
Обратите внимание, что параметр certificate ожидает объект сертификата. Для получения
необходимого сертификата вы можете использовать get-item и провайдера
сертификатов PowerShell для получения сертификата по его отпечатку. Убедитесь, что вы
указали отпечаток в высшем регистре.
Важно: Командлет New-Deployment подразумевает, что имена вычислительного сервиса
и сервиса хранилища одинаковы. Если это не так, вы можете указать -StorageServicename
<YOUR_SERVICE_NAME_LOWER_CASE>, заменив «болванку» на имя сервиса хранилища.
Например, для развертывания сервиса с именем “yournametodo”, используя аккаунт с ID
подписки 12abb234-45c9-4b37-8179-e7d88617cb5e, отпечатком сертификата
6062B026CF12FE6CD1E3A2CE22893E5CD1DA59C7, пакетом MyTodo.cspkg, файлом
конфигурации ServiceConfiguration.cscfg, и меткой развертывания v2.0 можно
использовать следующую команду.
Изображение 42
Команда New-Deployment
Страница | 39
11. Нажмите ENTER для выполнения команды. Так как операция New-Deployment является
асинхронной, управление будет возвращено сразу, операция же продолжит выполняться
в «фоне».
Изображение 43
Развертывание нового пакета сервиса Windows Azure используя PowerShell
12. На портале управления Windows Azure откройте Summary и обратите внимание на статус
развертывания в тестовой среде - "Updating deployment...". Процесс может занять
некоторое время, после чего статус будет обозначен как Stopped.
Примечание: Обычно нет необходимости использовать портал управления для
наблюдения за статусом операций развертывания. Здесь показан лишь факт того, что вы
можете использовать API для тех же целей, что и портал. В следующем задании вы
увидите, как использовать командлет для ожидания окончания процесса развертывания
и получения его статуса.
13. Оставьте открытыми Microsoft Visual Studio и консоль PowerShell.
Задание 4 – Обновление развертывания с использованием Windows PowerShell
В этом задании вы будете использовать командлеты для обновления существующего
развертывания. Сначала необходимо внести небольшие изменения в код сервиса и получить
обновленную версию. Далее необходимо собрать приложение и создать новый пакет сервиса.
После этого необходимо, используя командлеты управления, развернуть обновленную версию
пакета в Windows Azure.
1. Вернитесь в Microsoft Visual Studio.
2. Откройте master-страницу приложения: в Solution Explorer щелкните два раза на
Site.Master в папке Views\Shared в проекте MyTodo.WebUx. Переключитесь в режим
редактирования кода.
3. Вставьте новый заголовок в «подвал» страницы: перейдите в конец master-страницы и
обновите сведения о копирайте на “(Deployed with the PowerShell CmdLets)”.
HTML
Страница | 40
...
</div>
<div id="footer">
<hr />
<p class="copyright">
© 2009 Microsoft Corporation. All rights reserved. (Deployed
with the PowerShell CmdLets)</p>
<p class="powered"><a
href="http://www.microsoft.com/azure/windowsazure.mspx"><img
src="<%=Url.Content("~/Content/images/powered-by-azure.png")%>" width="188"
height="38" alt="Powered by Windows Azure" /></a></p>
</div>
<asp:ContentPlaceHolder ID="ScriptsContent" runat="server" />
</div>
</body>
</html>
4. Для создания пакета сервиса щелкните правой кнопкой мыши на проекте «облачного»
сервиса и нажмите Package. В диалоговом окне Package Windows Azure Application
нажмите Package и подождите окончания процесса создания. Когда пакет будет готов,
Visual Studio откроет окно с содержимым папки с созданным пакетом. Закройте окно.
5. Переключитесь в консоль PowerShell и введите команду, показанную ниже, заменив
«болванки» на соответствующие вашему аккаунту значения. Пока не выполняйте команду.
PowerShell
Get-HostedService -serviceName <YOUR_SERVICE_NAME> -subscriptionId
<YOUR_SUBSCRIPTION_ID> -certificate (get-item
cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMBPRINT>) |
Get-Deployment staging |
Set-Deployment -package <PACKAGE_LOCATION> -configuration
<CONFIGURATION_LOCATION> -label "v2.1"
<YOUR_SERVICE_NAME_LOWER_CASE>
Выбранное в упражнении имя сервиса, не его метка.
<YOUR_SUBSCRIPTION_ID>
ID подписки вашего аккаунта Windows Azure.
<YOUR_CERTIFICATE_THUMBPRINT>
Значение отпечатка (в высшем регистре) для
загруженного ранее сертификата.
< PACKAGE_LOCATION>
Локальный путь к файлу или URL блоба в хранилище
Azure, содержащий пакет сервиса.
<CONFIGURATION_LOCATION>
Локальный путь к файлу или публичный URL блоба,
содержащий файл конфигурации сервиса.
Страница | 41
Примечание: Команда объединяет несколько командлетов. Сначала получается ссылка
на сервис с использованием командлета Get-HostedService, затем получается
информация о тестовом развертывании с помощью Get-Deployment и, наконец пакет
загружается - Set-Deployment. Это пример сложной команды с использованием
конвейера PowerShell. В этом случае вы можете предоставить всю информацию для SetDeployment и получить тот же результат. Например:
Set-Deployment -subscriptionId <YOUR_SUBSCRIPTION_ID> -certificate <YOUR_CERTIFICATE>
-serviceName <YOUR_SERVICE_NAME_LOWER_CASE> -slot staging -package
<PACKAGE_LOCATION> -label <LABEL>
Важно: Командлет Set-Deployment подразумевает, что имена вычислительного сервиса и
сервиса хранилища одинаковы. Если это не так, вы можете указать -StorageServicename
<YOUR_SERVICE_NAME_LOWER_CASE>, заменив «болванку» на имя сервиса хранилища
6. Если вы запустили команду, описанную выше, операция будет работать асинхронно. Для
просмотра статуса операции, вы можете перевести вывод команды в командлет GetOperationStatus и указать параметр WaitToComplete. Добавьте этот командлет, указав
символ конвейера |.
PowerShell Console
Get-HostedService <YOUR_SERVICE_NAME_LOWER_CASE> -subscriptionId
<YOUR_SUBSCRIPTION_ID> -certificate (get-item
cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMBPRINT>) |
Get-Deployment staging |
Set-Deployment -package <PACKAGE_LOCATION> -configuration
<CONFIGURATION_LOCATION> -label "v2.1" |
Get-OperationStatus -WaitToComplete
Изображение 44
Использование конвейера PowerShell для обновления развертывания
7. Нажмите ENTER для выполнения команды. Подождите окончания процесса
развертывания, который может занять несколько минут. По окончании развертывания
Страница | 42
будет показано сообщения с выводом операции – если развертывание окончилось без
ошибок, вы увидите сообщение “Succeeded”.
Изображение 45
Консоль PowerShell показывает статус операции развертывания
Примечание: Развертывание пакета с использованием указанной последовательности
действий не изменяет его состояния. Если сервис не запущен до момента развертывания,
он так и останется незапущенным. Для запуска сервиса вам необходимо обновить статус
развертывания, используя командлет Set-DeploymentStatus.
8. Для изменения статуса сервиса на «запущен», в консоли PowerShell введите следующую
команду.
PowerShell
Get-Deployment staging -serviceName <YOUR_SERVICE_NAME_LOWER_CASE> subscriptionId <YOUR_SUBSCRIPTION_ID> -certificate (get-item
cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMBPRINT>) |
Set-DeploymentStatus running |
Get-OperationStatus –WaitToComplete
9. Поменяйте местами тестовое и реальное развертывания. Для этого в консоли PowerShell
используйте командлеты Get-Deployment и Move-Deployment, заменив «болванки»
<YOUR_SERVICE_NAME>, <YOUR_SUBSCRIPTION_ID> и <YOUR_CERTIFICATE_THUMBPRINT>
на соответствующие значения, использованные ранее.
PowerShell
Get-HostedServices -subscriptionId <YOUR_SUBSCRIPTION_ID> -certificate (getitem cert:\CurrentUser\MY\<YOUR_CERTIFICATE_THUMBPRINT>) |
where {$_.ServiceName –eq “<YOUR_SERVICE_NAME>”} |
Get-Deployment staging |
Move-Deployment |
Get-OperationStatus –WaitToComplete
Проверка
Страница | 43
Теперь, после развертывания обновленного пакета в Windows Azure, можно протестировать его
работоспособность. Запустите приложение по URL реального развертывания.
1. На странице Summary портала управления в секции Hosted Service нажмите на ссылку
Web Site URL для открытия сайта в реальном развертывании. Обратите внимание на
измененный «подвал» страницы.
Изображение 46
Новое развертывание содержит обновленный текст «подвала»
Примечание: Если вы получаете при входе на сайт DNS-ошибку 404, подождите пару
минут и попробуйте еще – возможно, DNS-имя ещё не готово. Windows Azure создает
DNS-имена динамически и применение этих изменений может занять несколько минут.
Страница | 44
Упражнение 3: Использование Visual
Studio для развертывания
приложений
Ранее вы научились развертывать приложения в Windows Azure используя портал управления и
набор командлетов PowerShell. Если вы являетесь разработчиком, вам может показаться удобной
возможность развертывания приложений непосредственно из Visual Studio.
При первом развертывании сервиса в Windows Azure с использованием Visual Studio вам
необходимо создать необходимые учетные данные для доступа к аккаунту. Этот процесс включает
в себя создания самоподписанного сертификата и загрузку его на портал управления Windows
Azure. В упражнении 2 вы уже выполняли подобную процедуру с использованием утилиты
makecert. Visual Studio упрощает этот процесс, позволяя создать сертификат с помощью
пользовательского интерфейса.
После настройки вашего аккаунта в Visual Studio вы сможете развертывать приложение в «фоне» в
несколько щелчков мыши.
В этом упражнении вы настроите учетные данные для аутентификации в портале управления
Windows Azure и развернете приложение MyTodo из Visual Studio.
Задание 1 – Настройка решения для его развертывания
При развертывании сервиса с использованием Visual Studio Windows Azure Tools загружают пакет
сервиса и автоматически запускают его. У вас нет возможности обновить настройки конфигурации
перед запуском сервиса, поэтому вам необходимо определить все необходимые настройки перед
развертыванием.
В этом задании вы обновите строки подключения к хранилищу.
1. Запустите Microsoft Visual Studio 2010 в режиме администратора. Для этого в Start | All
Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши на ярлыке
Microsoft Visual Studio 2010 и выберите Run as administrator.
2. В меню File нажмите Open и Project/Solution. В диалоговом окне Open Project перейдите в
Ex3-DeployingWithVisualStudio\Begin в папке лабораторной Source, выберите
соответствующий вашему языку программирования (Visual C#/Visual Basic) MyTodo.sln и
нажмите Open.
3. Разверните в проекте MyTodo узел Roles и щелкните два раза на роли MyTodo.WebUX.
Страница | 45
4. В окне MyTodo.WebUx [Role], перейдите во вкладку Settings и сделайте необходимые
настройки: замените[YOUR_ACCOUNT_NAME] на имя вашего аккаунта и
[YOUR_ACCOUNT_KEY] на ключ доступа. Сделайте это для DataConnectionString и
Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString. Настройки аналогичны
использовавшимся ранее.
5. Нажмите CTRL + S для сохранения изменений.
Задание 2 – Создание самоподписанного сертификата средствами Visual Studio
В этом задании вы создадите второй сертификат управления средствами Visual Studio – первый вы
создали, используя командную строку – и загрузите его на портал управления Windows Azure.
1. Запустите Microsoft Visual Studio 2010 в режиме администратора. Для этого в Start | All
Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши на ярлыке
Microsoft Visual Studio 2010 и выберите Run as administrator.
2. В меню File нажмите Open и Project/Solution. В диалоговом окне Open Project перейдите в
to Ex3-DeployingWithVisualStudio\Begin в папке лабораторной Source, выберите
соответствующий вашему языку программирования (Visual C#/Visual Basic) MyTodo.sln и
нажмите Open.
Примечание: Это то же самое решение, которое мы развертывали ранее, за
исключением внесённых изменений в «подвале».
3. В Solution Explorer щёлкните правой кнопкой мыши на «облачном» проекте MyTodo и
нажмите Publish.
4. Появится диалоговое окно Publish Windows Azure Application. Для развертывания
приложения вам сперва необходимо настроить необходимые учетные данные для
доступа к аккаунту Windows Azure. Для добавления нового набора учетных данных к
вашей конфигурации разверните выпадающий список Subscription и выберите Manage.
Если вы уже добавили ваши учетные данные, выберите их и пропустите это задание.
Страница | 46
Изображение 47
Добавление учетных данных подписки в Visual Studio
5. Появится окно управления настройками аутентификации Windows Azure. Нажмите New
для определения настроек аутентификации.
Изображение 48
Добавление настроек аутентификации
Страница | 47
6. Для создания учетных данных вам необходим сертификат. Если Visual Studio не найдёт
подходящего сертификата в вашем персональном хранилище, то предложит создать
новый сертификат. В диалоговом окне Windows Azure Project Management Authentication
нажмите на выпадающем списке Create or select an existing certificate for authentication и
выберите Create.
Изображение 49
Создание нового сертификата для аутентификации
Примечание: Выпадающий список содержит все сертификаты, подходящие для
использования с API управления Windows Azure. Этот список включает в себя созданный
ранее в разделе про PowerShell сертификат. Несмотря на это в упражнении вы создадите
новый сертификат для знакомства с процедурой создания сертификата в Visual Studio.
7. В диалоговом окне Create Certificate введите подходящее имя для сертификата,
например, AzureMgmtVS, и нажмите OK.
Страница | 48
Изображение 50
Создание нового сертификата управления
8. Возвратившись в диалоговое окно Windows Azure Project Management Authentication ,
убедитесь, что выбран созданный только что сертификат. Обратите внимание, что
выдавшим этот сертификат источником является Windows Azure Tools.
Изображение 51
Выбор сертификата для учетных данных
9. Щелкните на ссылке Copy the full path, скопировав локальный путь к файлу вашего
сертификата в буфер обмена.
Страница | 49
Изображение 52
Копирование локального пути к файлу сертификата в буфер обмена
Примечание: Visual Studio хранит файл сертификата во временной папке в вашей
локальной папке.
10. Нажмите OK в появившемся диалоговом окне и сохраните путь в буфере обмена в
безопасном месте, скоро он понадобится, когда вы будете загружать сертификат на
портал управления.
Изображение 53
Подтверждение копирования локального пути к файлу в буфер обмена
Страница | 50
11. Нажмите на ссылку Windows Azure Portal для открытия в браузере портала управления
Windows Azure.
Изображение 54
Открытие портала разработчика в браузере
12. На портале управления войдите в систему и загрузите сертификат, созданный в Visual
Studio, используя последовательность действий в задании 2 предыдущего упражнения.
Если вы не сохранили Subscription ID, обратите внимание на это значение на странице
Account, оно понадобится в следующем шаге.
На странице API Certificates при выборе файла сертификата в локальном хранилище
убедитесь что вы используете путь, который копировали ранее из буфера обмена.
13. Перейдите обратно в диалоговое окно Windows Azure Project Management Authentication,
введите ID подписки subscription ID и имя и нажмите OK.
Страница | 51
Изображение 55
Завершение настройки учетных данных
14. После подтверждения новых учетных данных Visual Studio будет использовать их для
доступа к сервису управления для определения действительности информации и будет
уведомлять вас в случае ошибки аутентификации. Если случилась ошибка, проверьте
информацию, введенную вами, и повторите операцию еще раз.
Изображение 56
Страница | 52
Ошибка аутентификации при доступе к сервису управления
15. В диалоговом окне Windows Azure Project Management Settings вы увидите созданные
настройки аутентификации. Нажмите Close.
Изображение 57
Управление настройками аутентификации
Задание 3 – Развертывание сервиса с Windows Azure Tools
В предыдущем задании вы настроили набор учетных данных для доступа к аккаунту Windows
Azure. Visual Studio сохранила эту информацию и позволит вам использовать этот набор учетных
данных при развертывании сервиса без необходимости вводить учетные данные снова.
В этом задании вы будете использовать новый набор учетных данных для развертывания
приложения MyTODO прямо из Visual Studio.
1. В диалоговом окне Publish Windows Azure Application выберите созданные ранее учетные
данные и нажмите Next.
Страница | 53
Изображение 58
Вход в систему
2. На вкладке Common Settings обратите внимание, что диалоговое окно Hosted Service
содержит информацию обо всех сервисах в вашему аккаунте Windows Azure. Выберите
компонент сервиса, в который необходимо развертывать приложение.
3. Убедитесь, что значение свойства Environment указано как Production и значение Build
Configuration указано как Release. Отметьте значение свойства Service Configuration как
default.
Страница | 54
Изображение 59
Общие настройки развертывания
4. Перейдите на вкладку Advanced Settings. Обновите Deployment Label на MyTodo и
проверьте, выбрано ли Append date and time, идентифицирующее развертывание в
пользовательском интерфейсе портала.
5. Также как с сервисами, диалоговое окно содержит выпадающий список Storage account с
информацией обо всех сервиса хранилища, которые вы настраивали в вашем аккаунте
Windows Azure. При развертывания сервиса Visual Studio сначала загружает пакет сервиса
в хранилище Azure и развертывает сервис уже из «облачного» хранилища. Выберите
сервис хранилища, который вы хотите для этого использовать, и нажмите Next.
Страница | 55
Изображение 60
Особые настройки развертывания
Примечание: В этой лабораторной работе нет примера использования IntelliTrace,
однако эта функция позволяет собирать детальные логи, содержащие процессы в вашем
«облачном» сервисе, которые вы можете скачать на ваш компьютер. Это может быть
полезно при разрешении проблем на стадии запуска роли. Обратите внимание, что для
работы IntelliTrace требуется .NET Framework 4 и он доступен только в Visual Studio
Ultimate.
6. Просмотрите информацию на Summary. Если все ОК, нажмите Publish для начала процесса
развертывания.
Страница | 56
Изображение 61
Начало процесса развертывания
Примечание: В верхней части диалогового окна находится выпадающий список Target
Profile. Настроив конфигурацию развертывания, вы можете сохранить ее как новый
профиль и использовать в дальнейшем без необходимости снова заполнять все поля.
7. Если ячейка развертывания, выбранная вами, уже занята развертыванием, Visual Studio
выведет предупреждение и задаст вопрос о возможности замены этого развертывания на
новое. Нажмите Replace , если вы уверены, что текущее развертывание больше не нужно
и его можно перезаписать. Если оно ещё необходимо, нажмите Cancel и повторите
последовательность действий с ячейкой другого развертывания.
Страница | 57
Изображение 62
Перезапись существующего развертывания
8. После начала развертывания вы можете следить за активностью и статусом операции.
Если окно не видно, то в меню View перейдите в Other Windows и нажмите Windows
Azure Activity Log.
9. По умолчанию лог показывает сообщение, описывающее текущую операцию и строку
прогресса процесса развертывания.
Изображение 63
Просмотр информации в логе активности Windows Azure
10. Для просмотра подробной информации об операции развертывания два раза щелкните
на зеленой стрелке, расположенной слева от строки в логе.
Обратите внимание, что дополнительная информация включает ячейку развертывания,
тестовую(staging) или реальную (production), URL вебсайт, ID развертывания Deployment
ID и History – лог, включающий в себя события изменения состояния и время, когда они
произошли.
Страница | 58
Изображение 64
Просмотр подробной информации об операции развертывания
11. Дождитесь окончания процесса развертывания, который может занять несколько минут.
После окончания вы можете просмотреть информацию о статусе развертывания в панели
History в правой части. В случае успешного развертывания она должна представлять из
себя следующую последовательность:
Изображение 65
Лог операции развертывания
12. По окончанию процесса развертывания нажмите на ссылку Website URL в Windows Azure
Activity Log для того, чтобы открыть приложение в вашем веб-браузере и проверить его
работоспособность. Обратите внимание, что надпись в области копирайта в нижней части
страницы отражает, что данная версия была развернута с Visual Studio.
Страница | 59
Изображение 66
Работающее приложение, развернутое с помощью Visual Studio
Упражнение 4: Безопасность Windows
Azure с SSL
В этом упражнении вы включите поддержку SSL для обеспечения безопасности приложения
myTODO. Этот процесс включит в себя создание самоподписанного сертификата для
аутентификации сервера и загрузку его на портал. С загруженным сертификатом вы добавляете
новую точку входа HTTPS в сервисную модель и «привязываете» сертификат к этой точке входа.
Вы закончите упражнение, ещё раз развернув приложение в Windows Azure и получив доступ по
новой точке входа HTTPS.
Задание 1 – Добавление в приложение точки входа HTTPS
В этом задании вы обновите сервисную модель приложения MyTODO, добавив точку входа HTTPS
и затем протестируете приложение в эмуляторе вычислений.
Страница | 60
1. Запустите Microsoft Visual Studio 2010 в режиме администратора. Для этого в Start | All
Programs | Microsoft Visual Studio 2010 щелкните правой кнопкой мыши на ярлыке
Microsoft Visual Studio 2010 и выберите Run as administrator.
2. В меню File нажмите Open и Project/Solution. В диалоговом окне Open Project перейдите в
Ex4-SecuringAppWithSSL\Begin в папке лабораторной Source, выберите соответствующий
вашему языку программирования (Visual C#/Visual Basic) MyTodo.sln и нажмите Open.
3. Разверните в проекте MyTodo узел Roles и щелкните два раза на роли MyTodo.WebUX.
4. В окне MyTodo.WebUx [Role], перейдите во вкладку Settings и сделайте необходимые
настройки: замените[YOUR_ACCOUNT_NAME] на имя вашего аккаунта и
[YOUR_ACCOUNT_KEY] на ключ доступа. Сделайте это для DataConnectionString и
Microsoft.WindowsAzure.Plugins.Diagnostics.ConnectionString.
5. Переключитесь на вкладку Endpoints и выберите опцию HTTPS. Заполните поле Public Port,
установив значение в 443. Не указывайте сейчас сертификат SSL – вы сделаете это позже.
Изображение 67
Добавление в приложение точки входа HTTPS
6. Выберите точку входа HTTPS как используемую при запуске приложения во время
отладки. Для этого: щелкните правой кнопкой мыши на роли MyTodo.WebUx в проекте
MyTodo, Launch in Browser, убедитесь, что выбрано только HTTPS.
Страница | 61
Изображение 68
Выбор точки входа, используемой для отладки приложения
7. Нажмите F5 для сборки и запуска приложения в локальном эмуляторе вычислений.
Обратите внимание, что браузер сообщит о проблеме с сертификатом. Игнорируйте
предупреждение и нажмите Continue to this website.
Страница | 62
Изображение 69
Ошибка сертификата при тестировании в локальном эмуляторе вычислений
Примечание: При тестировании приложения в локальном эмуляторе с использованием
SSL вам не надо настраивать сертификат. Вместо этого локальный эмулятор вычислений
использует свой собственный сертификат, который выпущен центром сертификации, не
являющимся доверенным – поэтому возникает предупреждение. Вы можете спокойно
игнорировать предупреждение во время локальной отладки.
Вы можете убрать предупреждение, установив сертификат в хранилище сертификатов
Trusted Root Certification Authorities. У этого имеются некоторые небезопасные
моменты.
Откройте Microsoft Management Console, добавьте оснастку Certificates и укажите
аккаунт Computer. Разверните хранилище Personal\Certificates и найдите сертификат,
выданный для 127.0.0.1. Проверьте, тот ли сертификат вы нашли, просмотрев свойства
Subject и Issuer, которые должны быть указаны для локального эмулятора вычислений.
Для перевода сертификата в доверенные сертификаты просто перетащите его из
Страница | 63
персонального хранилища Personal в хранилище доверенных сертификатов Trusted Root
Certification Authorities.
Изображение 70
Сертификат, используемый эмулятором вычислений для SSL
8. После запуска домашней страницы обратите внимание, что теперь доступ происходит по
точке входа HTTPS.
Страница | 64
Изображение 71
Доступ по точке входа HTTPS
9. Закройте окно. Теперь вы создадите самоподписанный сертификат и развернете
приложение в Windows Azure.
10. Не закрывайте проект в Visual Studio.
Задание 2 – Создание самоподписанного сертификата
В этом задании вы создадите самоподписанный сертификат для настройки точки входа с SSL,
который загрузите на портал Windows Azure.
Примечание: Если вы не можете использовать Internet Information Services (IIS) Manager, вы
можете пропустить это задание и, вместо этого, можете найти самоподписанный сертификат в
ресурсах к лабораторной работе.
Чтобы установить сертификат, откройте Windows Explorer, перейдите в Assets в папку
лабораторной Source и щелкните два раза на файле YourNameToDo.pfx для установки
сертификата с использованием Certificate Import Wizard. В качестве пароля используйте
“password1” (без кавычек), остальные значения оставьте стандартными.
Важно: Вы не должны использовать этот сертификат в реальном развертывании, только для
этого упражнения.
Страница | 65
1. Запустите Internet Information Services Manager: нажмите кнопку Start button и введите
“iis” в строке поиска, после чего нажмите Internet Information Services (IIS) Manager в
списке установленных программ.
Изображение 72
Запуск Internet Information Services (IIS) Manager
2. В панели Connections в консоли Internet Information Services (IIS) Manager выберите
верхний узел, соответствующий вашему компьютеру, и найдите в панели посередине
категорию IIS, после чего нажмите два раза Server Certificates.
Страница | 66
Изображение 73
Управление сертификатами в Internet Information Services (IIS) Manager
3. На странице Server Certificates нажмите Create Self-Signed Certificate в панели Actions.
Изображение 74
Страница | 67
Создание самоподписанного сертификата в Internet Information Services (IIS) Manager
4. На странице Specify Friendly Name в Create Self-Signed Certificate введите имя сертификата
– любое имя, например, <вашеимя>ToDo, и нажмите OK.
Изображение 75
Определение имени сертификата
5. Щелкните правой кнопкой мыши на созданном сертификате и нажмите Export для
экспортирования сертификата в файл.
Страница | 68
Изображение 76
Новый самоподписанный сертификат на странице сертификатов сервера
6. В диалоговом окне Export Certificate введите имя файла, в который будет экспортирован
сертификат, два раза пароль, после чего нажмите OK. Запишите пароль, он вам
понадобится при загрузке сертификата на портал.
Изображение 77
Страница | 69
Экспортирование сертификата в файл
Задание 3 – Добавление сертификата в сервисную модель приложения
Ранее при тестировании доступа по SSL к приложению в вашей локальной среде вы могли войти
без сертификата, используя сертификат эмулятора вычислений. В этом задании вы настроите
приложение на использование самоподписанного сертификата, созданного в Internet Information
Services (ISS) Manager.
1. Переключитесь в Visual Studio. Если вы закрыли проект, откройте его - Ex4SecuringAppWithSSL\Begin в папке лабораторной Source.
2. Разверните в проекте MyTodo узел Roles и щелкните два раза на роли MyTodo.WebUX ,
затем перейдите на вкладку Certificates.
3. На вкладке Certificates нажмите Add Certificate. Заполните поле Name, указав имя
сертификата. Убедитесь, что значение свойства Store Location установлено в LocalMachine
а значение свойства Store Name установлено в My, после чего нажмите кнопку с
троеточием справа от столбца Thumbprint.
4. В диалоговом окне Select a certificate выберите самоподписанный сертификат, созданный
ранее, и нажмите OK.
Изображение 78
Выбор сертификата для сервиса в Window Server 2008
Страница | 70
Изображение 79
Выбор сертификата в Windows 7
5. Обратите внимание, что диалоговое окно содержит столбец Thumbprint с
соответствующим значением сертификата.
Изображение 80
Добавление сертификата в сервисную модель приложения
6. Переключитесь на вкладку Endpoints и в секции точек входа HTTPS, разверните
выпадающее меню SSL certificate name и выберите сертификат, добавленный в сервис в
предыдущем шаге.
Страница | 71
Изображение 81
Выбор сертификата для использования с точкой входа HTTPS
7. Нажмите CTRL+S для сохранения изменений конфигурации
Задание 4 – Загрузка сертификата на портал Windows Azure
В этом задании вы загрузите созданный в предыдущем шаге самоподписанный сертификат на
портал управления Windows Azure.
1. Откройте в веб-браузере http://windows.azure.com и войдите в систему, используя ваш
Windows Live ID, к которому привязан аккаунт Windows Azure.
2. Нажмите Hosted Services, Storage Accounts & CDN в нижнем левом углу.
Изображение 82
Создание нового компонента сервиса
Страница | 72
3. Нажмите на Hosted Services в панели слева сверху и выберите Certificates в дереве
сервиса MyToDo.
4. Нажмите кнопку в меню Add Certificate.
Изображение 83
Управление сертификатами на портале управления Windows Azure
5. В появившемся окне Upload an X.509 Certificate нажмите Browse, перейдите к файлу
сохраненного в предыдущем задании сертификата, введите два раза пароль и нажмите
OK.
Изображение 84
Создание сертификата для сервиса
Страница | 73
Проверка
В этом задании вы развернете приложение в Windows Azure и обратитесь к нему через точку
входа HTTPS для проверки работоспособности SSL.
1. Любым способом разверните приложение в Windows Azure, используя портал управления,
командлеты или Visual Studio, согласно упражнениям 1,2,3.
Примечание: Сейчас конфигурация сервиса определяет дополнительную точку входа
HTTPS, поэтому вы не можете просто обновить текущее развертывание, вместо этого вы
должны снова загрузить его. Это обязательно выполнять при каждом изменении
конфигурации сервиса.
2. Развернув приложение, запустите его и подождите, пока не отобразится статус Ready (или
Completed в случае развертывания с помощью Visual Studio).
3. Перейдите на сайт, используя точку входа HTTPS (например,
https://yournametodo.cloudapp.net). Появится ошибка сертификата, так как центр
сертификации для самоподписанного сертификата не является доверенным. Эту ошибку
можно игнорировать.
Изображение 85
Доступ по точке входа HTTPS
Страница | 74
Примечание: Для реального развертывания вы можете приобрести сертификат у
доверенного центра сертификации и использовать его в вашем приложении.
Задание 5 – Создание записи CNAME для DNS-определения (опционально)
При развертывании приложения Windows Azure Fabric конфигурирует URL вида
http://[yournametodo].cloudapp.net, где [yournametodo] является публично доступным именем,
которые вы выбрали для компонента сервиса при его создании. Несмотря на работоспособность
данного URL, есть множество причин использования вашего собственного URL. Другими словами,
вместо http://yournametodo.cloudapp.net можно использовать доменное имя вашей организации,
например http://yournametodo.fabrikam.com.
«Привязать» приложение к вашему домену можно с помощью создания записи CNAME в вашей
DNS-системе. CNAME-запись является псевдонимом для любой записи хоста, включая хосты в
различных доменах. Для «привязывания» приложения к домену fabrikam.com можно создать
следующую запись:
yournametodo.fabrikam.com.
CNAME
yournametodo.cloudapp.net.
Процесс создания записи варьируется в зависимости от DNS-инфраструктуры. В случае внешних
регистраторов вы можете найти в их документации описание процесса настройки CNAME.
Дополнительная информация - Custom Domain Names in Windows Azure.
В этом задании показано, как настроить псевдоним, используя Microsoft DNS в Windows Server
2008.
Примечание: На Windows Server 2008 должен быть установлен Windows DNS Server. Включить
эту роль можно в Server Manager.
1. В Start | Administrative Tools | DNS откройте DNS Manager.
2. В DNS Manager разверните узел Forward Lookup Zones и щелкните правой кнопкой мыши
на зоне, где вы хотите создать псевдоним, после чего выберите New Alias (CNAME). Для
создания псевдонима вы должны создать зону в том случае, если зоны отсутствуют.
Страница | 75
Изображение 86
Обновление зоны и создание псевдонима
3. В диалоговом окне New Resource Record введите имя псевдонима, которое будет
использоваться для доступа к приложениям в Azure, например, yournametodo. Введите
FQDN вашего приложения, которое назначил ему Windows Azure, например,
[yournametodo].cloudapp.net. Нажмите OK для создания записи.
Страница | 76
Изображение 87
Создание псевдонима для приложения myTODO в Windows Azure
4. В консоли DNS Manager просмотрите содержимое обновленной зоны и убедитесь в
наличии новой CNAME-записи.
Страница | 77
Изображение 88
Обновленная зона содержит новый псевдоним для приложения
5. Откройте командную строку и введите следующую команду с целью проверки
корректности работы псевдонима и определения, действительно ли псевдоним ведет на
адрес приложения в Windows Azure.
Командная строка
nslookup <youralias>
Изображение 89
Проверка псевдонима
Страница | 78
Теперь вы можете получать доступ к приложению по псевдониму.
Заключение
Завершив эту практическую лабораторную работу, вы научились создавать аккаунт хранилища и
компонент сервиса на портале управления Windows Azure. Используя портал управления, вы
развернули пакет сервиса, содержащий исполняемые файлы приложения, настроили хранилище
и определили количество экземпляров для запуска.
Вы также научились делать это программно с использованием Service Management API и с
использованием командлетов PowerShell для управления сервисами Windows Azure для
развертывания, обновления и управления приложениями.
Как разработчик, вы научились использовать Windows Azure Tools в Visual Studio для
развертывания вашего решения в «фоне», при этом продолжая разработку.
Вы также научились загружать сертификаты, используя портал управления, и использовать SSL для
обеспечения безопасности вашего приложения Windows Azure.
Страница | 79
Download