Рубрики
Uncategorized

Изучите OpenStack по примеру: Часть 0 — Резюме и цели

Вся моя карьера до этого момента была построена вокруг проектирования и разработки приложений для … с меткой DevOps, Cloud, FirstPost.

Узнайте OpenStack по примеру (3 серии деталей)

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

Самые большие из них были:

  • Заблокировка продавца : Если вы пишете приложение и развернете его на платформу, код должен быть адаптирован к платформе, на которой вы разрабатываете. Если вам сказали, что вам нужно перенести свой код на другую платформу (которая происходит чаще, чем вы понимаете), вы должны реформировать весь этот код.
  • Xaas (все как услуга) : Я мог бы разжечь несколько голов с этим, но выслушаю меня. Как разработчик приложений, я хочу развернуть различные узлы, которые взаимодействуют друг с другом. Если я на платформе с DBAAS или STAAS (для хранения/данных), PAAS (для вычислительных узлов/серверов), FAAS (для обработки процессов, управляемых IOT/событиями), и все они развернуты из их собственных кластеров , что означает, что они доступны через публичную сеть … что означает, что вы обязаны правильно ее обеспечить (чего, честно говоря, многие люди этого не делают).

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

Итак, что такое OpenStack?

Не вдаваясь в слишком большую историю или детали, OpenStack-это набор с открытым исходным кодом инструментов и компонентов, которые при развертывании вместе могут создать вашу собственную выделенную облачную среду.

А что снова такое облако?

Просто чтобы очистить это, подумайте о облаке как о виртуальном хранилище данных микро компонентов.

Когда я думаю о серверах, размещающих приложение, я думаю о 3 уровнях хостинговых ресурсов:

Baremetal : (Серверное лезвие изображено выше) Это могут быть монстры машин, которые стоили сотни тысяч долларов. Мы также очень хорошо знакомы с установкой программного обеспечения или развертыванием приложений на компьютере, это ничем не отличается от этих серверов. Проблема возникает, когда вы хотите полностью использовать ресурсы на этих серверах. Вы начинаете развертывание нескольких пакетов программного обеспечения и приложений, но затем понимаете, что одно приложение может получить доступ к ресурсам другого приложения, или зависимости одного приложения конфликтует с зависимостью другого. Это становится огромной головной болью безопасности и дизайна.

Виртуальная машина : Они «виртуально» в том смысле, что они полностью основаны на программном обеспечении, но все же имеют те же ресурсы и сложность, которые может удерживать полный рабочий стол или сервер. Можно установить несколько виртуальных машин на сервере, а приложения, установленные на каждом, полностью содержатся без конфликта или взаимодействия с другими приложениями. Вы также можете внедрить виртуальные сети, которые соединяют их и обеспечивают препятствие для того, как Хост Система или Интернет могут получить к нему доступ.

Они обеспечивают большое улучшение развертывания приложений, поскольку вы можете создать виртуальную машину в соответствии с потребностями приложения. Но поскольку они повторяют полноразмерную машину, они также содержат некоторые из накладных расходов (с некоторыми оптимизированными изменениями для этих меньших сред) операционной системы и зависимости от Baremetal машина. Представьте себе старый ноутбук, который вы хотите использовать в качестве домашнего сервера, он едва может запустить Windows 10, и вы хотите настроить второй компьютер, работающий в нем одновременно?! Независимо от того, насколько велик ваш сервер, вы в конечном итоге достигнете ограничения, сколько можно настроить на одной машине.

Контейнерные системы Как Docker и LXC были созданы для решения этой проблемы размера. Они позволяют с минимальными, «предварительно выпеченными» изображениями операционной системы (ОС) (или установленных изображений ОС со всеми предварительно установленными требованиями приложений) без дополнительных ресурсов, которые требуются виртуальные машины, достаточно, чтобы просто делать то, что ему нужно, делать.

Там, где они часто могут терпеть неудачу, находится в аспектах безопасности и стабильности, поскольку контейнеры, по сути, являются программами, которые работают в виртуальном пространстве на вашем компьютере. Они настолько минимальны, что злой создатель изображений может легко включить процесс, который сканирует вашу систему для других контейнеров и получает доступ к их средам. Другая проблема заключается в том, что в контейнерном узле может выйти из строя, так что ужасно она может снизить всю хост -систему. Это может представить риски, которые вы не хотели бы при создании качества производства, безопасных приложений.

Примечание : Не поймите меня неправильно, я люблю контейнеры. Они делают приложения развертывания такими простыми, но мне также нужно понять, где они могут бороться.

