Перейти к содержимому

Обзор архитектуры Inscale

Платформа построена как набор слабосвязанных микросервисов поверх распределённого хранилища состояния. Такой подход обеспечивает горизонтальное масштабирование и устойчивость к отказам отдельных узлов.

Уровень вычислений

Гипервизор KVM/QEMU на каждом узле: запуск ВМ, живая миграция, управление ресурсами CPU/RAM.

Control Plane

Микросервисы оркестрации, планировщик размещения и распределённый кворум состояния.

Доставка (VDI)

Брокер сессий и протокол IDP для подключения тонких клиентов к рабочим столам.

Control plane состоит из независимых служб, общающихся через шину событий. Состояние кластера хранится в распределённом хранилище с кворумом по алгоритму Raft. Управление построено по модели event sourcing: каждое изменение фиксируется как событие, что обеспечивает воспроизводимость и аудит.

СлужбаНазначение
api-gatewayЕдиная точка входа REST API, аутентификация и rate-limiting.
schedulerПланирование размещения ВМ по узлам с учётом ресурсов и политик.
vdi-brokerБалансировка и назначение сессий рабочих столов пользователям.
state-storeРаспределённое хранилище желаемого и текущего состояния.

Ресурсы платформы описываются декларативно. Контроллеры непрерывно сверяют желаемое состояние с текущим и приводят систему к заданному виду — это называется циклом согласования (reconciliation loop).

// Упрощённый контроллер согласования пула рабочих столов
func (c *PoolController) Reconcile(ctx context.Context, pool Pool) error {
desired := pool.Spec.Size.Min
current := c.runningDesktops(pool)
if current < desired {
// не хватает рабочих столов — провижионим новые
return c.provision(ctx, pool, desired-current)
}
if current > pool.Spec.Size.Max {
return c.reclaim(ctx, pool, current-pool.Spec.Size.Max)
}
return nil
}
  1. Запрос

    Клиент отправляет декларативный манифест в api-gateway. Запрос проходит аутентификацию и валидацию схемы.

  2. Фиксация

    Желаемое состояние записывается в state-store как событие. Событие реплицируется на все узлы кворума.

  3. Согласование

    Контроллер обнаруживает расхождение между желаемым и текущим состоянием, планирует действия через scheduler.

  4. Исполнение

    Агент узла применяет изменения на гипервизоре, сообщает новый статус обратно в state-store.

Inscale использует многоуровневую сетевую архитектуру:

СетьНазначениеРекомендуемая пропускная способность
УправляющаяControl plane, API, метрики1 Гбит/с
StorageРепликация хранилища10 Гбит/с
VDIПротокол доставки рабочих столов IDP1 Гбит/с
VMТрафик виртуальных машин1–10 Гбит/с

Платформа поддерживает горизонтальное масштабирование без единой точки отказа:

  • Control plane масштабируется до 5 узлов (кворум Raft). Добавление CP-узлов не требует остановки кластера.
  • Worker-узлы добавляются онлайн — ВМ автоматически перераспределяются планировщиком.
  • Хранилище поддерживает репликацию 2x/3x и striping для увеличения производительности.

Максимальный проверенный масштаб: 512 worker-узлов, 16 000 одновременных ВМ в одном кластере.