Как стать автором
Обновить

Ускоряемся с Windows Azure Accelerator

Время на прочтение10 мин
Количество просмотров2.4K
В настоящий момент времени корпорация Microsoft предоставляет более 200 облачных сервисов, включая Windows Azure, Office 365, Bing, MSN, Windows Live, Hotmail и многие другие. Эти ресурсы доступны в режиме 24x7x365 для более чем миллиарда клиентов и 20 миллионам предприятий в более 70 странах мира. Поддержка этих ресурсов осуществляется на базе Global Foundation Services (GFS), реализующих стратегию Microsoft Software Plus Services (программное обеспечение плюс сервисы). Для поддержки IT-инфраструктуры облачных сервисов корпорация Microsoft по всему миру развернула сеть крупнейших центров обработки данных. Благодаря этим современным технологическим решениям для пользователей стали доступны безопасные, надежные, масштабируемые и эффективные решения. Стоит лишь позавидовать системным администраторам, которые поддерживают работу GFS центров обработки данных, и восхититься их профессионализму.



Для того, чтобы с максимальной пользой для бизнеса использовать возможности и потенциал облачных сервисов Microsoft не лишним будет ознакомление с платформой Windows Azure. В любом случае, даже просто из интереса к инновациям, следует рассмотреть перспективу PaaS для своих проектов. Тут под инновацией подразумевается не сколько решение в области IT, а новый взгляд на бизнес-модель предоставления услуги — платформа как сервис. Фактически Windows Azure — это средство для быстрого развертывания своих приложений в глобально распределенных центрах обработки данных Microsoft. Однако, понятие «быстро» является очень относительным, например, развертывание веб-роли приложения в Windows Azure может занять порядка 15-20 минут. И тут на помощь приходит Windows Azure Accelerator for Web Roles.

Веб-роль Windows Azure


Windows Azure Accelerator for Web Roles — это .NET-приложение, которое запускается в режиме веб-роли Windows Azure и является загрузчиком сайтов пользователя (разработчика). В свою очередь, следует пояснить, что веб-роль является экземпляром приложения пользователя, работающего в среде Windows Azure. Количество запущенных экземпляров веб-роли зависит от нагрузки и определяется пользователем. Все экземпляры являются идентичными. Особенностью веб-роли является наличие доступа по средствам веб-интерфейса для клиентов работающих с приложением. Для доступа к веб-роли предоставляется своеобразный виртуальный IP-адрес (VIP), который является неизменным для приложения. Однако, в случае повторного развертывания приложения VIP, скорее всего, изменится. Эта особенность не касается увеличения или уменьшения количества экземпляров веб-ролей.

Упрощенная структура веб-роли Windows Azure

Экземпляр веб-роли Windows Azure — это виртуальная машина с Windows Server 2008 или Windows Server 2008 R2 на выбор пользователя, с установленным веб-сервером IIS. Поскольку веб-сервер может обслуживать несколько сайтов, то экземпляр веб-роли вполне может предоставлять доступ к нескольким ресурсам пользователя. Для каждого запроса пользователя выбор определенного экземпляра веб-роли осуществляет балансировщик нагрузки, который не учитывает текущее состояние сессии. Следовательно, облачному приложению рационально использовать cookie, хранящиеся на стороне клиента, либо хранить данные сессий в удаленном хранилище.

Управление всей инфраструктурой Windows Azure выполняется Windows Azure Fabric – распределенной вычислительной системой на базе Windows Server с набором средств диагностики и управления, а также веб-порталом, обеспечивающим доступ пользователей к панели управления Windows Azure. Используя Windows Azure Accelerator for Web Roles можно предоставить возможность пользователям самим выполнять развертывание сайтов без использования панели управления Windows Azure.

Установка Windows Azure Accelerator for Web Roles


Для развертывания в облаке Windows Azure Accelerator for Web Roles можно использовать Microsoft Visual Studio 2010 или бесплатный Microsoft Visual Web Developer 2010 Express. Вначале с сайта http://waawebroles.codeplex.com/ следует загрузить дистрибутив Windows Azure Accelerator for Web Roles, а затем запустить установку пакета.

WAAWebRoles.exe