Многие разработчики операционной системы находят среднюю землю, создавая защищенные, но минимальные изображения, которые могут быть размещены на минимальных, «крошечных» или даже «микро»/«Nano», экземплярах виртуальных машин. По сути, это микро -виртуальные машины, немного больше, чем размер контейнера, но с сегментацией и сложностью виртуальной машины. Это начинает уступать место, когда сотни контейнерных машин работают независимо друг от друга. Они могут работать на одну задачу или работать вместе, чтобы обеспечить большую сетку серверов, предоставляющих ресурсы для одного приложения.

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

Почему я не могу использовать Kubernetes (решение для оркестровки контейнеров) для моих приложений?

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

Существует также проблема размеров/оценки большого кластера. В какой -то момент у вас может быть отличный кластер, но введите одну проблему контейнера, он «может» (очень редко, но все еще возможно) свести систему (помните, контейнеры по существу запускают процессы в системе хоста). Это может сбить целый кластер, если вы не будете осторожны. Хорошей альтернативой дизайна является создание нескольких кластеров для разных приложений, но это означает настройку еще 3+ узлов для каждого кластера/приложения. Я наткнулся на эту статью от Learnk8s.io/Daniel Weibel Описание соображений дизайна и проблем, с которыми сталкиваются внедрение крупных приложений в Кубернетах.

Именно здесь облачные среды (например, OpenStack) работают как идеальное решение этой «проблемы». Поскольку Kubernetes требует минимального количества узлов, чтобы даже запустить кластер, и каждый кластер может иметь разные требования к ресурсам, облачная среда может создавать узлы виртуальных машин, которые содержат кластер Kubernetes и ее инфраструктуру. Я сказал, что у вас должно быть минимальное количество узлов, но я не сказал, насколько большими должны быть эти узлы. Это означает, что мы можем создать 3+ мини -виртуальные машины для настройки Kubernetes. Мы можем масштабировать это/горизонтально/на другие виртуальные машины, или мы можем масштабировать это/вертикально/увеличить размер наших виртуальных машин. Кроме того, вы можете полностью изолировать кластер в одной виртуальной сети, что означает, что вам нужно беспокоиться только о доступе к интерфейсу этой сети. И, как покажет эта серия сообщений, OpenStack может быть настроен на одной машине или на протяжении тысяч, так что вы ограничены только вашим воображением.

Как OpenStack вписывается в это?

Мы все были представлены в облаках Google, Amazon, Microsoft, IBM, SAP и т. Д. Если вы посмотрите на их каталоги, вы увидите сотни различных типов технологий, которые помогут принять ваше приложение. Они полезны, но, поскольку все работает «как услуга» или имеет подготовленные детали, уникальные для их платформы, они могут быть либо громоздкими, плохо документированными (!), Или требовать высокой кривой обучения для реализации. Эти поставщики пытаются упростить многие детали работы с этими компонентами и создавать новые услуги (поскольку они продвигают подход «без кода»), чтобы вы могли создавать приложения без написания одной строки кода. Если вы внимательно посмотрите, базовая технология часто является обходным путем с использованием уже доступной технологии, чтобы эти поставщики могли предоставить способ для шаблона функциональности, которые многие пользователи будут делать в любом случае за счет блокировки платформы. Конечно, они предоставляют бесплатные/разработчики учетные записи, но всегда есть предел. И вдобавок ко всему, приложение, созданное на одной платформе, не обязательно означает, что оно будет работать на другой платформе без какого -либо серьезного рефакторинга.

OpenStack предлагает решение всех этих проблем:

  1. Открытый исход, что означает, что любой, у кого есть знания и ресурсы, может установить свою собственную облачную платформу или проверять исходный код для уязвимостей в качестве качества кода и безопасности.
  2. Разработано из стандартной открытой рамки. Если у вас есть приложение OpenStack с одним провайдером, и вам нужно перейти к другому провайдеру, нет пота! Просто повторно разверните, используя новые учетные данные, и вы закончили (до тех пор, пока разрешает версию). Большая часть базовой технологии в компонентах OpenStack широко используется, принятые технологии.
  3. Поскольку само облако полностью масштабируемо, команда OpenStack создала ряд различных инструментов, которые помогут вам разрабатывать и протестировать ваши компоненты (обсудит это позже). Эти инструменты могут быстро настроить мини -облако на любой машине, на которой вы его установите. Нет бесплатных испытаний, нет ограничений, без ограничений по времени (за исключением пределов вашего собственного оборудования).
  4. Масштабируйте любое количество поставщиков. Вы можете получить часть вашего приложения, размещенного на Vexxhost , Создайте набор микросервисов хранения в Rackspace и масштабируйте системы вычислительного и балансировки HPC/нагрузки с использованием Ауро . Все они могут быть частью того же приложения и взаимодействовать, как если бы они были одной и той же средой.

