OpenStack (сокращенно O~S) — это бесплатная платформа облачных вычислений с открытым стандартом . В основном он развертывается по принципу «инфраструктура как услуга» (IaaS) как в общедоступных, так и в частных облаках, где виртуальные серверы и другие ресурсы доступны пользователям. [2] Программная платформа состоит из взаимосвязанных компонентов, которые управляют разнообразными пулами оборудования разных производителей для обработки, хранения и сетевых ресурсов в центре обработки данных . Пользователи управляют им либо через веб-панель, либо с помощью инструментов командной строки , либо через веб-службы RESTful .
OpenStack зародился в 2010 году как совместный проект Rackspace Hosting и NASA . По состоянию на 2012 год [обновлять]им управляла OpenStack Foundation , некоммерческая корпоративная организация, созданная в сентябре 2012 года [3] для продвижения программного обеспечения OpenStack и его сообщества. [4] К 2018 году к проекту присоединились более 500 компаний. [5] В 2020 году фонд объявил, что в 2021 году он будет переименован в Фонд открытой инфраструктуры . [6]
В июле 2010 года Rackspace Hosting и NASA объявили об инициативе облачного программного обеспечения с открытым исходным кодом, известной как OpenStack. [7] [8] Миссия заключалась в том, чтобы «создать повсеместную платформу облачных вычислений с открытым исходным кодом, которая будет отвечать потребностям публичных и частных облаков независимо от размера, будучи простой в реализации и масштабируемой». [9]
Проект призван помочь организациям предлагать услуги облачных вычислений, работающие на стандартном оборудовании. Первый официальный релиз сообщества под кодовым названием Austin появился три месяца спустя, 21 октября 2010 года , [10] при этом планируется выпускать регулярные обновления программного обеспечения каждые несколько месяцев. Ранний код был взят с платформы NASA Nebula , а также с платформы Cloud Files компании Rackspace . Модули облачного стека и открытого стека были объединены и выпущены с открытым исходным кодом командой NASA Nebula [11] совместно с Rackspace.
В 2011 году разработчики дистрибутива Ubuntu Linux приняли OpenStack [12] с предварительной версией неподдерживаемой технологии версии OpenStack «Bexar» для Ubuntu 11.04 « Natty Narwhal ». [13] Затем компания Canonical , спонсор Ubuntu, представила полную поддержку облаков OpenStack, начиная с версии OpenStack Cactus. [ нужна цитата ]
OpenStack стал доступен в Debian Sid из выпуска Openstack «Cactus» в 2011 году, а первым выпуском Debian, включая OpenStack, был Debian 7.0 (кодовое имя «Wheezy»), включая OpenStack 2012.1 (кодовое имя: «Essex»). [14] [15]
В октябре 2011 года SUSE объявила о публичной предварительной версии первого в отрасли полностью настроенного устройства на базе OpenStack, основанного на выпуске OpenStack «Diablo». [16] В августе 2012 года SUSE объявила о выпуске коммерчески поддерживаемого корпоративного дистрибутива OpenStack, основанного на выпуске «Essex». [17]
В 2012 году Red Hat объявила о предварительной версии своего дистрибутива OpenStack [18] , начиная с версии «Essex». После еще одного предварительного выпуска Red Hat представила коммерческую поддержку OpenStack в выпуске Grizzly в июле 2013 года. [19]
Организация OpenStack быстро выросла и поддерживается более чем 540 компаниями. [20]
В 2012 году НАСА вышло из OpenStack в качестве активного участника и вместо этого приняло стратегическое решение использовать Amazon Web Services для облачных сервисов. [21] В июле 2013 года НАСА опубликовало результаты внутреннего аудита, назвав отсутствие технического прогресса и другие факторы основной причиной того, что агентство отказалось от участия в качестве активного разработчика проекта и вместо этого сосредоточилось на использовании общедоступных облаков. [22] Этот отчет частично противоречит замечаниям директора по информационным технологиям Исследовательского центра Эймса Рэя О'Брайена. [23] По состоянию на ноябрь 2021 года НАСА продолжает использовать OpenStack для поддержки IAAS и PAAS суперкомпьютерного кластера Discover. Среда OpenStack называется «Explore» и работает в Центре климатического моделирования НАСА в Центре космических полетов Годдарда. [24]
В ноябре 2012 года британская правительственная цифровая служба (GDS) запустила Inside Government [25] на основе модели OpenNASA v2.0 Government as a Platform (GaaP).
В декабре 2013 года компания Oracle объявила, что присоединилась к OpenStack в качестве спонсора и планирует внедрить OpenStack в Oracle Solaris, Oracle Linux и многие из своих продуктов. [26] За этим последовало объявление о выпуске дистрибутивов Oracle OpenStack для Oracle Solaris [27] [28] и для Oracle Linux с использованием Icehouse 24 сентября 2014 года. [29]
В мае 2014 года HP анонсировала HPE Helion и выпустила предварительную версию сообщества HP Helion OpenStack, начиная с выпуска IceHouse. HP управляет общедоступным облаком HP Helion на OpenStack с 2012 года. [30]
На выставке Interop and Tech Field Day 2014 компания Avaya продемонстрировала программно-конфигурируемую сеть с использованием моста по кратчайшему пути и OpenStack в качестве автоматизированного кампуса, расширяя автоматизацию от центра обработки данных до конечного устройства и устраняя ручную настройку из предоставления услуг. [31] [32]
По состоянию на ноябрь 2021 года [обновлять]НАСА размещает частное облако Explore OpenStack для поддержки Discover HPC. [33]
По состоянию на сентябрь 2022 года [обновлять]China Mobile использует OpenStack в качестве основы своей сети 5G. Red Hat утверждает, что ее платформа развернута более чем в 30 процентах производственных сетей LTE. [34]
Облаку OpenStack в ЦЕРН требуется более 300 000 ядер для удовлетворения потребностей Большого адронного коллайдера . [34]
Несколько проектов OpenStack изменили названия из-за проблем с товарными знаками.
Сообщество OpenStack сотрудничает в рамках шестимесячного цикла выпуска с частыми этапами разработки. [68]
На этапе планирования каждого выпуска сообщество собиралось на саммит OpenStack Design Summit, чтобы облегчить рабочие сессии разработчиков и составить планы. [69] Эти саммиты по дизайну совпадут с конференцией OpenStack Summit.
Начиная с цикла разработки Pike, встречи по проектированию были выделены в отдельное мероприятие «Сбор проектных групп» (PTG). [70] Это было сделано для того, чтобы избежать отвлечения разработчиков презентациями и встречами с клиентами, которые проходили на саммите OpenStack, а также чтобы позволить обсуждениям дизайна произойти до начала следующего цикла.
Последние саммиты OpenStack состоялись в Шанхае 4–6 ноября 2019 г., [71] в Денвере 29 апреля — 1 мая 2019 г., [72] в Берлине 13–19 ноября 2018 г., [73] в Ванкувере 21–25 мая 2018 г., [ 74] Сидней , 6–8 ноября 2017 г., [75] Бостон , 8–11 мая 2017 г., [76] Остин , 25–29 апреля 2016 г., [77] и Барселона , 25–28 октября 2016 г. [78] Предыдущие саммиты OpenStack. состоялись также в Токио в октябре 2015 г., [79] в Ванкувере в мае 2015 г., [80] и в Париже в ноябре 2014 г. [81] Саммит в мае 2014 г. в Атланте собрал 4500 участников – на 50% больше, чем на саммите в Гонконге. шесть месяцев назад. [82] [83]
OpenStack имеет модульную архитектуру с различными кодовыми названиями для своих компонентов. [41]
Nova — это проект OpenStack, который предоставляет возможность предоставлять вычислительные экземпляры в виде виртуальных машин, реальных аппаратных серверов (по иронии судьбы) и имеет ограниченную поддержку системных контейнеров. Nova работает как набор демонов поверх существующих серверов Linux и обеспечивает эту услугу. [84] [85]
Нова написана на Python . Он использует множество внешних библиотек Python, таких как Eventlet (библиотека параллельных сетей), Kombu ( инфраструктура обмена сообщениями AMQP ) и SQLAlchemy (набор инструментов SQL и реляционный преобразователь объектов). [86] Nova спроектирована с возможностью горизонтального масштабирования . Вместо перехода на более крупные серверы вы приобретаете больше серверов и просто устанавливаете идентично настроенные службы. [87]
Из-за его широкой интеграции в инфраструктуру уровня предприятия, мониторинга производительности OpenStack в целом и производительности Nova в частности, масштабирование становится все более важной проблемой. Для мониторинга сквозной производительности требуется отслеживание показателей Nova, Keystone, Neutron, Cinder, Swift и других сервисов, а также мониторинг RabbitMQ , который используется сервисами OpenStack для передачи сообщений. [88] [89] Все эти службы генерируют свои собственные файлы журналов, которые, особенно в инфраструктурах уровня предприятия, также следует отслеживать. [90]
Neutron — это проект OpenStack, обеспечивающий «сетевое подключение как услугу» между интерфейсными устройствами (например, картами виртуального сетевого интерфейса (VNIC), управляемыми другими службами OpenStack (например, nova). Он реализует OpenStack Networking API. [ 91]
Он управляет всеми сетевыми аспектами виртуальной сетевой инфраструктуры (VNI) и аспектами уровня доступа физической сетевой инфраструктуры (PNI) в среде OpenStack. OpenStack Networking позволяет проектам создавать расширенные топологии виртуальных сетей, которые могут включать такие службы, как брандмауэр и виртуальную частную сеть (VPN). [91]
Neutron позволяет использовать выделенные статические IP-адреса или DHCP . Это также позволяет использовать плавающие IP- адреса для динамического перенаправления трафика.
Пользователи могут использовать технологии программно-определяемых сетей (SDN), такие как OpenFlow, для поддержки мультиарендности и масштабирования. Сетевые решения OpenStack позволяют развертывать и управлять дополнительными сетевыми службами, такими как системы обнаружения вторжений (IDS), балансировка нагрузки , межсетевые экраны и виртуальные частные сети (VPN). [92]
Cinder — это служба блочного хранилища OpenStack для предоставления томов виртуальным машинам Nova, хостам Ironic, контейнерам и т. д. Некоторые из целей Cinder должны быть/иметь:
Тома Cinder предоставляют постоянное хранилище для гостевых виртуальных машин, известных как экземпляры, которые управляются программным обеспечением OpenStack Compute. Cinder также можно использовать независимо от других сервисов OpenStack в качестве автономного программно-определяемого хранилища. Система блочного хранения управляет созданием, репликацией, управлением моментальными снимками, подключением и отключением блочных устройств к серверам. [94]
Keystone — это служба OpenStack, которая обеспечивает аутентификацию клиентов API, обнаружение служб и распределенную многопользовательскую авторизацию путем реализации API идентификации OpenStack. [95] Это общая система аутентификации в облачной операционной системе. Keystone может интегрироваться со службами каталогов, такими как LDAP . Он поддерживает стандартные учетные данные имени пользователя и пароля, системы на основе токенов и входы в стиле AWS (например, Amazon Web Services ). Каталог сервисов OpenStack Keystone позволяет клиентам API динамически обнаруживать облачные сервисы и переходить к ним. [96] [97]
Проект службы изображений (glance) предоставляет службу, с помощью которой пользователи могут загружать и находить ресурсы данных, предназначенные для использования с другими службами. В настоящее время сюда входят изображения и определения метаданных. [98]
Службы образов Glance включают обнаружение, регистрацию и получение образов виртуальных машин (ВМ). Glance имеет RESTful API, который позволяет запрашивать метаданные образа виртуальной машины, а также извлекать сам образ. Образы виртуальных машин, доступные через Glance, могут храниться в самых разных местах: от простых файловых систем до систем объектного хранения, таких как проект OpenStack Swift. [98]
Glance содержит каталог метаопределений. Это дает сообществу OpenStack возможность программно определять различные имена ключей метаданных и допустимые значения, которые можно применять к ресурсам OpenStack. [98]
Swift — это распределенное, в конечном итоге согласованное хранилище объектов/BLOB-объектов. Проект OpenStack Object Store, известный как Swift, предлагает программное обеспечение для облачного хранилища, позволяющее хранить и извлекать большое количество данных с помощью простого API. Он создан для масштабирования и оптимизирован для обеспечения надежности, доступности и параллелизма по всему набору данных. Swift идеально подходит для хранения неструктурированных данных, которые могут неограниченно расти. [99]
В августе 2009 года Rackspace начала разработку предшественника OpenStack Object Storage в качестве полной замены продукта Cloud Files . Первоначальная команда разработчиков состояла из девяти разработчиков. [100] SwiftStack, компания-разработчик программного обеспечения для объектного хранения, в настоящее время является ведущим разработчиком Swift при значительном вкладе Intel , Red Hat , NTT , HP , IBM и других. [101]
Horizon — это каноническая реализация информационной панели OpenStack, которая предоставляет веб-интерфейс пользователя для сервисов OpenStack, включая Nova, Swift, Keystone и т. д. [102] Horizon поставляется с тремя центральными информационными панелями: «Пользовательской информационной панелью», «Системной информационной панелью» и «Системной информационной панелью». и панель «Настройки». Между этими тремя они охватывают основные приложения OpenStack и обеспечивают базовую поддержку. Приложение Horizon также поставляется с набором абстракций API для основных проектов OpenStack, чтобы предоставить разработчикам согласованный и стабильный набор повторно используемых методов. Используя эти абстракции, разработчикам, работающим над Horizon, не нужно хорошо знать API каждого проекта OpenStack. [103]
Heat — это сервис для организации нескольких составных облачных приложений с использованием шаблонов как через собственный REST API OpenStack, так и через API запросов, совместимый с CloudFormation. [104]
Mistral — сервис управления рабочими процессами. Пользователь обычно пишет рабочий процесс, используя язык рабочих процессов на основе YAML, и загружает определение рабочего процесса в Mistral через его REST API. Затем пользователь может запустить этот рабочий процесс вручную через тот же API или настроить триггер для запуска рабочего процесса при каком-либо событии. [105]
OpenStack Telemetry (Ceilometer) обеспечивает единую точку контакта для биллинговых систем, предоставляя все счетчики, необходимые для выставления счетов клиентам, во всех текущих и будущих компонентах OpenStack. Доставка счетчиков отслеживается и подлежит аудиту, счетчики должны легко расширяться для поддержки новых проектов, а агенты, осуществляющие сбор данных, должны быть независимы от всей системы.
Trove — это механизм реляционной и нереляционной базы данных , предоставляющий базу данных как услугу . [106]
Sahara — это компонент для простого и быстрого предоставления кластеров Hadoop . Пользователи будут указывать несколько параметров, таких как номер версии Hadoop, тип топологии кластера, детали типа узла (определение дискового пространства, настройки ЦП и ОЗУ) и другие. После того как пользователь предоставит все параметры, Sahara развернет кластер за несколько минут. Sahara также предоставляет средства масштабирования уже существующего кластера Hadoop путем добавления и удаления рабочих узлов по требованию. [107] [108]
Ironic — это проект OpenStack, который предоставляет «голое железо» вместо виртуальных машин. Первоначально он был ответвлением драйвера Nova Baremetal и превратился в отдельный проект. Его лучше всего рассматривать как API-интерфейс гипервизора с «голым железом» и набор плагинов, которые взаимодействуют с «голыми» машинами, управляемыми Ironic. По умолчанию он будет совместно использовать PXE и IPMI или Redfish [109] для предоставления и управления физическими машинами, но Ironic поддерживает и может быть расширен с помощью подключаемых модулей конкретного поставщика для реализации дополнительных функций. [110] [111]
С момента создания Ironic он породил несколько подпроектов [112] для поддержки дополнительных вариантов использования и возможностей. Некоторые из наиболее часто используемых проектов включают Ironic-Inspector, Bifrost, Sushy и networking-generic-switch. Ironic-inspector обеспечивает сбор информации об оборудовании и обнаружение оборудования. [113] Bifrost фокусируется на варианте использования без других компонентов OpenStack, [114] и освещается на веб-сайте Ironicbaremetal.org. Sushy — это легкая клиентская библиотека Redfish API. [115] Networking-generic-switch — это плагин, который поддерживает управление конфигурацией порта коммутатора для аппаратных компьютеров. [116]
Zaqar — это многопользовательская облачная служба обмена сообщениями для веб-разработчиков. Служба имеет полностью RESTful API, который разработчики могут использовать для отправки сообщений между различными компонентами своих SaaS и мобильных приложений, используя различные шаблоны связи. В основе этого API лежит эффективный механизм обмена сообщениями, разработанный с учетом масштабируемости и безопасности. Другие компоненты OpenStack могут интегрироваться с Zaqar, чтобы отображать события для конечных пользователей и взаимодействовать с гостевыми агентами, которые работают на «облачном» уровне.
Общая файловая система OpenStack (Манила) предоставляет открытый API для управления общими ресурсами в независимой от поставщика среде. Стандартные примитивы включают возможность создания, удаления, а также предоставления/запрета доступа к общему ресурсу и могут использоваться автономно или в различных сетевых средах. Поддерживаются коммерческие устройства хранения данных от EMC, NetApp, HP, IBM, Oracle, Quobyte, INFINIDAT и Hitachi Data Systems, а также технологии файловых систем, такие как Red Hat GlusterFS [117] или Ceph.
Designate — это мультитенантный REST API для управления DNS. Этот компонент предоставляет DNS как услугу и совместим со многими серверными технологиями, включая PowerDNS и BIND. Он не предоставляет службу DNS как таковую, поскольку его целью является взаимодействие с существующими DNS-серверами для управления зонами DNS для каждого клиента. [118]
Проект больше не поддерживается активно.
Searchlight предоставляет расширенные и согласованные возможности поиска в различных облачных сервисах OpenStack. Это достигается за счет разгрузки поисковых запросов пользователей с других серверов API OpenStack путем индексации их данных в Elasticsearch . [119] Searchlight интегрируется в Horizon [120] и также предоставляет интерфейс командной строки . [121]
Barbican — это REST API, предназначенный для безопасного хранения, предоставления и управления секретами. Он нацелен на то, чтобы быть полезным для всех сред, включая большие эфемерные облака. [122]
Magnum — это API-служба OpenStack, разработанная командой OpenStack Containers, которая делает механизмы оркестрации контейнеров, такие как Docker Swarm, Kubernetes и Apache Mesos, доступными в качестве первоклассных ресурсов в OpenStack. Magnum использует Heat для организации образа ОС, который содержит Docker и Kubernetes, и запускает этот образ либо на виртуальных машинах, либо на «голом железе» в конфигурации кластера. [123]
Vitrage — это служба OpenStack RCA (Анализ первопричин) для организации, анализа и расширения сигналов тревоги и событий OpenStack, позволяющая получить представление об основных причинах проблем и определить их существование до того, как они будут непосредственно обнаружены. [124]
Эта служба тревожных сигналов позволяет инициировать действия на основе определенных правил в отношении данных показателей или событий, собранных Ceilometer или Gnocchi. [125]
OpenStack не стремится к совместимости с API других облаков. [126] Однако существует некоторая степень совместимости, движимая различными членами сообщества OpenStack, для которых такие вещи важны.
OpenStack управляется фондом OpenInfra и его советом директоров. Совет директоров состоит из Платиновых спонсоров, членов Золотых спонсоров и членов, избираемых отдельными членами Фонда. [129] Технический комитет OpenStack является руководящим органом проекта OpenStack с открытым исходным кодом. Это избранная группа, которая представляет участников проекта и контролирует все технические вопросы. Сюда входят разработчики, операторы и конечные пользователи программного обеспечения.
Устройство OpenStack [130] — это название программного обеспечения, которое может поддерживать платформу облачных вычислений OpenStack на физических устройствах, таких как серверы или виртуальные машины , или на их комбинации. Обычно программное устройство [131] представляет собой набор программных возможностей, которые могут функционировать без операционной системы. Таким образом, для работы они должны содержать достаточное количество основных компонентов операционной системы. Таким образом, строгим определением может быть следующее: приложение, разработанное для обеспечения возможностей OpenStack без необходимости использования базовой операционной системы. Однако применение этого строгого определения может оказаться бесполезным, поскольку на самом деле не существует четкого различия между устройством и дистрибутивом . [132] Можно утверждать, что термин «устройство» в некотором роде является неправильным, поскольку сам OpenStack упоминается как облачная операционная система [133] , поэтому использование термина «устройство OpenStack» может быть неправильным, если кто-то проявляет педантичность.
Если мы посмотрим на диапазон устройств и дистрибутивов, то можно заметить различие, что дистрибутивы — это те наборы инструментов, которые пытаются обеспечить широкий охват области проекта OpenStack, тогда как устройство будет иметь более узкую направленность, концентрируясь на меньшем количестве проектов. Поставщики активно участвовали в OpenStack с момента его создания и с тех пор разработали и продают широкий спектр устройств, приложений и дистрибутивов.
Решения OpenStack предлагают большое количество поставщиков, а это означает, что перед организацией, желающей внедрить эту технологию, стоит сложная задача по выбору предложения поставщика, которое наилучшим образом соответствует ее бизнес-требованиям. [134] Барб Дэрроу представила этот обзор в Fortune 27 мая 2015 года, [135] отметив, что на рынке может произойти некоторая консолидация, которая прояснит эти решения.
Есть и другие аспекты, которые пользователи должны учитывать, например, реальные затраты. [136] Некоторые поставщики сделают предложение, охватывающее большинство проектов OpenStack; другие будут предлагать только определенные компоненты. Другие соображения включают объем проприетарного кода, используемого для управления недостатком зрелости компонента OpenStack, и то, в какой степени это способствует привязке к поставщику. [137] [138]
Самая авторитетная информация о продуктах вендора находится на сайте Open Infrastructure Foundation. [139]
OpenStack — сложная организация, и пользователи, внедряющие OpenStack, сталкиваются с рядом проблем при попытке внедрить OpenStack в организации. Для многих организаций, пытающихся реализовать собственные проекты, ключевой проблемой является отсутствие имеющихся навыков. [140] В статье The New Stack Атул JHA выделяет пять проблем, с которыми может столкнуться любая организация, желающая развернуть OpenStack. [141]
OpenStack — это набор проектов, а не отдельный продукт, и поскольку каждое из различных приложений необходимо настроить в соответствии с требованиями пользователя, установка сложна и требует ряда дополнительных навыков [ 142] для оптимальной настройки. . Одним из очевидных решений было бы использование полного пакета оборудования и программного обеспечения, поставляемого поставщиком, хотя при этом необходима комплексная проверка. [143]
Это больше зависит от характера документации продуктов с открытым исходным кодом, чем OpenStack как такового, но при наличии более чем 25 проектов управление качеством документации всегда будет сложной задачей. [144]
Одна из основных целей использования инфраструктуры облачного типа — предложить пользователям не только высокую надежность, но и высокую доступность, [145] то, что поставщики общедоступных облаков будут предлагать в соглашениях об уровне обслуживания . [146]
Из-за многопроектного подхода OpenStack к разработке сложность синхронизации различных проектов во время обновления может означать, что простои неизбежны . [147]
Компании довольно часто продолжают использовать более раннюю версию программного обеспечения в течение некоторого времени после ее обновления. Причины этого довольно очевидны и упомянуты выше. Однако у разработчиков проектов с открытым исходным кодом мало стимулов обеспечивать поддержку замененного кода. Кроме того, сам OpenStack официально прекратил поддержку некоторых старых выпусков. [148]
Учитывая вышеизложенные проблемы, наиболее подходящим путем для организации, желающей внедрить OpenStack, будет обращение к поставщику и поиск устройства или дистрибутива OpenStack.
По мере развития проекта OpenStack поставщики впервые предложили клиентам несколько способов развертывания OpenStack:
Oracle OpenStack для Oracle Linux, или O3L, теперь доступен, что позволяет клиентам управлять как Oracle Linux, так и Oracle VM с помощью OpenStack.
Однако это также сопровождается объявлением о соглашении о «взаимном сотрудничестве и поддержке» с Canonical, которое рассматривается как прямой удар по Red Hat.