Фактически пакет будет разархивирован в указанную пользователем папку на локальном компьютере. Windows Azure Accelerator for Web Roles требует в качестве зависимостей ASP.NET MVC 3 и, конечно, Windows Azure Tools for Microsoft Visual Studio 2010 Platform v1.4. Если указанные компоненты еще не присутствуют на компьютере разработчика, то они будут развернуты с использованием Установщика веб-платформы 3.0.

WAAWebRoles.exe

На следующем этапе будет запущен скрипт, где в командной строке следует утвердительно ответить на поставленные вопросы. Конечно, если к этому времени установлены все зависимости и вы хотите продолжить установку расширений для Visual Studio.

WAAWebRoles.exe

Теперь будет запущен графический установщик, который добавит к Visual Studio, а в текущем примере к Microsoft Visual Web Developer 2010 Express, шаблон проекта Windows Azure Web Deploy Host.

WAAWebRoles.exe

После этого можно переходить к этапу загрузки Windows Azure Accelerator for Web Roles в облако Microsoft. Для этого следует запустить выбранную версию средств разработки Visual Studio. Предполагается, что к этому времени пользователь в панели управления Windows Azure зарезервировал свою новую службу и одну учетную запись хранения.

Развертывание Windows Azure Accelerator for Web Roles


После запуска Microsoft Visual Web Developer 2010 Express выбираем создание нового проекта — из шаблона Visual C#, раздела Cloud: Windows Azure Web Deploy Host.

Visual Web Developer 2010 Express

В двух следующих, последовательно открывающихся, диалоговых окнах вводим параметры учетной записи хранилища (Enter your Windows Azure storage account information), т.е. нужно указать имя учетной записи (Account name) и первичный ключ доступа (Account key), которые доступны в панели управления Windows Azure. Затем задается произвольный логин (User name) и пароль (Password) администратора для будущего сайта (Enter the account information for the Administration Site). Теперь проект готов для переноса в облако.

Visual Web Developer 2010 Express

Правда, маленькие доработки не помешают. Во-первых, если предполагается, что веб-сайты пользователей будут разработаны не только, как .NET-приложения, а будет использоваться PHP, то следует задать параметры развертывания веб-роли. В этом случае при развертывании приложения будет подключен Fast-CGI модуль для IIS с поддержкой PHP. Для этого следует добавить несколько строчек в файл /Startup/ConfigureIIS.cmd. Или еще проще — скачать уже модифицированный файл, который опубликовал Nathan Totten на GitHub.

Во-вторых, если последующее развертывание веб-сайтов предполагается выполнять средствами Microsoft WebMatrix, то следует разрешить доступ к Windows Azure Accelerator for Web Roles по протоколу TCP на порт 8172. Это совершенно не требуется, если в дальнейшем сайты будут загружаться средствами Visual Studio.

Для открытия порта следует добавить в файл определения параметров сервиса ServiceDefinition.csdef в разделе Endpoints строчку:

<InputEndpoint name="RemoteDeploy" protocol="tcp" port="8172" localPort="8172" />

На этом все — пора в облака! Развертывание Windows Azure Accelerator for Web Roles ни чем не отличается от аналогичной процедуры развертывания веб-роли средствами Visual Studio. Нажимаем правой кнопкой мышки на имени проекта WebDeployHost1.Cloud и выбираем «Опубликовать» или «Publish».

Visual Web Developer 2010 Express

В открывшимся диалоговом окне выбираем параметры текущей учетной записи сервиса Windows Azure. Если еще в облако не загружен сертификат подлинности — генерируем его и загружаем. Для тех, кто не знаком с процедурой развертывания приложения средствами Visual Studio можно порекомендовать посмотреть скринкаст Сергея Байдачного: Использование Windows Azure: Visual Studio 2010 — TechDays.in.ua

К сожалению, для развертывания Windows Azure Accelerator for Web Roles не подойдет тестовый доступ на 24 часа к Windows Azure, предоставляемый на сайте сообщества украинских .NET разработчиков http://dev-club.in.ua/, нужен доступ к полнофункциональной панели управления Windows Azure. Это связано с тем, что для Windows Azure Accelerator for Web Roles необходимо разрешить удаленный режим доступа к экземплярам веб-роли. Для этого в диалоговом окне Deploy Windows Azure project следует выбрать настройки Configure Remote Desktop connections. Здесь все аналогично стандартному разрешению удаленного доступа к экземпляру приложения. Следует сгенерировать сертификат и набор ключей шифрования, которые загружаются в Windows Azure для идентификации пользователя, а также указать имя администратора и пароль для удаленного подключения. Для тех, кто не знаком с этим можно посмотреть еще один скринкаст Сергея Байдачного: Использование Windows Azure: Azure Connect — TechDays.in.ua

