Содержание


Знакомство с OpenStack

компонент Glance и компонент Nova

Comments

Серия контента:

Этот контент является частью # из серии # статей: Знакомство с OpenStack

Следите за выходом новых статей этой серии.

Этот контент является частью серии:Знакомство с OpenStack

Следите за выходом новых статей этой серии.

В статье описывается компонент OpenStack Compute (Nova), который играет ведущую роль при исполнении любой рабочей нагрузки. Некоторые облачные сервисы работают без использования вычислений, однако в лучшем случае они обеспечивают хранение статической информации — поскольку во всех динамических действиях в той или иной степени присутствует элемент вычислений.

Название OpenStack Compute относится к конкретному проекту (кодовое имя — Nova), однако в действительности платформа OpenStack имеет два проекта (и, соответственно, два компонента), имеющих отношение к вычислениям и к программному обеспечению, с помощью которого осуществляются эти вычисления. Эти два проекта называются OpenStack Compute (Nova) и OpenStack Image Service (Glance)

  • Компонент OpenStack Image Service (Glance) управляет статическими образами дисков, содержащими исполняемый код, а также операционную среду.
  • Компонент OpenStack Compute (Nova) управляет исполняющимися экземплярами.

Компонент OpenStack Compute (Nova) управляет "фабрикой" облачных вычислений и, соответственно, является базовым компонентом инфраструктурных сервисов. Кроме того, Nova является самым сложным компонентом семейства OpenStack, что объясняется преимущественно такими причинами, как высокая степень распределенности и большое количество процессов.

Nova взаимодействует с несколькими другими компонентами платформы OpenStack: Так, Nova использует компонент Keystone для выполнения аутентификации, компонент Horizon в качестве интерфейса администрирования и компонент Glance для предоставления своих образов. Самым тесным является взаимодействие с компонентом Glance, который требуется компоненту Nova для загрузки образов с целью их последующего запуска.

Прежде чем переходить к более детальному описанию компонента Nova, обратимся к компоненту Image Service, с которого — в хронологическом смысле — начинается исполнение вычислительной рабочей нагрузки. Glance — это кодовое имя проекта (и, соответственно, компонента) OpenStack Image Service, который отвечает за регистрацию виртуальных машин, ведение их списков и извлечение их образов.

Компонент Glance управляет образами в кластере OpenStack, но не отвечает за их фактическое хранение. Glance обеспечивает абстрагирование нескольких технологий хранения — в диапазоне от простых файловых систем до систем хранения объектов, таких как проект OpenStack Object Storage (Swift). Помимо реальных образов дисков, Glance содержит метаданные и сведения о состоянии, описывающие образ.

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

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

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

Затем Nova планирует исполнение запрошенного экземпляра посредством приписывания его к определенному вычислительному узлу (в терминологии OpenStack — хост). Каждая система должна регулярно представлять отчет о своем состоянии и о своих возможностях процессу tonova-scheduler, который использует эти данные для оптимизации распределения ресурсов.

Весь процесс распределения состоит из двух фаз. Фаза Filtering (фильтрация) состоит в применении набора фильтров с целью генерации списка наиболее подходящих хостов. Каждый сервис OpenStack публикует информацию о своих возможностях — это один из важнейших моментов. Scheduler (планировщик) отбирает хосты из этого списка в соответствии с параметрами запроса. Затем на фазе Weighting (взвешивание) используется специальная функция для вычисления стоимости каждого хоста, а полученные при этом результаты сортируются. Выходным результатом этой фазы является список хостов, способных удовлетворить запрос пользователя на заданное количество экземпляров с наименьшей стоимостью.

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

Архитектура

Архитектура Nova не предусматривает совместного использования ресурсов (рис. 1), поэтому все ее основные элементы могут исполняться на отдельных серверах. Такая распределенная архитектура опирается на очередь сообщений для осуществления асинхронного взаимодействия между элементами.

Рисунок 1. Архитектура Nova
Image showing the Nova architecture
Image showing the Nova architecture

Nova хранит сведения о состоянии виртуальных машин в центральной SQL-базе данных, которой пользуются все компоненты OpenStack. В этой базе данных содержатся сведения обо всех доступных типах экземпляров, о сетях (если используется процесс nova-network) и о проектах. В качестве этой базы данных может использоваться любая база данных с поддержкой библиотеки SQLAlchemy.

Инструментальная веб-панель

Основным пользовательским интерфейсом платформы OpenStack Compute является инструментальная веб-панель OpenStack Dashboard (Horizon). Эта панель играет роль центрального портала для всех компонентов OpenStack, который представляет графический интерфейс всем проектам и с помощью API-интерфейса осуществляет вызовы любых требуемых сервисов.

