Реализации API OpenStack
Последние 6 часов я потратил на чтение высокопоставленных высокоуровневых документов / блогов / статей / слайдшэров, пронизанных модными словами, и пытался точно понять, что такое OpenStack. Я это понимаю:
OpenStack - это бесплатная программная платформа для облачных вычислений с открытым исходным кодом. Пользователи в основном развертывают его как решение "инфраструктура как услуга" (IaaS).
Но опять же, это очень высокое, высокоуровневое краткое изложение деталей, которое на самом деле не имеет значения для меня как инженера.
Ядумаю, что понял основную концепцию, но хотел бы отразить мое понимание SO, и, кроме того, мне тяжело видеть "лес сквозь деревья" на предмет компонентов OpenStack.
Японимаю, что OpenStack:
- Устанавливается как исполняемое приложение навиртуальных машинах1+ (гостевые виртуальные машины); а также
- Каким-то образом все экземпляры вашего кластера OpenStack знают друг о друге (то есть все экземпляры, работающие на всех виртуальных машинах, на которых вы только что установили их), и образуют коллективный пул ресурсов; а также
- В каждом экземпляре OpenStack (опять же, работающем внутри собственной виртуальной машины) размещается приложение панели мониторинга ("Horizon"), а также около 10 других компонентов / модулей (Nova, Cinder, Glance и т. Д.); а также
- Нова, это компонент / модуль OpenStack, который CRUDs виртуальных машин / узлов для ваших арендаторов, каким-то образом способен превратить гостевую виртуальную машину, внутри которой она работает, в свой собственный гипервизор, и раскрутить внутри нее 1+ виртуальных машин (следовательно, у вас есть ВМ внутри ВМ) для любого конкретного арендатора
Поэтому, пожалуйста, если что-то, что я сказал о OpenStack до сих пор, неверно, пожалуйста, начните исправлять меня!
Предполагая, что я более или менее прав, мое понимание различных компонентов OpenStack заключается в том, что они на самом деле являются просто API-интерфейсами и требуют от сообщества открытого исходного кода предоставления конкретных реализаций:
- Нова (менеджер ВМ)
- Keystone (поставщик аутентификации)
- Нейтрон (сетевой менеджер)
- Cinder (менеджер хранилища блоков)
- так далее...
Выше я считаю, что все компоненты являются API. Но эти API должны иметь реализации, которые имеют смысл для развертывателя / сопровождающего OpenStack. Итак, я думаю, что есть, скажем, несколько поставщиков API Neutron, несколько поставщиков API Nova и т. Д. Однако, просмотрев всю официальную документацию сегодня утром, я не могу найти таких поставщиков для этих API. Это вызывает у меня тошноту, будто я в корне неправильно понимаю компоненты OpenStack. Может кто-нибудь помочь соединить точки для меня?
1 ответ
Не совсем.
Устанавливается как исполняемое приложение на виртуальных машинах 1+ (гостевые виртуальные машины); а также
OpenStack - это не один исполняемый файл, в нем много разных модулей, некоторые обязательные, а некоторые необязательные. Вы можете установить OpenStack на виртуальную машину (см. DevStack, дистрибутив, дружественный к виртуальным машинам), но он не предназначен для использования в производственной среде, это можно сделать только для целей тестирования или оценки.
Когда вы делаете это по-настоящему, вы устанавливаете OpenStack на кластер физических машин. Руководство по установке OpenStack рекомендует следующую минимальную структуру для вашего облака:
- Узел контроллера, на котором выполняются основные службы
- Сетевой узел, на котором работает сетевой сервис
- Один или несколько вычислительных узлов, где создаются экземпляры
- Ноль или более объектов и / или блочных узлов хранения
Но обратите внимание, что это минимальная структура. Для более надежной установки у вас будет более одного контроллера и сетевых узлов.
Каким-то образом все экземпляры вашего кластера OpenStack знают друг о друге (то есть все экземпляры, работающие на всех виртуальных машинах, на которых вы только что установили их), и образуют коллективный пул ресурсов;
Узлы OpenStack (будь то виртуальные машины или физические машины, на данном этапе это не имеет значения) общаются между собой. Благодаря конфигурации они все знают, как связаться с другими.
В каждом экземпляре OpenStack (опять же, работающем внутри собственной виртуальной машины) размещается приложение панели мониторинга ("Horizon"), а также около 10 других компонентов / модулей (Nova, Cinder, Glance и т. Д.); а также
Нет. В жаргоне OpenStack термин "экземпляр" связан с виртуальными машинами, которые создаются в вычислительных узлах. Здесь вы имели в виду "узел контроллера", который включает в себя основные службы и панель инструментов. И опять же, они не обязательно работают на виртуальных машинах.
Нова, это компонент / модуль OpenStack, который CRUDs виртуальных машин / узлов для ваших арендаторов, каким-то образом способен превратить гостевую виртуальную машину, внутри которой она работает, в свой собственный гипервизор, и раскрутить внутри нее 1+ виртуальных машин (следовательно, у вас есть ВМ внутри ВМ) для любого конкретного арендатора
Я думаю, что это легче понять, если вы забудете о "гостевой виртуальной машине". В производственной среде OpenStack будет установлен на физические машины. Вычислительные узлы - это мощные машины, на которых можно разместить много виртуальных машин. nova-compute
служба работает на этих узлах и взаимодействует с гипервизором, таким как KVM, для выделения виртуальных машин, которые OpenStack называет "экземплярами".
Если ваши вычислительные узлы размещены на виртуальных машинах, а не на физических машинах, все работает примерно так же. В этой конфигурации обычно используется гипервизор QEMU, который можно установить в виртуальной машине, а затем он может просто создавать виртуальные машины внутри виртуальной машины, хотя при этом наблюдается значительное снижение производительности по сравнению с работой вычислительных узлов на физическом оборудовании.
Предполагая, что я более или менее прав, я понимаю, что различные компоненты OpenStack - это просто API
Нет. Эти сервисы представляют себя как API, но это еще не все. API также реализованы.
и требуют от сообщества открытого исходного кода предоставлять конкретные реализации
Большинство сервисов должны взаимодействовать с внешним сервисом. Нова должна разговаривать с гипервизором, нейтронами с интерфейсами, мостами, шлюзами и т. Д., Связываться с провайдерами хранения и т. Д. И так далее. Это действительно небольшая часть того, что делает сервис OpenStack, гораздо больше построено на вершине, которая не зависит от низкоуровневого внешнего сервиса. Сервисы OpenStack включают поддержку наиболее распространенных внешних сервисов, и, конечно, любой, кто заинтересован, может реализовать больше из них.
Выше я считаю, что все компоненты являются API. Но эти API должны иметь реализации, которые имеют смысл для развертывателя / сопровождающего OpenStack. Итак, я бы предположил, что есть, скажем, несколько поставщиков API Neutron, несколько поставщиков API Nova и т. Д.
Нет. Существует одна реализация API Nova и одна реализация API Neutron. Основываясь на конфигурации, вы говорите каждой из этих служб, как взаимодействовать со службами более низкого уровня, такими как гипервизор, сетевой стек и т. Д. И, как я уже говорил выше, поддержка ряда из них уже реализована, поэтому, если вы используете обычный x86 аппаратное обеспечение для ваших узлов, то у вас должно быть все в порядке.