Для получения тестового доступа к облачной платформе Microsoft можно посмотреть на текущие предложения на сайте Windows Azure, хотя все они предполагают использование кредитной карты. Пробный доступ на 30-дней без ввода данных кредитки похоже уже не доступен, но я могу ошибаться. В любом случае, хочу поблагодарить Майкрософт Украина за онлайн-курс для разработчиков по Windows Azure и предоставленный тестовый доступ к облаку.

Далее, если все нехитрые операции задания подключения к учетной записи Windows Azure выполнены правильно, следует подождать некоторое время пока Windows Azure Accelerator for Web Roles не будет развернут в облаке (потом можно будет сравнить это время и время развертывания сайта с использованием «акселератора»). По умолчанию создается два экземпляра приложения.

Зайдя в панель управления Windows Azure можно убедится, что необходимые экземпляры развернуты и уже выполняются. Сразу можно запомнить VIP-адрес веб-роли (раздел Input endpoints), который понадобится позднее.

Панель управления Azure

Для интереса можно выбрать любой экземпляр и подключится удаленно к его рабочему столу.

RDC

Внутри все знакомо — Windows Server 2008 R2. Так, учетная запись удаленного подключения необходима для дальнейшей работы с сайтами, а также этот режим очень интересен для понимания внутренней структуры экземпляра веб-роли.

Работа с веб-сайтом Windows Azure Accelerator for Web Roles


Веб-сайт Windows Azure Accelerator for Web Roles не балует излишествами. На главной — ввод логина и пароля. После авторизации, для создания нового сайта выбираем ссылку «new web site», где задаем Name — имя для сайта (будет использоваться в дальнейшем при развертывании сайта пользователя), Description — произвольное описание. Параметры подключения (протокол и порт) оставляем значения по умолчанию, а для Host Name указываем доменное имя, по которому будет доступен сайт. Соответственно, в параметрах DNS для указанного домена следует задать ссылку на VIP-адрес веб-роли, назначенный Windows Azure и доступный в панели управления. Если домен виртуальный (доступ будет ограничен только компьютером разработчика), например: «site.local», то можно изменить соответствующие записи в локальном файле: «%windir%\system32\drivers\etc\hosts».

WebSite Manager

После создания сайта можно перейти по указанному URL-адресу, где будет доступна подсказка по дальнейшим действиям. Также на сайте WebSite Manager будет указано количество экземпляров веб-роли в которые будет разворачиваться сайт пользователя.

Следующий шаг — установка Microsoft WebMatrix. Процедура установки очень простая — заходим на сайт http://www.microsoft.com/web/, загружаем установщик и ждем результата. В моем случае в качестве зависимостей к Microsoft WebMatrix были установлены: Microsoft SQL Server Compact 4.0 [Русский], Microsoft SQL Server Compact 4.0 Tools [Русский], Объекты управления SQL Server 2008 R2 [Английский], Собственный клиент SQL Server [Английский], Типы CLR системы SQL Server [Английский], Средство веб-развертывания 2.1 без объединенной поддержки SQL [Русский], IIS 7.5 Express [Русский], Microsoft WebMatrix Installer [Русский]. Общий размер загружаемых файлов: 44,82 МБ.

Установка WebMatrix

Теперь в Microsoft WebMatrix создаем простой веб-сайт. Добавляем к нему страницу на PHP, дописываем традиционный код — вызов функции phpinfo(). Естественно, если речь идет только про ASP.NET, про PHP забываем.

WebMatrix

