Платформа Windows Azure

Windows Azure — это операционная система Microsoft, предоставляемая как сервис. За счет использования экземпляров Windows Server потребители получают возможность запускать различные сервисы, которым обеспечивается эластичность, масштабируемость, безопасность и высокая доступность. Помимо вычислительных ресурсов Windows Azure также предоставляется ряд масштабируемых сервисов для хранения данных в виде таблиц, бинарных данных и сообщений, которые мы рассмотрим ниже.

Windows Azure обеспечивает автоматическое управление сервисами, гарантирует высокую доступность экземпляров Windows Server и их автоматическое обновление. Физически, платформа Windows Azure располагается на компьютерах в центрах обработки данных, создаваемых, развиваемых и поддерживаемых самой компанией Microsoft. В настоящее время такие центры расположены в Северной Америке, Европе и Юго-восточной Азии.

Платформа Windows Azure создана на основе технологий виртуализации, схожих с технологией Windows Server Hyper-V, но, в отличие от обычного хостинга виртуальных машин управляется с  помощью специального инфраструктурного слоя, называемого Windows Azure Fabric Controller.

Задачей Windows Azure Fabric Controller является организация массива виртуализированных экземпляров Windows Server в виде одной логической единицы вычислений и автоматическое управление ресурсами, балансировкой нагрузки, устойчивостью к сбоям, георепликациями и всем жизненным циклом приложений и сервисов, выполняющихся на платформе Windows Azure. Помимо обеспечения управления вычислительными ресурсами, Windows Azure Fabric Controller также  предоставляет доступ пользователям и приложениям к самой платформе — Windows Azure.  Основные компоненты Windows Azure показаны на рис. 4.

Рис. 4. Компоненты Windows Azure

Платформа Windows Azure предоставляет набор сервисов, которые, в основной массе, схожи с сервисами, используемыми разработчиками «традиционных» приложений:

Вычислительные сервисы

  • Представляют собой контейнеры для приложений с поддержкой современных технологий разработки, включая .NET, Java, PHP, Python, Ruby on Rails и нативный код.

Сервисы хранения данных

  • Масштабируемая распределенная система хранения данных, поддерживающая ряд моделей хранения, включая табличные структуры, бинарные объекты, асинхронные очереди сообщений, традиционные файловые системы и сети распределения контента (CDN, content distribution networks).

Коммуникационные сервисы

  • Доступны через облачную сервисную шину и могут использоваться как средство обмена сообщениями или брокер соединений с другими облачными сервисами или сервисами, находящимися у заказчиков.

Сервисы обеспечения безопасности

  • Сервисы управления доступом, основанные на политиках, которые поддерживают механизмы федерации и позволяют интегрироваться с существующими системами управления идентификацией.

Прикладные сервисы

  • Компоненты и сервисы, которые могут использоваться для разработки облачных приложений и прикладных сервисов.

Как мы отметили выше, частью сервисов, предоставляемых платформой Windows Azure, являются вычислительные сервисы, иначе называемые «контейнерами для приложений». Таким образом, Windows Azure служит средой для разработки, хостинга и управления различными сервисами. Она предоставляет прикладной контейнер, в котором располагается код и логика облачного приложения. Прикладная среда схожа с прикладной средой, предоставляемой серверной операционной системой Microsoft Windows Server.

Экземпляр в Windows Azure представляет собой единицу развертывания и отражается на ту или иную виртуальную машину, для которой поддерживается ряд предопределенных конфигураций. Элемент платформы, называемый Windows Azure Fabric Controller, отвечает за физическое развертывание необходимых виртуальных машин. Все, что требуется от пользователя — указать необходимое число экземпляров виртуальных машин, которые должны быть развернуты для данного сервиса. Пользователям доступны такие функции, как ручной запуск и останов экземпляров, управление числом экземпляров, тогда как Windows Azure Fabric Controller обеспечивает автоматическое управление жизненным циклом экземпляров виртуальных машин, включая их перезапуск, создание резервных копий, копирование и т.п.

Платформа Windows Azure также содержит ряд сервисов для хранения данных. Эти сервисы поддерживают геораспределение и другие способы надежного хранения информации, включая тройную репликацию в рамках кластера и центра обработки данных. Помимо этого, они могут обеспечивать требования по масштабируемости за счет балансировки нагрузки и автоматического создания копий, распределяемых между серверами.

