Oops... your message was not sent

Your message has been successfully sent

тематические истории, основанные на опыте компании JetRuby
DevOps

OpenStack: переходим на сторону продуктивности

OpenStack является комплексом проектов свободного ПО, используемым для создания в облаке инфраструктурных хранилищ и сервисов. Причем они могут быть как частными, так и публичными. Комплекс лицензирован фондом Apache Software Foundation. Соответственно все его проекты имеют маркировку Apache License.

Немного истории

Все началось в июле 2010 года. Именно тогда был открыт исходный код проектов Nebula и Rackspace Cloud Files. Чуть позже, в октябре 2011 года  компания Rackspace решила передать права на программный код и торговый знак OpenStack общественной организации OpenStack Foundation. Ее открытие состоялось в 2012 году.

Разработкой проекта OpenStack занималось почти две сотни компаний. По состоянию на 2014 год — это было абсолютным рекордом для некоммерческих организаций.  Однако мы забежали немного вперед.

В августе 2012 года был презентован предварительный дистрибутив, базирующийся на OpenStack. Его разработкой занимались представители компании Red Hat. Тогда же была анонсирована коммерческая версия ПО. Разработчики заявили, что она появится в первом квартале 2013 года.

Наконец, наступил сентябрь 2014 года. Компания Cisco делает официальное заявление о покупке Metacloud — организации, занимающейся созданием и обслуживанием облачных систем на платформе OpenStack. Эта сделка стала крупнейшей за всю историю существования проекта.

Основные компоненты OpenStack

  • Nova — контроллер вычислительных ресурсов
  • Swift — облачное хранилище файлов
  • Glance — библиотека виртуальных машинных образов
  • Keystone — сервис, отвечающий за идентификацию
  • Cinder — служба, обеспечивающая работу с устройствами хранения данных (впоследствии ставшая отдельным проектом)
  • Neutron (изначально — Quantum) — сервис подключения к сети, обеспечивающий взаимодействие между интерфейсами различных устройств (vNIC), находящихся под управлением других сервисов OpenStack.

Теперь рассмотрим каждый компонент OpenStack в отдельности.

OpenStack Nova

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

Система состоит из восьми обособленных друг от друга компонентов:

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

OpenStack Swift

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

Хранилище состоит из нескольких компонентов:

  • Proxy Server, объединяющий воедино все элементы системы
  • Object Server, ответственный за сохранность данных
  • Container Server, обеспечивающий отдачу списка объектов
  • Account Server, передающий листинги контейнеров конкретным аккаунтам

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

OpenStack Glance

Проект Glance призван обеспечить поиск, регистрацию и отбор виртуальных машин (VMI). В рамках проекта применяется RESTful API, что гарантирует возможность запрашивать метаданные VMI и совершать поиск фактических образов VMI.

Сервер Glance предоставляет своим пользователям такие услуги:

  • Поиск и хранение VMI
  • Поиск и хранение метаданных VMI
  • В БУДУЩЕМ: Конвертация VMI из разных форматов
  • В БУДУЩЕМ: Поддержка прокси-серверов, таких как Varnish или Squid

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

OpenStack Horizon

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

Аналогом Horizon в VMware vCloud служит vCloud Director User Interface Console. Для начала работы с этим компонентом требуются:

  • элемент для управления ID, который осуществляет аутентификацию (в нашем случае — это KeyStone)
  • система для управления образами помимо Nova и Python (Glance в качестве эквивалента хранилища AMI в Amazon AWS)

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

OpenStack Neutron

Neutron необходим для подключения к сети. Этот компонент имеет явное сходство с vSwitch, vCNS и Distributed vSwitch, предоставляя аналогичные сервисы в среде vCloud. Что же касается среды AWS, там все операции, основанные на построении сети и выполняемые юзерами на запущенных инстансах (к примеру, присвоение IP адресов, изменение настроек VPN, DNS, DHCP и т.д.), могут направляться в сферу действия Neutron. Как это происходит? Компонент Nova производит провижининг VM через отправку запроса с консоли Horizon. Далее пользователь выражает желание задать сетевой интерфейс для VM, настройки IP адреса и пр. Именно здесь выполняет свою работу Neutron — компонет функционирует в фоновом режиме. Благодаря модульной архитектуре, обеспечивающей возможность подключения разных устройств, различные вендоры (такие как Nicira и Arista Networks) органично интегрируют собственные решения с OpenStack.

OpenStack Cinder

Cinder является сервисом блочного хранения данных. Этот компонент может представлять собой дополнительный том (например, диск D: в Windows Servers), прикрепляемый или назначаемый виртуальной машине. Необходимо понимать, что Cinder — это ни в коем случае не локальное хранилище с установленной операционной системой, как диск C: в ОС Windows.

Хранилища в IaaS-облаке могут находиться на двух уровнях:

  • уровень файлов
  • уровень блоков

Последние используются высокопроизводительными системами типа SQL Server Databases или Exchange. Ну или приложениями с высокой динамикой изменений в требованиях к данным. Обобщая, можно сказать, что речь идет о дорогих хранилищах, обеспечивающих быстрый доступ. При этом все без исключения ведущие вендоры систем хранения функционируют в тандеме Cinder.

Существуют интересные исследования, посвященные работе SDS нового поколения с Cinder. Они касаются таких систем хранения как NexentaStor компании Nexenta и StoreVirtual компании HP. Практика показывает, что использование Cinder позволяет создавать,откреплять/прикреплять том от/к инстансу VM. Что характерно, Cinder может работать еще и с сетевыми файловыми системами на базе Unix/Linux.

OpenStack KeyStone

Компонент KeyStone отвечает за услуги идентификации. В качестве аналога можно привести ILM в Microsoft Networking. Впрочем, в отличие, например, от Active Directory, работающей на основе маркеров, KeyStone также приводит в действие механизм аутентификации формата имя пользователя/пароль для облака OpenStack. Без этой функции у пользователя не получится даже войти в панель управления Horizon и приступить к работе с облачными сервисами. Также этот компонент производит подключение к OpenLDAP или Active Directory (и даже Amazon AWS). KeyStone работает с OpenStack Identity Service API, реализованный через сервис RESTful (работает через TCP-порт 443 по SSL, поверх HTTPS или HTTP).

OpenStack Ceilometer

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

Перечислим основные функции проекта Ceilometer:

  • Сбор различных метрик при грамотном расходе сетевых и процессорных ресурсов
  • Сбор информации посредством сканирования служебных уведомлений или опроса инфраструктуры
  • Настройка типа данных для сбора в соответствии разнообразным эксплуатационным требованиям
  • Получение доступа к информации об измерениях и ее добавление с использованием REST API
  • Расширение инфраструктуры с целью сбора метрик (обеспечивается дополнительными плагинами)
  • Получение неопровержимых сообщений, содержащих результаты измерений

OpenStack Heat

Сервис/проект, необходимый для управления облаком OpenStack. Он позволяет клиентам осуществлять провижининг целой группы облачных сервисов, благодаря шаблонам AWS CloudFormation (компания Amazon) и встроенному REST API OpenStack. Этого сервиса не было в Grizzly, однако сегодня он доступен в Havana.

Вывод

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

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

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

department
Статью подготовил
Отдел разработки и системного администрирования
Компания обеспечивает теснейшую взаимосвязь программистов и специалистов по эксплуатации ПО. Scrum решения и прочие методолгоии управления проектами помогают нам в разработке качественного программного продукта.
New Articles