API-интерфейс

Используемый API-интерфейс основан на технологии REST (Representational State Transfer). Он реализован в виде WSGI-приложения (Web Server Gateway Interface), которое маршрутизирует универсальные указатели ресурсов к действующим методам в controller-классах. Этот API-интерфейс получает HTTP-запросы, обрабатывает команды, а затем направляет задачу другим компонентам через очередь сообщений или по HTTP (в случае ObjectStore). API-интерфейс Nova поддерживает такие API-интерфейсы, как OpenStack Compute API, Amazon Elastic Compute Cloud (Amazon EC2) API и Admin API (для привилегированных пользователей). Он инициирует большинство мероприятий оркестровки и политик (таких как квоты).

Authorization Manager

Каждому HTTP-запросу требуются специфические аутентификационные данные (согласно одной из схем аутентификации), которые провайдер сконфигурировал для соответствующего узла Compute. Authorization Manager — это не отдельный двоичный модуль, а Python-класс, доступный для использования любым компонентом OpenStack в целях аутентификации. Authorization Manager обеспечивает авторизованное использование API-интерфейсов пользователями, проектами и ролями. При необходимости получения детальных сведений Authorization Manager взаимодействует с компонентом OpenStack Identity Management (Keystone). Реальное хранилище пользовательской аутентификационной информации может представлять собой базу данных или службу LDAP (Lightweight Directory Access Protocol).

ObjectStore

ObjectStore— это основанное на HTTP простое хранилище объектов (подобное Amazon Simple Storage Service), предназначенное для хранения образов. В настоящее время в этом качестве обычно используется компонент OpenStack Image Service (Glance).

Очередь сообщений

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

Все эти элементы функционируют в неблокируемой архитектуре на основе сообщений и могут исполняться на одних и тех же или на разных хостах, при условии, что они используют один и тот же сервис очереди сообщений. Взаимодействие между ними осуществляется по принципу обратного вызова (callback) с использованием протокола AMQP (Advanced Message Queuing Protocol). По умолчанию в большинстве дистрибутивов используется реализация на основе RabbitMQ, обращение к которой осуществляется при посредстве библиотеки Kombu. Кроме того, имеются соответствующие плагины для реализаций на основе Apache Qpid и ZeroMQ.

Nova-элементы взаимодействуют друг с другом с помощью RPC-вызовов при посредстве Message Broker с использованием механизма публикации/подписки. Если говорить конкретнее, то Nova реализует rpc.call (запрос/ответ; API-интерфейс действует как потребитель) и rpc.cast (в одну сторону; API-интерфейс действует как публикатор).

API-интерфейс и планировщик Nova используют очередь сообщений в качестве Invoker, а Network и Compute действуют как Worker. Invoker отсылает сообщения посредством rpc.call или rpc.cast. Worker-шаблон получает сообщения из очереди и отвечает на каждый вызов rpc.call с соответствующим образом.

Демоны

Применительно к Nova двумя основными демонами являются демон Scheduler и демон Compute. Демон Scheduler принимает решение, какой именно Compute-хост следует выделить для удовлетворения запроса на виртуальную машину. Он использует вышеописанные алгоритмы фильтрации/планирования и учитывает множество параметров, в том числе следующие: наличие привязки (совместное размещение связанных рабочих нагрузок) и ее отсутствие (распределение рабочих нагрузок), зона доступности, использование ядер центральных процессоров, оперативная память системы, специальные расписания в формате JSON (JavaScript Object Notation). Обратите внимание, что демон принимает данное решение только на этапе инициализации и не осуществляет перераспределения ресурсов между исполняющимися экземплярами.

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

Для обеспечения функциональной полноты некоторые демоны выполняют функции, которые первоначально были поручены компоненту Nova, а теперь постепенно перемещаются в другие проекты. Элемент Network Manager управляет IP-переадресацией, сетевыми мостами и виртуальными локальными сетями (VLAN). Это демон типа Worker, который выбирает из очереди сообщений сетевые задачи. В настоящее время эти функции способен выполнять компонент OpenStack Networking (Neutron), который можно выбрать в соответствующем месте.

Элемент Volume Manager осуществляет подключение постоянных томов персистентного блочного хранилища (напр., Amazon Elastic Block Store) к виртуальным машинам (и соответственно их отключение). Данная функциональность была передана компоненту OpenStack Block Storage (Cinder). Это iSCSI-решение, использующее инструмент Logical Volume Manager.

Установка и настройка

Реальные инструкции по установке существенно зависят от дистрибутивов и от релиза OpenStack. В общем случае эти инструкции предоставляются в составе дистрибутива. Однако вне зависимости от дистрибутива/релиза вам придется выполнять одни и те же основные задачи, которые рассматриваются в этом разделе.