В Windows Azure поддерживается и модель развертывания виртуальных машин — эта опция обеспечивает поддержку модели инфраструктуры, предоставляемой как сервис (IaaS). Эта модель предназначена, в первую очередь, для сервисов, которым нужна интеграция с операционной системой Windows Server. Данная модель обеспечивает больший контроль над средой, в которой выполняется хостинг сервиса, и может использоваться, например, для хостинга существующих сервисов.

Роли в Windows Azure

Облачный сервис в Windows Azure обычно имеет более одного экземпляра. Каждый экземпляр может реализовывать всю или часть логики приложения. Разработчики могут управлять числом и типом ролей, под которыми выполняется прикладной сервис.

Роли в Windows Azure можно сравнить со стандартными проектами в Visual Studio — каждый экземпляр представляет собой отдельный проект.  Эти роли представляют различные типы приложений, поддерживаемых в Windows Azure. В настоящее время в Windows Azure поддерживаются следующие роли:

  • Веб-роль (Web role).
  • Прикладная роль (Worker role).

Веб-роль обеспечивает поддержку протоколов HTTP и HTTPS через открытые точки входа (endpoints). Хостинг этой роли осуществляется в веб-сервере IIS. Веб-роль логично сравнить с проектом на ASP.NET, единственным различием является способ конфигурации и используемые приложениями сборки.

Прикладная роль обеспечивает внешние точки входа, доступные через TCP/IP и порты, отличные от 80 (HTTP) и 443 (HTTPS), но она не располагается в веб-сервере. Прикладные роли — это приложения, схожие с сервисами WIndows и они могут использоваться для выполнения фоновых задач. Взаимодействие между ролями может выполняться, например, через передачу сообщений или с использованием других традиционных коммуникационных механизмов.

Рис. 5. Роли в Windows Azure

На рис. 5 показаны основные роли в Windows Azure («БН» — средство балансировки нагрузки).

Виртуальные машины

В основе платформы Windows Azure, на том уровне, который не контролируется из прикладных сервисов, для каждой роли выделяется отдельная виртуальная машина. Каждая виртуальная машина создается при развертывании прикладных сервисов. Все виртуальные машины управляются модифицированной версией гипервизора и располагаются в глобальных центрах обработки данных, поддерживаемых Microsoft.

Каждая виртуальная машина может иметь различные характеристики — число процессоров, памяти и т.п., которыми управляют пользователи. В настоящее время предоставляется 4 предопределенных типа виртуальных машин:

Название Частота процессора (ГГц) Кол-во ядер Объем памяти (Гб)
Малая 1,7 1 2
Средняя 1,7 2 4
Большая 1,7 4 8
Огромная 1,7 8 16

Обратите внимание на то, что каждая следующая конфигурация по предоставляемым ресурсам вдвое больше предыдущей — это облегчает создание и управление виртуальными машинами на уровне гипервизора.

VM-роль

VM-роль — это роль в Windows Azure, предоставляющая сервисы на уровне инфраструктуры (Infrastructure As A Service, IaaS). Использование этой роли позволяет увеличить контроль за инфраструктурой как со стороны разработчиков (предоставляется полный контроль над составом образа операционной системы, работающей в виртуальной машине), так и со стороны администраторов (доступны такие операции, как перезагрузка, обновление образа и доступ через удаленный рабочий стол).

Основное назначение VM-роли — миграция в облачную инфраструктуру существующих решений, работающих под управлением Windows Server (поддерживаются образы, созданные на основе Windows Server 2008 R2 Enterprise Edition). По сравнению с возможностью миграции отдельных компонентов приложений (сервисов, хранилища и т.п.), данная роль позволяет переносить приложения практически целиком и снижает стоимость владения ими за счет предоставления таких сервисов, как автоматическое управление, обновление и отказоустойчивость.

Несмотря на то, что VM-роль — это фактически виртуальная машина, работающая в облаке, у нее есть ряд ограничений. Например, для обеспечения соответствующего уровня доступности требуется наличие двух одинаковых экземпляров виртуальной машины. Кроме того, не поддерживается сохранение образов при аппаратных сбоях, каждый сервис может иметь только один внешний IP-адрес и т.п. Помимо этого, Windows Azure не управляет образами — они создаются самими потребителями сервисов. Не поддерживается автоматический мониторинг приложений, работающих внутри виртуальной машины, хотя большинство автоматических функций управления поддерживается на уровне самой виртуальной машины.

