Пример использования: OpenStack

Завершено

Ранее мы описывали OpenStack как популярное решение, позволяющее разработчикам создавать общедоступные и частные облака. На момент составления этого документа OpenStack обладает зрелыми предложениями, охватывающими большую часть спектра стека программного обеспечения облака. Мы предельно кратко рассмотрим отдельные элементы архитектуры OpenStack, так как полное ее описание выходит за рамки этого курса. Цель заключается в том, чтобы вы могли познакомиться с различными компонентами, составляющими стек программного обеспечения облака.

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

Следующий рисунок дает общее представление о различных службах, входящих в пакет ПО промежуточного слоя OpenStack:

OpenStack service architecture.

Рис. 6. Архитектура службы OpenStack.

Служба проверки подлинности пользователей (Keystone)

Основная служба проверки подлинности в OpenStack называется Keystone. Keystone — это проект OpenStack, который предоставляет службы удостоверений, токенов, каталогов и политик для использования отдельными службами из семейства OpenStack.

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

Служба мониторинга (Ceilometer)

Проект Ceilometer предназначен для предоставления уникальной точки контакта для систем выставления счетов, чтобы получить все измерения, необходимые для выставления клиентам счетов по всем ключевым компонентам OpenStack. Кроме того, в нем ведется работа для обеспечения поддержки будущих компонентов OpenStack. Celiometer призван обеспечить эффективный сбор данных о контроле потребления и гарантировать, что сообщения о контроле потребления имеют цифровую подпись и не могут быть аннулированы. Ceilometer был описан в разделе "Облачные службы контроля потребления и мониторинга".

Служба оркестрации (Heat)

Heat — это основная система оркестрации в OpenStack. Heat предоставляет службы оркестрации для таких систем более высокого уровня, как Sahara, которая представляет собой систему подготовки кластеров OpenStack, аналогичную Azure HDInsight. Heat может оркестрировать отдельные облачные службы ПО промежуточного слоя, такие как служба вычислений (Nova), служба блочного хранилища (Cinder) и служба сетевого взаимодействия (Neutron).

Служба образов виртуальных машин (Glance)

Службы образов Glance отвечают за обнаружение, регистрацию и извлечение образов виртуальных машин. Glance имеет API RESTful, позволяющий выполнять запросы к метаданным образа виртуальной машины, а также получать реальные образы виртуальных машин.

Служба хранилища объектов (Swift)

Swift — это высокодоступное, распределенное и, в конечном счете, согласованное хранилище объектов, аналогичное S3 от Amazon. Вы можете создавать, изменять и получать объекты и метаданные с помощью API хранилища объектов Swift, который реализован в виде набора веб-служб REST. Мы подробнее рассмотрим службу Swift в OpenStack в следующих модулях.

Служба управления томами блочного хранилища (Cinder)

Cinder — это проект OpenStack, который предоставляет "блочное хранилище как услугу", аналогичное хранилищу блочных BLOB-объектов в Хранилище BLOB-объектов Azure. Cinder позволяет пользователям определять устройства блочного хранилища и подключать их в виде томов к отдельным виртуальным машинам. Cinder выполняет виртуализацию пулов устройств блочного хранилища и предоставляет конечным пользователям API самообслуживания для запроса и потребления этих ресурсов без каких-либо знаний о том, где именно или на каком типе устройства развернуто хранилище. Cinder также используется службой Glance для создания экземпляров томов из образов виртуальных машин. Cinder предназначена для работы с растущим количеством систем хранения и запоминающих устройств, включая устройства сети хранения данных (SAN) и распределенные файловые системы.

Служба подготовки кластеров и управления ими (Sahara)

Проект Сахары предназначен для предоставления пользователям простых средств для подготовки платформ обработки данных (таких как Hadoop и Spark) в OpenStack, как и Azure HDInsight. Sahara можно использовать для указания параметров конфигурации кластера, таких как версия платформы, топология кластера и сведения об оборудовании узлов. Sahara использует службу Nova для подготовки отдельных узлов кластера с помощью зависящих от платформы образов, предоставляемых службой Glance. Затем Sahara запускает специальные сценарии для завершения настройки каждого отдельного узла кластера, чтобы они были готовы к выполнению заданий.

Служба вычислений (Nova)

Nova — это проект OpenStack, предназначенный для обеспечения высокомасштабируемого самостоятельного доступа по запросу к вычислительным ресурсам. Nova предназначена для подготовки различных виртуальных машин, развернутых с помощью различных платформ виртуализации, включая Xen, VMware и Hyper-V, и управления ими. Она даже может развертывать виртуальные машины в AWS EC2 для поддержки концепции "облачного взрыва". Служба Nova также используется другими службами, такими как Trove (для подготовки виртуальных машин, содержащих базы данных) и Sahara (для подготовки виртуальных машин для кластеров аналитики).

База данных как услуга (Trove)

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

Пользовательский интерфейс (Horizon)

Horizon — это каноническая реализация панели мониторинга OpenStack, которая предоставляет пользовательский веб-интерфейс для служб OpenStack, включая Nova, Swift и Keystone. Пользователи могут войти в Horizon, чтобы просмотреть интерактивные представления панели мониторинга о состоянии ресурсов и выдать запросы на обслуживание для отдельных служб OpenStack.

Управление физическим оборудованием (Ironic)

Ironic — это система подготовки без операционной системы, которую можно использовать для управления физическими серверами. Ironic может включать и отключать отдельные серверы с помощью стандартных отраслевых протоколов, таких как Intelligent Platform Management Interface (IPMI). Когда компьютеры включены, система может координировать процесс их загрузки через протокол удаленной загрузки PXE, используя определенные образы загрузки, хранящиеся в службе управления образами (Cinder).

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

В качестве примера одного из сценариев, в которых можно использовать Ironic, рассмотрим случай, когда на физическом сервере наблюдается нехватка ресурсов из-за большого количества подготовленных виртуальных машин. В этом случае Ironic может включить дополнительные серверы и настроить их для загрузки с использованием определенного образа низкоуровневой оболочки. После того как станет доступна дополнительная емкость, можно подготовить виртуальные машины на новых серверах или перенести существующие виртуальные машины на новые серверы. В случае обратной ситуации (когда ресурсы физического сервера не используются полностью) можно консолидировать виртуальные машины на меньшем количестве физических серверов, а освободившиеся серверы отключить, чтобы сэкономить на затратах на электричество.