Далее задаем параметры развертывания приложения: веб-развертывание, сервер — DNS имя службы Windows Azure без префикса http://. Имя пользователя, пароль — это параметры доступа к удаленному рабочему столу (Remote Desktop) экземпляра веб-роли Windows Azure. URL-адрес назначения должен соответствовать параметрам, заданным для сайта в Windows Azure Accelerator for Web Roles. Если все верно, тогда WebMatrix сообщит об ошибке сертификата. С этим можно только согласиться, т.к. наш сертификат самоподписанный.

WebMatrix

Сайт загрузится практически мгновенно и будет доступен по указанному URL-адресу. Например, можно будет изучить результат работы функции phpinfo().

PHPinfo

Для чистоты эксперимента, создадим веб-сайт в Microsoft Visual Web Developer 2010 Express и опубликуем его при помощи Windows Azure Accelerator for Web Roles. Для этого, прежде всего в WebSite Manager создаем новый сайт, например, «mysite2». Для него указываем новый домен, который не забываем прописать в записях DNS или локально в «hosts».

Теперь, открываем Microsoft Visual Web Developer 2010 Express и создаем новый сайт, например, ASP.NET MVC, также можем к нему добавить тестовую страничку на PHP. Переходим в режим развертывания, выбираем веб-развертывание, указываем URL-адрес службы, сайт приложения: «mysite2» и, конечно, логин и пароль для удаленного подключения по Remote Desktop к экземпляру веб-роли Windows Azure.

Microsoft Visual Web Developer 2010 Express

После выполненных действий мы получили два сайта (один создан в WebMatrix, другой — в Microsoft Visual Web Developer 2010 Express), которые запущены в двух экземплярах веб-роли облака Windows Azure. Теперь можно изучить вывод функции phpinfo() или посмотреть на работу заготовки сайта ASP.NET MVC.

ASP.NET MVC

Таким образом, Windows Azure Accelerator for Web Roles позволяет очень эффективно работать с веб-сайтами в облаке Azure. На момент развертывания «акселератора» уже полностью не нужен доступ к панели администрирования Windows Azure. Получаем некий аналог хостинга, но с очень громадным запасом масштабирования и надежности. При чем, кроме ASP.NET-сайтов в такой среде можно разворачивать и PHP-решения. Поскольку Windows Azure Accelerator for Web Roles сам является приложением .NET, то его можно интегрировать со своими разработками.

Резюме


Как и подобает платформе как сервису, Windows Azure скрывает свое устройство за определенными абстракциями. Поначалу это может показаться сложным, но все наоборот. Облака — это просто! Если говорить о разработке с использованием технологий .NET, то облачная платформа Microsoft замечательно выполняет свои функции и является достаточно привлекательной для крупных, масштабируемых разработок. Для PHP не все так однозначно. Если говорить о гибридном проекте, где наряду с приложениями .NET будут использоваться PHP -решения, то это порядком интересно. В случае новой разработки на PHP преимущества платформы Windows Azure должны быть явно привлекательны для клиента в ценовой политике предоставляемого сервиса или в специфических особенностях архитектуры, например, использование хранилища данных и т.п. Для уже существующих PHP-проектов миграция в облако Windows Azure для меня достаточно туманна. Тут надо сравнивать затраты на адаптацию проекта с возможностью использования облака другого поставщика. Хотя нельзя не признать архитектуру Windows Azure великолепной.

Ссылки

1. Microsoft Shares Video Tour of its Cloud Datacenters — TechNet Blogs: MS Datacenters
2. Inside Windows Azure, the Cloud Operating System with Mark Russinovich (видео, англ.) — Tech·Ed North America 2011
3. Windows Azure Accelerator for Web Roles — Nathan Totten
4. Extending the Windows Azure Accelerator for Web Roles with PHP and MVC3 — Nathan Totten
5. Windows Azure Accelerators for Web Roles or How to Convert Azure into a dedicated hosting elastic automated solution — Matias Woloski
6. Windows Azure Accelerator for Web Roles — Maarten Balliauw {blog}
7. WebMatrix with Windows Azure Accelerator for Web Roleі — superriverfield
8. Перспективы разработки PHP-приложений для облака. Знакомство с Windows Azure — Записная книжка
9. Европейский опыт разработки решений на Windows Azure. Юрий Зайцев (скринкаст) — TechDays.ru
Теги:
Хабы:
Всего голосов 13: ↑8 и ↓5+3
Комментарии0

Публикации

Истории

Ближайшие события