Сервисы хранения данных

Как мы отметили выше, Windows Azure предоставляет набор сервисов для хранения данных, которые называются Windows Azure Storage. Каждый сервис подходит для хранения определенного типа данных:

  • Таблицы — представляют собой структурированное хранилище. Каждая таблица состоит из набора объектов, каждый из которых имеет набор названий свойств и их значений. Один объект может иметь до 256 свойств. Таблицы распределены таким образом, чтобы максимально поддерживать балансировку нагрузок.
  • Бинарные объекты — используется для хранения больших бинарных объектов (файлов). Предоставляется простой интерфейс для хранения именованных файлов вместе с метаданными и обеспечивается поддержка сети распределения контента. Бинарные объекты располагаются в контейнерах, каждый из которых содержит набор объектов. Бинарные объекты могут быть двух видов — блочные, оптимизированные для потокового обмена данными и страничные, оптимизированные для случайных операций ввода/вывода. Размер блочного бинарного объекта не может превышать 200 Гб, а размер страничного бинарного объекта — 1 Тб.
  • Очереди — надежное хранилище сообщений. Обычно используется для обеспечения коммуникаций между ролями. Данный сервис оперирует очередями, в которых располагаются сообщения.  Допускается использование неограниченного числа очередей, а очереди могут содержать неограниченное число сообщений. Размер же сообщения ограничен 8 Кб.
  • Диски — тома NTFS, доступные для приложений, выполняющихся в инфраструктуре Windows Azure. Диски (Windows Azure Drives) хранятся как отформатированные под NTFS виртуальные диски (Virtual Hard Drives, VHDs) в страничных бинарных объектах. Так как диски поддерживают сохранение информации, они могут использоваться приложениями, которым необходимо сохранять состояния. После того как диск Windows Azure смонтирован, он доступен программно через стандартные интерфейсы NTFS. Использование дисков Windows Azure может существенно упростить миграцию существующих приложений на платформу Windows Azure.

Доступ к хранилищу обеспечивается через учетные записи Windows Azure Storage, которые используют 256-битные ключи. Каждая учетная запись ограничена возможностью хранения до 100 Тб данных.

Windows Azure Storage поддерживает как интерфейсы для управляемых языков программирования, так и интерфейсы на базе протокола REST. Основные компоненты Windows Azure Storage показаны на рис. 6.

Рис. 6. Сервисы хранения данных Windows Azure Storage

Приведем несколько примеров, иллюстрирующих сценарии использования некоторых сервисов хранения данных.

Хранилище бинарных объектов

  • Возможность хранения резервных копий, отчетов и пр. для их быстрого получения в случае необходимости.

Табличное хранилище

  • Возможность хранения состояний веб-приложений, например, в случае электронной коммерции — хранение покупательской корзины или текущего состояния заказа.

Очереди

  • Веб-приложение может вызывать сервисы, располагаемые на платформе Windows Azure и осуществлять коммуникации между веб-ролями и прикладными ролями в рамках одного или нескольких приложений.

Диски

  • За счет поддержки файловой системы, NTFS могут использоваться сервисами для обеспечения поддержки традиционных файловых операций — чтение/запись, например для протоколирования операций или сохранения временных данных.

Для хранения реляционных данных, например при переносе локальной базы данных в облако, следует использовать компонент платформы Windows Azure — SQL Azure, который мы рассмотрим ниже.

Архитектура сервиса

Выше мы познакомились с основными компонентами, предоставляемыми на уровне Windows Azure — с ролями, сервисами хранения и вычислительными сервисами. На рис. 7 показано, как ряд таких сервисов может быть использован для реализации абстрактного решения, использующего веб-роль, прикладную роль и сервисы хранения на уровне платформы.

Рис. 7. Использование сервисов Windows Azure

Обратите внимание на то, что все внешние соединения происходят через средства балансировки нагрузки, тогда как внутренние коммуникации между ролями происходят без использования средств балансировки нагрузки, непосредственно через TCP-порты, хотя могут использоваться и очереди сообщений.