OpenStack Nova

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

В системе существует восемь обособленных компонентов:

  • Контроллер Облака (Cloud Controller) следит за состоянием системы и является связующим звеном всех остальных компонентов.
  • Сервер API (API Server) реализует web-интерфейс, позволяющий управлять контроллером облака.
  • Контроллер вычислений (Compute Controller) отвечает за запуск виртуальных машин и их связь со всей остальной инфраструктурой.
  • Хранилище (Object Store) предоставляет сервис хранения данных, совместимый с Amazon S3.
  • Менеджер аутентификации (Auth Manager) предоставляет сервисы аутентификации и авторизации.
  • Контроллер томов (Volume Controller) дает возможностьподключать виртуальные устройства хранения к виртуальным машинам.
  • Сетевой контроллер (Network Controller) создает виртуальные сети, позволяя виртуальным машинам взаимодействовать друг с другом и с внешней сетью.
  • Планировщик (Scheduler) ответственен за выбор подходящего контроллера вычислений для запуска новой виртуальной машины.

Перечисленные выше компоненты связаны между собой.

«Управляющий центр» облака. В «управляющий центр» облака, работающий на выделенной машине, входит сервер API, контроллер облака и менеджер аутентификации. Администратор использует утилиту nova-manage для управления характеристиками всей инфраструктуры и доступом к ней пользователей. Клиенты, которые хотят использовать облачный сервис, подключаются к серверу API с помощью клиентских утилит Amazon EC2 или их свободного варианта под названием euca2ool из проекта Eucalyptus.

Управление хранилищем данных (ObjectStore), за которое отвечает еще одна выделенная машина. В состав Nova включена только начальная реализация S3-совместимого хранилища данных, использующаяся только для отладки. В реальных проектах на ее месте должен быть установлен Swift, развивающийся отдельно от Nova.

Контроллер томов (еще одна выделенная машина) позволяет подключать к виртуальным машинам своего рода внешние накопители данных (виртуальные флэшбрелки). Его присутствие в инфраструктуре необязательно.

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

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

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

Обработка пользовательских запросов в системе.

Пользователь при помощи клиентских инструментов инициирует запрос на создание виртуальной машины к серверу API. Далее происходит аутентификация и авторизация пользователя, после чего сервер API разбирает запрос и посылает его контроллеру облака. Последний инициирует три новых запроса: к сетевому контроллеру, к хранилищу и к планировщику. Сетевой контроллер выделяет IP-адрес для новой виртуальной машины и возвращает его контроллеру облака. В сетевом хранилище происходит поиск подходящего образа жесткого диска для будущей виртуальной машины, адрес которого возвращается контроллеру облака. Имея все необходимое для создания новой виртуальной машины, контроллер облака посылает запрос планировщику, который выбирает наиболее подходящий контроллер вычислений и отдает ему запрос на создание ВМ. После того, как новая ВМ будет запущена, контроллер облака завершает свою работу и сообщает серверу API об успехе всей операции. Теперь пользователь может подключиться к ВМ, а всю деятельность по поддержанию ее в работоспособном состоянии, выделении дискового пространства, маршрутизации сетевых пакетов и прочую работу система берет на себя.

Обработка пользовательских запросов в системе.

Гибкость и управляемость облачной инфраструктуры OpenStack

Компоненты системы полностью обособлены друг от друга и общаются только с помощью отправки асинхронных сообщений или протокола HTTP. Любые изменения в дизайне выдерживаются настроенной и работающей системой; на переконфигурирование требуется минимальное время.

OpenStack не является замкнутой обособленной системой и использует сторонние продукты. Для управления им можно использовать стандартные клиенты сервиса Amazon EC2, а для запуска виртуальных машин применять системы виртуализации (на сегодня поддерживаются KVM, UML, XEN, HyperV и qemu).