Архитектура дистрибутива облачной платформы KeyStack
Описание дистрибутива
KeyStack — дистрибутив облачной платформы от компании ITKey, основанный на OpenStack
Дистрибутив базируется на нескольких элементах:
CI-конвейер;
OpenStack IaaS;
OpenStack baremetal;
ELK (EFK) stack;
Prometheus.
CI-конвейер состоит из следующего набора компонентов:
GitLab
GitLab — это инструмент для хранения и управления репозиториями Git. Помимо хранения кода, он позволяет организовать процесс CI/CD. Подробнее ознакомиться с документацией по GitLab можно тут: https://docs.gitlab.com/.
Hashicorp Vault
Sonatype Nexus
Это программный продукт, реализующий функционал управления репозиториями. Используется для хранения докер-образов, pip,rpm, deb и прочих артефактов. Подробнее ознакомиться с решением можно тут: https://www.sonatype.com/products/sonatype-nexus-repository.
Netbox
Это веб-приложение с отрытым исходным кодом, предназначенное для моделирования и документирования современных сетей. Сочетая традиционные практики управления IP-адресами (IPAM) и управления инфраструктурой центра обработки данных (DCIM) с мощными API и расширениями, NetBox представляет собой идеальный “источник достоверной информации” для автоматизации сети. Подробнее ознакомиться с документацией можно тут: https://docs.netbox.dev/en/stable/.
Openstack
Openstack — это набор технологий с открытым исходным кодом. Платформа OpenStack управляет ресурсами виртуальной инфраструктуры, включая виртуальные серверы, устройства хранения, сети и сетевые службы, такие как балансировщики нагрузки, а также предоставляет функции управления пользователям-арендаторам. Подробнее ознакомиться с документацией можно тут: https://docs.openstack.org/.
Гостевые/Хост ОС и гипервизоры
В качестве хост ОС 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
Архитектура KeyStack
KeyStack основан на технологии OpenStack