Системные требования

Платформа OpenStack ориентирована на 64-разрядную x86-архитектуру; другими словами, она рассчитана на применение массовых аппаратных средств, поэтому минимальные системные требования весьма скромны. Весь пакет проектов OpenStack может исполняться на одной системе, имеющей 8 ГБ оперативной памяти. Тем не менее, если необходимо выполнять какую-либо серьезную работу, то на узле Cloud Controller, на котором исполняются сетевые сервисы, сервисы хранения, API-интерфейс, планировщик и сервисы образов, официально рекомендуется иметь не менее12 ГБ оперативной памяти, два диска по 2 ТБ и сетевой адаптер. Требования к Compute-узлам (на которых исполняются виртуальные экземпляры) существенно зависят от их нагрузки, однако хорошей отправной точкой для простой системы является четырехъядерный процессор, 32 ГБ оперативной памяти и 2 гигабитных сетевых адаптера.

Установка

Инструкции по установке зависят от дистрибутива, в частности, от выбранной вами утилиты управления пакетом. Во многих случаях при установке необходимо объявить репозитарий. Так, например, в случае утилиты Zypper необходимо объявлять libzypp с параметром zypper ar:

# zypper ar -f http://download.opensuse.org/repositories/Cloud:/OpenStack:/Grizzly/SLE_11_SP3/Cloud:OpenStack:Grizzly.repo

Затем нужно установить требуемые пакеты Nova на узле Controller и на узле Compute. Утилита управления пакетами автоматически установит все нужные зависимости.

В качестве иллюстрации я показал основные команды для следующих ОС: Ubuntu, Red Hat (Red Hat Enterprise Linux®, CentOS, Fedora) и openSUSE.

  • Ubuntu: На узле Controller выполните:
    sudo apt-get install nova-novncproxy novnc nova-api nova-ajax-console-proxy nova-cert nova-conductor nova-consoleauth nova-doc nova-scheduler nova-network

    На узле Compute выполните:

    sudo apt-get install nova-compute nova-network
    sudo apt-get install glance
  • Red Hat: Выполните следующую команду:
    sudo yum install openstack-nova 
    sudo yum install openstack-glance
  • openSUSE: Выполните следующую команду:
    sudo zypper install openstack-nova openstack-glance

Конфигурация

Конфигурация Nova описывается в нескольких файлах, но самым важным из них является файл nova.conf, который устанавливается в каталог /etc/nova. Набор опций по умолчанию хорошо подходит для стандартной установки, однако при наличии каких-либо особых требований вам придется отредактировать эту конфигурацию. Ознакомьтесь с форматом файла nova.conf и со списком конфигурационных опций.

Сценарий использования

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

  1. Войдите в панель OpenStack Dashboard в качестве пользователя с ролью Member.
  2. В навигационной панели под заголовком Manage Compute сначала нажмитеImages & Snapshots, а затем Create Image. Откроется окно Create An Image (рис. 2) в котором можно сконфигурировать настройки, описывающие экземпляр.
  3. Введите имя и местоположение образа, которое вы ранее создали или загрузили. Вам следует указать формат файла с образом, но нет никакой необходимости указывать минимальные размеры диска или оперативной памяти, если у вас нет такого желания.
    Рисунок 2. Создание образа
    Image showing the Create An Image window
    Image showing the Create An Image window
  4. После создания образа под заголовком Manage Compute нажмите Instances, а затем Launch Instance.
    Рисунок 3. Запуск экземпляра
    Image showing the Launch Instance window
    Image showing the Launch Instance window
  5. Окно подтвердит вашу конфигурацию и позволит задать необходимый шаблон (Flavor) или базовую конфигурацию оборудования. Нажмите Launch; после этого должно начаться исполнение экземпляра.
  6. 6. Перейдем к созданию моментального снимка. Под заголовком Manage Compute нажмите Instances, а затем нажмите Create Snapshot в строке, связанной с интересующим вас экземпляром.
    Рисунок 4. Экземпляры
    Image showing the Instances window
    Image showing the Instances window

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

  7. Чтобы удалить образ и моментальные снимки, вернитесь к меню Images & Snapshots — в нем имеется опция для удаления ненужных объектов.
Рисунок 5. Образы и снимки
Image showing the Images & Shapshots window
Image showing the Images & Shapshots window

Заключение

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


Ресурсы для скачивания


Похожие темы


Комментарии

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

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=40
Zone=Облачные вычисления
ArticleID=971627
ArticleTitle=Знакомство с OpenStack: компонент Glance и компонент Nova
publish-date=05192014