Архитектура дистрибутива облачной платформы KeyStack ==================================================== Описание дистрибутива --------------------- KeyStack — дистрибутив облачной платформы от компании ITKey, основанный на OpenStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Дистрибутив базируется на нескольких элементах: - CI-конвейер; - OpenStack IaaS; - OpenStack baremetal; - ELK (EFK) stack; - Prometheus. CI-конвейер состоит из следующего набора компонентов: **GitLab** GitLab — это инструмент для хранения и управления репозиториями Git. Помимо хранения кода, он позволяет организовать процесс CI/CD. **Hashicorp Vault** | Программное решение, которое помогает организациям снизить риск взлома и раскрытия данных с помощью автоматизации безопасности на основе идентификации и шифрования как услуги. | В решении используется функционал хранения чувствительной информации — паролей, токенов, SSL-сертификатов и другой чувствительной информации. **Sonatype Nexus** Это программный продукт, реализующий функционал управления репозиториями. Используется для хранения докер-образов, pip,rpm, deb и прочих артефактов. **Netbox** | Это веб-приложение с отрытым исходным кодом, предназначенное для моделирования и документирования современных сетей. | Сочетая традиционные практики управления IP-адресами (IPAM) и управления инфраструктурой центра обработки данных (DCIM) с мощными API и расширениями, NetBox представляет собой идеальный "источник достоверной информации" для автоматизации сети. ---- Гостевые/Хост ОС и гипервизоры ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В качестве хост ОС KeyStack использует дистрибутив на базе Ubuntu linux актуальной LTS версии. При необходимости в качестве хост ОС возможно использование дистрибутива Астра Линукс. В качестве гостевых ОС поддерживаются распространённые ОС Linux и MS Windows. Со списком поддерживаемых гостевых ОС можно ознакомиться по ссылке: https://www.linux-kvm.org/page/Guest_Support_Status. В качестве базового гипервизора используется KVM как самый зрелый и проверенный гипервизор. При необходимости возможно использование гипервизора VMware ESXi (в рамках существующей инсталляции VMware vSphere). Работа с Baremetal серверами ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ KeyStack Baremetal поддерживает следующие действия с поддерживаемыми физическими серверами: - Установка ОС на сервера; - Подключение в сеть; - Базовые действия администрирования (start/restart/stop/delete); - Подключение СХД к серверам. Сервис объектного хранилища (в дорожной карте) ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В дистрибутиве предусмотрен сервис объектного хранилища. Его особенности: - Построен на базе CEPH, в Single-site и Multi-site конфигурациях; - Хранение образов OpenStack Glance, из которых развёртываются ВМ; - Предоставления S3-совместимого хранилища потребителям платформы. Работа с учетными записями ~~~~~~~~~~~~~~~~~~~~~~~~~~ В качестве основы для управления учётными записями используется Keycloak. Keykloak позволяет решить следующие задачи: - Централизованное управление учётными записями; - Обеспечение политик безопасности — срок действия учётной записи, срок действия пароля и др.; - Возможность интеграции со службой каталогов Заказчика (LDAP, AD, SAML, OpenID). Мониторинг ~~~~~~~~~~ В референс-архитектуре KeyStack в качестве системы мониторинга используется Prometheus. OpenStack имеет хорошую совместимость с Prometheus, возможна интеграция на уровне: - Агентов мониторинга на хост-ОС; - Экспортеров OpenStack для мониторинга состояния виртуальной инфраструктуры; - Возможно произвести интеграцию с существующей платформой мониторинга клиента. ---- Преимущества и сценарии использования KeyStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ | **CI/CD-конвейер** | KeyStack основан на CI-конвейере (применяется для деплоя инсталляции). Это позволяет использовать KeyStack в цепочке существующего CI/CD-конвейере клиента. | **Multi-site облако** | Возможно использование KeyStack в качестве отказоустойчивой облачной платформы, размещённой в нескольких ЦОД с общей сетевой связностью. | **Публичное облако** | KeyStack полностью подходит в качестве платформы для создания и предоставления услуг публичного облака (однако не является платформой для биллинга; при необходимости потребуется интеграция со сторонней биллинговой системой). | **Частное облако** | KeyStack архитектурно и функционально отлично подходит для создания частного облака. | **Предоставление хранилища S3** | В дорожной карте KeyStack запланирована реализация CEPH с возможностью организовать S3 с неограниченной масштабируемостью. ---- Архитектура KeyStack -------------------- KeyStack основан на технологии OpenStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. figure:: Media/Pic_01.png :alt: OpenStackScheme Основными модулями KeyStack являются: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 * - Наименование - Краткое описание * - OpenStack Nova - Контроллер вычислительных ресурсов, отвечает за создание ВМ * - OpenStack Keystone - Сервис идентификации, отвечает за аутентификацию и авторизацию всех субъектов в KeyStack * - OpenStack Neutron - Контроллер программно-определяемых сетей в KeyStack, отвечает за управление виртуальными сетями тенантов (проектов) * - OpenStack Glance - Библиотека образов виртуальных машин, отвечает за хранение образов ОС для последующего развёртывания ВМ * - OpenStack Cinder - Сервис работы с блочными устройствами хранения данных, отвечает за предоставления ВМ дискового пространства и операции с дисковым пространством * - OpenStack Horizon - Графический интерфейс администрирования * - OpenStack Heat - Инфраструктурный оркестратор * - OpenStack Barbican - Сервис безопасного хранения секретов (пароли, ключи, X509 сертификаты) * - OpenStack Octavia - Контроллер сетевых балансировщиков как сервис * - OpenStack Ironic - Сервис управления и провижининга физическими серверами (Bare Metal Provisioning) * - OpenStack Designate - Контроллер DNS как сервис * - HA модуль ITKey - Контроллер HA для виртуальных машин * - DRS модуль ITKey - Контроллер DRS для виртуальных машин Одним из важнейших модулей KeyStack является сервисный оркестратор (построен на базе CI/CD-пайплайнов), предназначенный для централизованного управления инфраструктурой. Возможности встроенного сервисного оркестратора KeyStack: - Управление multi-site инфраструктурой — при деплое большой инсталляции (>1500 хостов) применяется схема разделения инсталляции на regions и cells, и сервисный оркестратор позволяет управлять разными регионами как единым облаком; - Сервисный каталог — портал с XaaS услугами в режиме самообслуживания; - Day-2 автоматизация — автоматизация жизненного цикла сервисов после создания; - Управление kubernetes-инфраструктурой. :bolditalic:`Разработка UI к Сервисному оркестратору запланирована в дорожной карте продукта.` Реализация отказоустойчивости ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Отказоустойчивость инсталляций реализуется следующими механизмами защиты (с 100%̆ совместимостью с upstream-кодом): **Control plane:** - Выделяется 3 или более контроллеров для создания кворума; - Все API-сервисы OpenStack — stateless, и они запускаются на каждом контроллере с балансировкой haproxy; - Кластеризуемые сервисы разворачиваются в режиме "Active-Active" ; - Защита СУБД осуществляется с помощью MariaDB Galera. **Data plane:** - Мощности Data plane рассчитываются с запасом, чтобы HA-модуль ITKey смог отработать. ---- Характерные проблемы инсталляций upstream OpenStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ Одним из важных отличий KeyStack является качественная проработка архитектуры решения, которая обеспечивает отсутствие проблем, присущих большим инсталляциям OpenStack: - В OpenStack все коммуникации происходят через очередь сообщений RabbitMQ и общую СУБД, которые имеют проблемы масштабирования/кластеризации и восстановлении работоспособности после сбоя. При увеличении количества узлов количество сообщений в очереди растёт в геометрической прогрессии; - Neutron ML2 OVS — нагрузка растёт в геометрической прогрессии ввиду принципа управления сетевой инфраструктурой через агенты, которые также используют очередь сообщений. Решение ~~~~~~~ - Multi-site облако разделяется на Regions (создаются домены отказа со своими собственными изолированными control plane); - При необходимости возможно выделение нескольких Nova Cell внутри Region; - Cell, в отличие от Region, имеет общий сервис Nova, что позволяет как потребителям, использующим API, так и пользователям в графическом портале прозрачно управлять созданием виртуальных машин в разных Cell через единую точку входа; - Функционал Nova Cell позволяет масштабировать Nova. С ним Nova нормально управляет несколькими тысячами хостов, тогда как без него предел — 2-3 сотни; - В OpenStack "Из коробки" невозможна миграция ВМ между Region. Также доступна только холодная миграция между Cell. В KeyStack этот функционал (холодная миграция между Region) запланирован в дорожной карте, или его можно использовать партнерским решением Hystax DR; - Availability Zones (AZ) в KeyStack — логическая группировка гипервизоров, сетевых и baremetal-функций. По сути, AZ — это параметры настройки планировщика для правильного размещения объектов внутри KeyStack в момент их создания. В нашей облачной платформе мы рекомендуем создавать AZ в рамках Cell и не растягивать AZ на несколько Cells, чтобы соблюдать идеологию доменов отказоустойчивости; - Мы рекомендуем использовать OVS-плагин для Neutron как более стабильное и задокументированное решение. - Мы рекомендуем рассмотреть OVN-плагин для Neutron при необходимости масштабирования более чем 200 узлов. Сегментация нагрузок в KeyStack ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ .. list-table:: :header-rows: 1 * -   - Cells - Regions - Availability Zones - Host Aggregates * - Когда использовать? - Единый API-endpoint для compute или необходимость в дополнительном уровне планировщика Nova - Отдельный регион с собственными API-endpoints без координации между регионами - Для создания группы хостов с общими признаками (не ограничивается Nova) - Логическое разделение Nova на группы хостов (гипервизоров) * - Пример - Облако, распределённое на множество площадок, где вы можете создать ВМ "где угодно" или на конкретной площадке - Облако, распределённое на множество площадок, где вы можете создать ВМ на конкретной площадке - Облако на одной площадке с серверами, запитанными от разных источников - Распределение нагрузки по группам серверов с разными характеристикам и или PCI-устройствами * - Избыточность - Самая молодая сегрегация. Каждый cell — отдельная БД и менеджер очередей с общими сервисами Nova - Различные API-endpoints для каждого региона. Каждый регион имеет свой control-plane - Правка конфигурации в nova.conf и OpenStack БД - Правка конфигурации в nova.conf и OpenStack БД * - Общие сервисы - Все сервисы - Можно Keystone - Все сервисы - Все сервисы Выбор multi-site архитектуры ~~~~~~~~~~~~~~~~~~~~~~~~~~~~ В зависимости от требований Заказчика, KeyStack можно развернуть в трёх основых конфигурациях multi-site ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ **Вариант 1** .. figure:: Media/Pic_02.png :alt: Multi-site 1 - Возможность миграции ВМ внутри Cell (ИС), растянутой между ЦОДами; - Один домен отказа; - Можно нивелировать детальной проработкой архитектуры домена. **Вариант 2** .. figure:: Media/Pic_03.png :alt: Multi-site 2 - Возможность миграции ВМ внутри Cell (ИС) внутри одного ЦОДа; - N доменов отказа; - В роадмапе есть возможность холодной миграции между Region; - Возможно проработать использование механизмов репликации на базе СХД. **Вариант 3** .. figure:: Media/Pic_04.png :alt: Multi-site 3 - Возможность миграции ВМ внутри Cell (ИС) внутри одного ЦОДа; - N доменов отказа; - Возможность горячей или холодной миграции средствами партнерского ПО Hystax. -------------- Сетевая архитектура KeyStack: ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ **В референсной архитектуре KeyStack предлагается использовать OVS для управления сетевой инфраструктурой в OpenStack-облаке.** .. list-table:: :header-rows: 1 * - SDN - Плюсы - Минусы * - OVN - OVN — продолжение OVS, отказ от коммуникации через RabbitMQ, совместимость с Kubernetes, возможности масштабирования - Самый новый проект (с 2015 года) * - OVS - Проверенное годами решение - Схема с агентами и RabbitMQ налагает ограничения на масштабирование Маршрутизация трафика виртуальной инфраструктуры во внешние сети ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ Для примера на схеме отображены 2 варианта маршрутизации: 1. Трафик VM1, VM6 маршрутизируется через Gateway-узлы при помощи SNAT. 2. На виртуальные машины VM3, VM4, VM5 назначен Floating IP (назначаемый внешний адрес), и их трафик проходит напрямую во внешнюю сеть без Gateway-узлов. |Routing| ---- Прочие функции KeyStack ~~~~~~~~~~~~~~~~~~~~~~~ | **В продукте поддерживается OVN interconnect.** | Это позволяет организовать сетевую связность между виртуальными сетями тенантов на разных площадках по L3. Для единой точки управления L3 сегментами на нескольких площадках в KeyStack для клиента доступен сетевой оркестратор. .. figure:: Media/Pic_06.png :alt: OVN-IC | **В KeyStack реализован функционал фильтрации трафика на портах ВМ.** | Таким образом, сетевые потоки могут быть отфильтрованы согласно требованиям ИБ Заказчика: .. figure:: Media/Pic_07.png :alt: Filyering | **В KeyStack реализован сервис LBaaS.** | Сервис LBaaS построен на основе OpenStack Octavia и предоставляет сетевые балансировщики как сервис. .. figure:: Media/Pic_08.png :alt: LBaaS Octavia позволяет создавать балансировщики в виртуальных машинах, контейнерах или на baremetal, а также поддерживает следующие типы балансировки: - HTTP-балансировка; - HTTP-балансировка с health-монитором; - Session-persistent HTTP-балансировка; - TCP-балансировка; - UDP-балансировка; - QoS ruled-балансировка; - Балансировка с ACL по IP; - Non-terminated HTTPS-балансировка; - TLS-terminated HTTPS-балансировка; - TLS-terminated HTTPS-балансировка с SNI; - TLS-terminated HTTPS-балансировка c аутентификацией; - HTTP/2-балансировка с ALPN TLS расширением; - Другие режимы балансировки. .. |Routing| image:: Media/Pic_05.png