BOSH - это проект программного обеспечения с открытым исходным кодом, который предлагает набор инструментов для разработки релизов , развертывания программного обеспечения и управления жизненным циклом приложений для крупномасштабных распределенных сервисов . Цепочка инструментов состоит из сервера (BOSH Director) и инструмента командной строки . BOSH обычно используется для упаковки , развертывания и управления облачным программным обеспечением . Хотя BOSH изначально был разработан VMware в 2010 году для развертывания Cloud Foundry PaaS , его можно использовать для развертывания другого программного обеспечения (например, Hadoop, RabbitMQ или MySQL, например). BOSH предназначен для управления всем жизненным циклом больших распределенных систем.
Разработчики) | Cloud Foundry |
---|---|
Первый выпуск | 2010 г. |
Стабильный выпуск | 271.2.0 (3 августа 2020 г . [1] ) [±] |
Репозиторий | |
Написано в | Руби , Go и Bash |
Операционная система | Кроссплатформенность |
Тип | Облачные вычисления |
Лицензия | Лицензия Apache 2.0 [2] |
Веб-сайт | чушь |
С марта 2016 года BOSH может управлять развертыванием как на серверах Microsoft Windows [3], так и на Linux .
Директор BOSH взаимодействует с одной инфраструктурой как услугой (IaaS), которая предоставляет базовые сети и виртуальные машины ( ВМ ) (или контейнеры ). Поддерживаются несколько поставщиков IaaS: Amazon Web Services EC2, Apache CloudStack , Google Compute Engine , Microsoft Azure , OpenStack и VMware vSphere .
Для поддержки более базовых инфраструктур BOSH использует концепцию Cloud Provider Interface (CPI). Существует реализация CPI для каждого из перечисленных выше IaaS. Обычно CPI используется для развертывания виртуальных машин, но его можно использовать для развертывания контейнеров .
Существует несколько CPI для развертывания контейнеров с BOSH, и только один активно поддерживается. Для этого BOSH использует CPI, который развертывает контейнеры Garden Pivotal Software (Garden очень похож на Docker ) на одной виртуальной машине, запускаемой VirtualBox или VMware Workstation . Теоретически может поддерживаться любой другой движок контейнеров, если будут разработаны необходимые CPI.
Поскольку BOSH безразлично поддерживает развертывание на виртуальных машинах или контейнерах, BOSH использует общий термин «экземпляры» для их обозначения. CPI должен выбрать, является ли «экземпляр» BOSH виртуальной машиной или контейнером.
Рабочий процесс
После установки сервер BOSH принимает загрузку в него корневых файловых систем (называемых «стволовые ячейки») и пакетов (называемых «выпусками»). Когда у сервера BOSH есть необходимые биты для развертывания данной программной системы, ему можно приказать продолжить, как описано в манифесте развертывания YAML . Затем BOSH постепенно развертывает «экземпляры» (виртуальные машины или контейнеры), используя канарейки, чтобы избежать развертывания ошибочных конфигураций.
После развертывания программной системы BOSH непрерывно отслеживает ее экземпляры, позволяя обнаруживать отказавшие экземпляры и восстанавливать любые отсутствующие.
Когда манифест развертывания BOSH изменяется, BOSH соглашается развернуть подразумеваемые модификации, продолжая постепенно, от экземпляра к экземпляру. Это означает, что BOSH может обновлять живые кластеры, возможно, без простоев.
Концепции
Релиз
Релиз BOSH может быть либо архивным файлом, либо репозиторием git . В обоих случаях описывается программная система, которую можно развернуть с помощью BOSH. Для этого он упаковывает все связанные двоичные ресурсы, исходный код, сценарии компиляции, настраиваемые свойства, сценарии запуска и шаблоны для файлов конфигурации.
Релизы BOSH состоят из «пакетов» и «заданий». Грубо говоря, пакеты BOSH предоставляют то, что можно запускать, а задания BOSH описывают, как эти вещи настраиваются и запускаются.
В пакете BOSH подробно описан необходимый исходный код, двоичные ресурсы (так называемые «капли») и сценарии компиляции для создания данного программного компонента. Есть два способа предоставить двоичные «капли». В выпуске BOSH, который предоставляется в виде архивного файла, большие двоичные объекты включаются напрямую. Но с выпусками BOSH, которые предоставляются в виде репозиториев git, делать то же самое, как правило, проблематично, когда большие двоичные объекты становятся большими. Вот почему в выпуске BOSH предусмотрена концепция «хранилища больших двоичных объектов», из которого можно получить указанные большие двоичные объекты. В большинстве выпусков BOSH используются хранилища больших двоичных объектов, которые поддерживаются общедоступными корзинами Amazon S3, но есть и другие способы ссылки на частный или локальный «хранилище больших двоичных объектов» в выпуске BOSH.
Пакеты BOSH всегда подвергаются этапу компиляции, даже если это просто извлекает файлы из архива и копирует их в соответствующий целевой каталог. Чтобы скомпилировать данный пакет, BOSH порождает эфемерный экземпляр компиляции (виртуальную машину или контейнер), который включает только все необходимые пакеты и большие двоичные объекты, как заявлено в спецификации пакета. В этом выделенном экземпляре BOSH запускает сценарий компиляции и запечатывает результат компиляции в своей базе данных, чтобы его можно было безопасно использовать для воспроизводимых развертываний.
С другой стороны, задания BOSH предоставляют свойства конфигурации (которые, возможно, можно задокументировать), шаблоны для файлов конфигурации и сценарии запуска. Задания BOSH относятся к одному или нескольким пакетам как к зависимостям. Задания также запечатываются в базе данных BOSH, но шаблоны для файлов конфигурации отображаются во время развертывания, когда разрешаются все свойства конфигурации. Эти свойства конфигурации обычно представляют собой IP-адреса, номера портов, имена пользователей, пароли, доменные имена и т. Д.
Стволовая клетка
Стволовая ячейка BOSH упаковывает основы для создания нового экземпляра (виртуальной машины или контейнера). А именно, стволовая ячейка BOSH отправляет образ операционной системы вместе с агентом BOSH и копией monit , которая используется для управления службами (называемыми «заданиями»), которые будут размещены в экземпляре. Агент BOSH помогает BOSH взаимодействовать с экземпляром в течение всего его жизненного цикла.
Концепция стволовых клеток в BOSH похожа на образы виртуальных машин, такие как AMI от Amazon , но стволовые клетки BOSH не предназначены для того, чтобы быть специализированными для какого-либо конкретного использования. Вместо этого BOSH предоставляет только разные стволовые ячейки для поддержки разных операционных систем (CentOS, Ubuntu или Windows) или разных базовых поставщиков IaaS (AWS или OpenStack).
Название «стволовые клетки» произошло от биологического термина «стволовые клетки», который относится к недифференцированным клеткам, которые в дальнейшем способны превращаться в различные типы клеток. Точно так же экземпляры, созданные стволовой клеткой BOSH, изначально идентичны.
После запуска экземпляры настраиваются с разными ЦП / памятью / хранилищем / сетью и устанавливаются с разными пакетами программного обеспечения. Следовательно, экземпляры, созданные из одной и той же стволовой клетки BOSH, могут вести себя по-разному.
Агент BOSH
Агент BOSH - это служба, которая запускается на каждой виртуальной машине, развернутой BOSH. Он делает следующее:
- настраивает виртуальную машину, например, настраивает локальные диски, настраивает и форматирует подключенные (вторичные) диски, настраивает сети
- принимает запросы от директора, например пинги, запросы на управление заданиями
- управляет заданиями: запуск, остановка и мониторинг работоспособности
Развертывание
Развертывание BOSH - это в основном манифест развертывания YAML, в котором пользователь описывает используемые выпуски BOSH и стволовые ячейки BOSH, а также то, как настраивать и объединять задания в группы идентичных экземпляров (исторически ошибочно называемые «заданиями», а затем переименованные в «группы экземпляров»). . Внутри этих «групп экземпляров» BOSH может охватывать идентичные экземпляры (виртуальные машины или контейнеры) в разных зонах доступности, чтобы минимизировать риск одновременного отказа всех экземпляров. Это особенно полезно при развертывании высокодоступных баз данных или приложений.
В большинстве случаев пользователи не работают с манифестом развертывания как с одним большим файлом YAML. Вместо этого манифест развертывания разбивается на файлы меньшего размера, которые легче поддерживать. Эти отдельные файлы объединяются такими инструментами, как spiff или spruce, прямо перед их загрузкой на сервер BOSH и развертыванием.
В манифесте развертывания все свойства конфигурации, объявленные заданиями из всех упомянутых выпусков, можно настроить. Различные задания могут ссылаться на свойства конфигурации с одинаковыми именами, чтобы иметь общие настройки.
Ключевые принципы
BOSH был специально создан с учетом четырех принципов современного релиз-инжиниринга следующим образом:
Идентифицируемость
Возможность идентифицировать все источники, инструменты, среду и другие компоненты, составляющие конкретный выпуск. В своей концепции «выпуска» BOSH упаковывает весь связанный исходный код, двоичные ресурсы, настраиваемые свойства, сценарии компиляции и сценарии запуска. Это позволяет пользователям легко отслеживать, что фактически развернуто и как оно выполняется. Кроме того, BOSH предоставляет способ захвата корневых файловых систем, которые будут основой развернутых экземпляров (виртуальных машин или контейнеров), в виде отдельных образов, называемых «стволовые ячейки». Выпуски BOSH и стволовые клетки BOSH идентифицируются UUID и запечатываются контрольными суммами SHA-1 .
Воспроизводимость
Возможность интеграции исходного кода, сторонних компонентов, данных и внешних компонентов развертывания программной системы, чтобы гарантировать стабильность работы. Цепочка инструментов BOSH предоставляет централизованный сервер для управления развернутыми системами. Этот сервер содержит «выпуски» программного обеспечения, образы операционных систем (называемые «стволовые ячейки»), постоянные данные и конфигурацию системы. Следовательно, при заданном развертывании гарантированно воспроизводится идентичный результат.
Последовательность
Миссия - обеспечить стабильную основу для разработки, развертывания, аудита и отчетности для компонентов программного обеспечения. BOSH достигает такой согласованности в своих «выпусках» программного обеспечения, что обеспечивает согласованную основу для разработки и развертывания программных систем. Более того, аудит и подотчетность обеспечивается сервером BOSH, который позволяет пользователям видеть и отслеживать изменения, внесенные в развернутые системы.
Ловкость
Постоянное исследование того, как современные методы разработки программного обеспечения влияют на продуктивность цикла разработки программного обеспечения, то есть непрерывной интеграции . Цепочка инструментов BOSH хорошо интегрируется с текущими передовыми методами разработки программного обеспечения (включая непрерывную доставку ), предоставляя способы легко создавать выпуски программного обеспечения в автоматическом режиме и обновлять сложные развернутые системы с помощью простых команд.
История
Предназначен для устранения недостатков, обнаруженных в доступных инструментах для управления Cloud Foundry . Первоначально использовался Chef , но его возможности по упаковке, запуску / остановке серверов были ограничены, а возможности мониторинга и самоуправления были ограничены. Первоначально разработанный для собственных нужд Cloud Foundry, но теперь проект стал полностью универсальным и может использоваться для оркестровки другого программного обеспечения, такого как Hadoop , RabbitMQ , MySQL и аналогичной платформы или прикладного программного обеспечения.
Архитектура
Установка BOSH состоит из нескольких отдельных компонентов, которые можно разделить на разные виртуальные машины или контейнеры:
- Директор , который является «мозгом» сервера
- База данных директоров , состоящая из экземпляра PostgreSQL, экземпляра Redis и Blobstore для хранения скомпилированных пакетов и заданий.
- Health Monitor , которая отслеживает экземпляров (виртуальных машин или контейнеров) статус
- Множество агентов BOSH , по одному на каждом развернутом экземпляре.
- Шина сообщений NATS для подключения к Director, Health Monitor и всем развернутым агентам BOSH.
- CPI (Cloud Provider Interface), который является только исполняемой двоичным , соответствующим некоторым конкретным API
Управляемая среда BOSH обычно сосредоточена вокруг директора, развернутого на виртуальной машине.
Совместимость с облаком / платформой / ОС
BOSH подключается к базовому уровню IaaS через абстракцию, называемую CPI (интерфейс поставщика облачных услуг). Доступны CPI для Amazon Web Services , некоторых версий OpenStack , vSphere , vCloud . Некоторые сообщества поддерживают CPI для Google Compute Engine , Microsoft Azure и CloudStack .
Развертывание
BOSH можно развернуть как релиз BOSH, что может стать сюрпризом для новичков.
Сервер BOSH - не единственное программное обеспечение, которое может развертывать выпуски BOSH. Существует проект инициатора BOSH, который может развернуть BOSH на виртуальной машине, контейнере Docker или на голом железном сервере. Этот компонент используется установщиком упаковщика BOSH, который создает блок Vagrant с BOSH-lite, на который полагается большинство пользователей при изучении BOSH.
Управление
Когда-то BOSH был подкомпонентом Cloud Foundry , а теперь представляет собой отдельный проект с открытым исходным кодом, целью которого является развертывание любого распределенного программного обеспечения. BOSH управляется Cloud Foundry Foundation . Почти все взносы в BOSH сделаны Pivotal.
Пользователи
Pivotal использует BOSH для организации Cloud Foundry в Pivotal Cloud Foundry (PCF), а также всех Pivotal Data Services для Cloud Foundry. Объявленные общедоступные пользователи BOSH и PCF включают Axel Springer, Corelogic, IBM, Monsanto, Philips, SAP и Swisscom.
Распределения
BOSH не распространяется коммерчески как отдельный продукт. Он входит в состав Pivotal Cloud Foundry , IBM Bluemix и HP Helion Developer Platform , а также коммерчески используется и поддерживается Cloud Credo , Stark & Wayne , Gstack и другими.
Рекомендации
- ^ "Релизы - тучка / чушь" . Проверено 3 августа 2020 г. - через GitHub .
- ^ "ЛИЦЕНЗИОННЫЙ файл" . Проверено 5 ноября 2019 г. - через GitHub .
- ^ "[cf-dev] Объявление: BOSH для Windows - cf-dev - Архивы списков рассылки" . lists.cloudfoundry.org . Архивировано из оригинала на 2016-04-25 . Проверено 31 марта 2016 .
- ^ Источник изображения
Внешние ссылки
- Официальный веб-сайт
- IRC: #bosh на Freenode IRC
- Список рассылки пользователей Bosh
- Список рассылки разработчиков Bosh
- BOSH на Github
- Проект Pivotal Tracker