Основные модули KeyStack
Наименование |
Краткое описание |
---|---|
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 к Сервисному оркестратору запланирована в дорожной карте продукта.`
Подробнее об основных модулях можно прочитать в этом разделе. В работе OpenStack задействованы как основные, так и вспомогательные сервисы.
Основные сервисы:
Compute service;
Networking service;
Loadbalancing service;
Image service;
Volume service;
Identity service;
Dashboard.
Вспомогательные сервисы:
DNS service;
Network loadbalancing service;
Orchestartion service;
Key manager service.
Compute service (Nova)
nova-compute
и базой данных. Это исключает прямой доступ к облачной базе данных, осуществляемый nova-compute
.libvirt для KVM или QEMU
VMwareAPI для VMware
Обработка достаточно сложна. По сути, демон принимает действия из очереди сообщений и выполняет ряд системных команд, таких как запуск экземпляра KVM и обновление его состояния в базе данных.
nova_libvirt
или как демон, работающий на хосте.Подробнее о возможностях Nova, его настройке и возможностях можно узнать тут: https://docs.openstack.org/nova/latest/.
Полезные опции: Для вычислительных узлов важно, чтобы они не испытывали недостатка в памяти, дисковой емкости и ядрах процессора. Для этого можно использовать следующие параметры:
reserved_host_cpus
reserved_host_memory_mb
reserved_host_disk_mb
Также можно настроить коэффициенты переподписки по памяти, дискам и процессорам:
cpu_allocation_ratio
disk_allocation_ratio
ram_allocation_ratio
Существуют параметры, которые позволяют задать начальные значения коэффициентов и использовать API-вызовы для их изменения их значений без перезапуска служб Nova-compute:
initial_cpu_allocation_ratio
initial_ram_allocation_ratio
initial_disk_allocation_ratio
Задавать значения данных параметров можно как для конкретных гипервизоров, так и для всех сразу. Для всех гипервизоров сразу — в секцию [DEFAULT] в файле конфигурации config/nova/nova-compute.conf
. Для конкретного гипервизора — config/nova/<hypervisor_name>/nova.conf
.
Volume service (Cinder)
Служба хранилища блоков OpenStack (Cinder) добавляет виртуальным машинам постоянное хранилище. Оно предоставляет инфраструктуру для управления дисками и взаимодействует с вычислительными ресурсами OpenStack, чтобы предоставить экземплярам диски. Служба также позволяет управлять снимками томов и типами томов.
Служба хранилища блоков состоит из следующих компонентов:
cinder-volume
для выполнения действий.cinder-scheduler
. Кроме того, взаимодействует с этими процессами при помощи очереди сообщений. Служба cinder-volume
отвечает на отправленные службе хранилища блоков запросы чтений и записи, чтобы поддерживать состояние. Может взаимодействовать с разными производителями хранилищ с помощью драйверов.nova-scheduler
.cinder-backup
обеспечивает резервное копирование томов любого типа в хранилище резервного копирования. Аналогично службе cinder-volume
, может взаимодействовать с различными производителями хранилищ с помощью драйверов.В Openstack в качестве системы очередей используется rabbitmq. Взаимодействие между службами Cinder происходит именно через этот сервис.
Подробнее о службе Cinder и его возможностях и сценариях использования можно почитать в официальной документации: https://docs.openstack.org/cinder/latest/.
Orchestartion service (Heat)
Heat — основной проект в программе OpenStack Orchestration. Он реализует механизм оркестрации для запуска нескольких составных облачных приложений на основе шаблонов в виде текстовых файлов, которые можно рассматривать как код. Собственный формат шаблонов Heat развивается, но Heat также стремится обеспечить совместимость с форматом шаблонов AWS CloudFormation, чтобы многие существующие шаблоны CloudFormation можно было запускать в OpenStack. Heat предоставляет как собственный REST API OpenStack, так и API-запросы, совместимые с CloudFormation.
Служба оркестрации состоит из следующих компонентов:
heat-engine
для выполнения действий.heat-engine
для выполнения действий.В Openstack в качестве системы очередей используется rabbitmq. Взаимодействие между службами Heat происходит именно через этот сервис.
Подробнее о службе Heat, ее возможностях и сценариях использования можно почитать в официальной документации: https://docs.openstack.org/heat/latest/.
Image service (Glance)
Служба Glance позволяет пользователям обнаруживать, регистрировать и получать образы виртуальных машин. Она предлагает REST API, который позволяет запрашивать метаданные образа виртуальной машины и получать реальный образ. Вы можете хранить образы виртуальных машин в различных местах: от простых файловых систем до систем объектного хранения, таких как OpenStack Object Storage.
Подробнее о службе Glance, ее возможностях и сценариях использования можно почитать в официальной документации: https://docs.openstack.org/glance/latest/.
Identity service (Keystone)
Служба keystone oбеспечивает аутентификацию и авторизацию клиентов через API-интерфейсы, а также распределенную многопользовательскую авторизацию. Поставщик токенов Keystone настраивается через keystone_token_provider
. Значением по умолчанию для этого является fernet
.
keystone_fernet
, который запускает задания cron для ротации ключей через rsync, когда это необходимо, иkeystone_ssh
— SSH-сервер, обеспечивающий транспорт для rsync.Подробнее о службе Keystone, возможностях и сценариях использования можно почитать в официальной документации: https://docs.openstack.org/keystone/latest/.
Loadbalancing service (Octavia)
Octavia предоставляет интерфейс управления, позволяющий создавать балансировщики нагрузки и управлять ими. Поддерживает функционал создания отказоустойчивых конфигураций балансировщиков, создания правил и условий балансировки на основании широкого спектра параметров.
Octavia состоит из следующих компонентов:
octavia-worker
.Диспетчеру работоспособности необходимо будет знать о балансировщике нагрузки, связанном с отказавшим прослушивателем, чтобы решить, нужно ли ему выполнять отработку отказа дополнительных прослушивателей для миграции отказавшего прослушивателя на новую Amphora.
Key manager service (Barbican)
Barbican — сервис, который обеспечивает безопасное хранение, предоставление и управление данными для доступа. Barbican обеспечивает управление секретами, ключами и сертификатами, поддерживает генерацию симметричных и асимметричных ключей с использованием различных алгоритмов.
Служба Barbican состоит из следующих компонентов:
barbican-api
очередью сообщений Barbican, читает ее и принимает задания на выполнение.Dashboard (Horizon)
Предоставляет графический веб-интерфейс, предназначенный для управления виртуальной инфраструктурой пользователями в рамках предоставленных прав доступа. Подробнее: https://docs.openstack.org/horizon/latest/.
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
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

Возможность миграции ВМ внутри Cell (ИС), растянутой между ЦОДами;
Один домен отказа;
Можно нивелировать детальной проработкой архитектуры домена.
Вариант 2

Возможность миграции ВМ внутри Cell (ИС) внутри одного ЦОДа;
N доменов отказа;
В роадмапе есть возможность холодной миграции между Region;
Возможно проработать использование механизмов репликации на базе СХД.
Вариант 3

Возможность миграции ВМ внутри Cell (ИС) внутри одного ЦОДа;
N доменов отказа;
Возможность горячей или холодной миграции средствами партнерского ПО Hystax.
Сетевая архитектура KeyStack
В референсной архитектуре KeyStack предлагается использовать OVS для управления сетевой инфраструктурой в OpenStack-облаке.
SDN |
Плюсы |
Минусы |
---|---|---|
OVS |
Проверенное годами решение |
Схема с агентами и RabbitMQ налагает ограничения на масштабирование |
Маршрутизация трафика виртуальной инфраструктуры во внешние сети
Для примера на схеме отображены 2 варианта маршрутизации:
Трафик VM1, VM6 маршрутизируется через Gateway-узлы при помощи SNAT.
На виртуальные машины VM3, VM4, VM5 назначен Floating IP (назначаемый внешний адрес), и их трафик проходит напрямую во внешнюю сеть без Gateway-узлов.
Прочие функции KeyStack


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 расширением;
Другие режимы балансировки.