2.1 Наложение слоёв
2.1.1 Физический слой
В данном слое находятся базовые физические элементы (серверы) и организована их сетевая связность.
2.1.2 Кластерный слой
В этом слое работают службы обеспечения программно-определяемых слоёв (SDS, SDN, SDC). Главной задачей данного слоя является обеспечение резервирования элементов инфраструктуры (до узлов). Процедура резервирования (failover) происходит автоматически без участия человека. Этот слой формируется в виде работы кластерного ПО на каждом из узлов. Платформа vStack имеет полностью собственную реализацию кластерного ПО.
2.1.3 Слой хранения — SDS
На основе ресурсных примитивов из кластерного слоя формируется слой хранения (SDS). Технологической основой SDS является ZFS — файловая система, объединённая с менеджером логических томов, которая также обладает совокупностью уникальных свойств. Единица грануляции слоя SDS — пул, собранный из дисков каждого узла c избыточностью равной избыточности кластера (N+2, N+3 и далее). В момент времени пул работает на конкретном узле кластера. Возможности слоя хранения:
- компрессия и дедупликация;
- внутренняя целостность данных;
- самовосстановление данных;
- транзакционная целостность.
Слой хранения имеет свои лимиты по размеру: 1 Зеттабайт, при этом поддерживает неограниченное количество файловых систем и неограниченное количество блочных устройств.
Для всех промышленных инсталляций рекомендуется использование избыточности типа N+2 или выше (платформа поддерживает N+1, N+2 и N+3).
На схеме ниже изображён пятиузловой кластер. Вертикальные контейнеры — пулы, горизонтальные — узлы кластера.
В случае выхода из строя узла за счёт механизма fencing (процесс исключения узла из кластера) узел, на котором возникла проблема, исключается из кластера, а все пулы теряют по одному диску. При этом кластер автоматически выполнит процедуру аварийного переключения (failover) ресурсов данного узла, и пул, работавший на узле, вышедшем из строя, станет доступен на другом узле. Все ВМ продолжат свою работу на другом узле.
Рисунок 1. Пятиузловой кластер2.1.4 Слой сети — SDN
vStack предоставляет три варианта технологического обеспечения виртуальных сетей:
- VLAN;
- VxLAN;
- GENEVE (собственная имплементация).
При создании новой виртуальной сети на каждом из Узлов Кластера создаётся программно-определяемый коммутатор. Реализация виртуальной сети — разработка vStack, прошедшая испытания и работающая (с сентября 2020 года) в промышленной эксплуатации на большом количестве кластеров.
Рисунок 2. Software-Defined NetworkingКаждый экземпляр сети имеет следующие свойства:
- собственный MTU;
- поддержка Jumbo Frames;
- поддержка TSO/GSO;
- поддержка TCP MSS clamping «из коробки»;
- поддержка Path MTU Discovery «из коробки».
Лимиты SDN:
- максимальное количество сетей: 65536;
- 1 048 576 портов на коммутаторе одного узла;
- производительность виртуального порта ВМ: 22 GBps/2.5 Mpps.
2.1.5 Слой вычислений — SDC
Слой SDC работает на базе гипервизора второго типа (bhyve). Производительность bhyve значительно выше, чем у других популярных гипервизоров. Кроме того, его оптимизация до сих пор продолжается, а практически все средства аппаратного ускорения виртуальных вычислений поддерживаются на современных процессорах Intel. Также гипервизор bhyve поддерживает работу в условиях CPU overcommit, что критически важно для облачных решений. Экземпляр SDC — виртуальная машина, являющаяся совокупной сущностью со следующими элементами:
- CPU/RAM;
- виртуальные сетевые порты (подключенные к слою SDN);
- виртуальные дисковые устройства (подключенные к слою SDS).
Виртуальная машина может работать под управлением следующих гостевых ОС:
- FreeBSD;
- Linux (OEL/CentOS/Ubuntu/Debian и другие);
- Windows 2016, 2019, 2022.
Работоспособность решения vStack с другими гостевыми ОС не исключается из-за небольших требований к ним (возможность загрузки в режиме UEFI, наличие драйверов virtio и наличие cloud-init). Диски виртуальной машины создаются на том же пуле, на котором была создана эта виртуальная машина. В процессе создания ВМ существуют следующие возможности выбора пула, ресурсы которого используются:
-
«Селекторы» — автоматический выбор пула, на котором наименьшее совокупное значение таких параметров, как:
- CPU;
- RAM;
- дисковое пространство.
-
Явное указание пула.
Для обеспечения комфортной работы с платформой в слое вычислений реализованы следующие возможности:
- поддержка спецификации virtio для сетевых портов, дисков и другой периферии (rnd, ballooning и другие);
- создание виртуальных машин при помощи облачных образов (cloud images);
- возможность персонализации настроек и поведения гостевых ОС в облачных образах с помощью стандарта cloud-init для unix-подобных систем и cloud-base для Windows;
- поддержка возможности лимитирования производительности сетевого порта (MBps) и диска (IOPS, MBps) в реальном времени, а также лимитирования ресурсов vCPU в реальном времени;
- поддержка создания снимков ВМ. В отличие от других решений снимки vStack содержат конфигурацию виртуальной машины в том числе сетевых портов и их IP/MAC-адресов.
Также в платформе существует автономный и самодостаточный механизм обеспечения работы в условиях CPU overcommit, который позволяет достигать высоких значений экономической эффективности в слое SDC (до 900%). Легковесность vStack — ключевая причина низкого значения Overhead.