Этот последний — большой. По мере роста требований вашего приложения вы можете масштабироваться по всему миру, не беспокоясь, если у вашего поставщика есть центр обработки данных в регионе наивысшего спроса. Просто найдите поставщика, который размещает OpenStack и Scale (или разверните свой собственный экземпляр OpenStack поверх одного из крупных поставщиков (облако в облаке … Начало)).

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

Как мне настроить?

Это тема следующего поста, но это разбивка способов играть с OpenStack дома:

  1. Devstack это набор удобных сценариев, которые быстро устанавливаются Временный Среда OpenStack. Он предназначен для разработчиков OpenStack для тестирования новых компонентов и является основным драйвером в тестовых люксах OpenStack для их процесса CI/CD. Мы будем использовать это, так как настраивать среду быстрее, чем другие методы (даже если это означает, что нам нужно было бы переустановить перезагрузку системы).
  2. Kolla Ansible Может быть, один из инструментов развертывания производственного класса, которые вы можете рассмотреть, если хотите настроить собственное облако (возможно, для домашней лаборатории или локального облака). Большинство команд, как правило, используют этот маршрут, поскольку он активно поддерживается, но еще не полностью показан (обнаруженные ограничения на создании Swift).
  3. Ansible All-in-One (AIO) Еще один набор инструментов производства с использованием Ansible для развертывания OpenStack. Это позволяет вам предварительно определять различные конфигурации, и Ansible будет запускать команды в целевых системах. Эти «пьесы» могут даже работать через регулярные промежутки времени, чтобы ничто не вышло из того, что он ожидает. Это было потенциальным решением для этой серии постов, но мне было трудно создать стабильную среду, которая мне пришлось отказаться (пока). Если кто -то, более знакомый с развертыванием OpenStack, может поддержать меня, я бы предпочел этот вариант в будущем.
  4. OpenStack Helm это интересный вариант, поскольку он развертывает полное облако OpenStack в кластере Kubernetes. Моя точка зрения на это состоит в том, чтобы настроить решение о рамке -оркестровке в верхней части решения для программного оркестровки (то же самое с Tripleo (OpenStack на OpenStack) ), но может привести некоторую ценность для создания меньших сред для развития и развития и контрольная работа.
  5. Packstack является установленной группой пакетов, предоставленной Redhat, доступной в операционных системах Centos и Redhat. Это очень удобно и быстро настроить, но опирается на операционные системы, которые либо являются либо на уровне предприятия (Redhat), либо становятся устаревшими (Centos).
  6. OpenStack-Charms это еще одна система, специфичная для платформы на вершине Juju/Charms (которую я понимаю, как платформа, созданная на вершине технологии Ubuntu Snap), и, таким образом, является решением, если вы хотите разместить решение на Ubuntu. У этого решения все еще есть ограничения, так как некоторые компоненты OpenStack являются еще не полностью поддерживается .

Мы будем двигаться вперед с DevStack для нашего решения, поскольку оно является наиболее широко используемым и стабильным решением (поскольку оно используется в рамках тестового набора OpenStack) и не блокирует нас в конкретную ОС/платформу.

Как мне научиться использовать его?

Это это сложно. Я искал их собственное хранилище упражнений, онлайн -платформ обучения, опубликованные книги и обнаружил, что все было слишком техническим для моего уровня новичков, нацеленных на системные администраторы, пытающиеся получить сертифицированный администратор систем Redhat (RHCSA) для обозначения OpenStack или был устарел и больше не актуально.

Вот почему я решил начать эту серию: способ для меня учиться, практиковать и терпеть неудачу, документируя то, что я нахожу, работает для всех, кто борется за одни и те же ответы.

Цели

Если этого было достаточно, чтобы заинтриговать вас, пожалуйста, следуйте за мной в моем путешествии, чтобы изучить разработку приложений на OpenStack. Вы должны получать уведомления, когда доступны обновления и новые сообщения.

В рамках этого упражнения я намерен создать веб -приложение, которое можно развернуть в моем локальном OpenStack, изучая вычислительные модули, блокировку хранилища, обмен событиями и сеть.

Я намерен создать свои тренировки с помощью этой серии постов следующим образом:

  1. Установить и настроить DevStack
  2. Настройка окружающей среды
  3. Разработать приложение и создать компоненты поддержки
  4. Разработать код
  5. Развернуть и запустить

Надеюсь, вы так же взволнованы, как и я, чтобы попробовать это и узнать что -то новое! И если у вас есть опыт и вы хотите внести свой вклад в эту серию, пожалуйста, обратитесь к предложениям !!

Узнайте OpenStack по примеру (3 серии деталей)

Оригинал: «https://dev.to/wsidl/learn-openstack-by-examples-part-0-summary-and-goals-p84»