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, etc.). В момент времени пул работает на конкретном узле кластера. Возможности слоя хранения:
- компрессия и дедупликация;
- внутренняя целостность данных;
- внутренняя целостность данных;
- самовосстановление данных;
- транзакционная целостность.
Слой хранения имеет свои лимиты по размеру: 1 зеттабайт, при этом поддерживает неограниченное количество файловых систем и неограниченное количество блочных устройств.
Для всех промышленных инсталляций рекомендуется использование избыточности типа N+2 или выше (платформа поддерживает N+1, N+2 и N+3).
На схеме ниже изображен пятиузловой кластер. Вертикальные контейнеры — пулы, горизонтальные — узлы кластера.
В случае выхода из строя узла за счет механизма fencing (процесс исключения узла из кластера) узел, на котором возникла проблема, будет исключен из кластера, а все пулы потеряют по одному диску. При этом кластер автоматически выполнит процедуру аварийного переключения (failover) ресурсов данного узла, и пул, работавший на узле, вышедшем из строя, станет доступен на другом узле. Все ВМ продолжат свою работу на другом узле.
Рисунок 1. Пятиузловой кластер
2.1.4 Слой сети – SDN¶
vStack предоставляет три варианта технологического обеспечения виртуальных сетей:
- VLAN;
- VxLAN;
- GENEVE (собственная имплементация).
При создании новой виртуальной сети на каждом из Узлов Кластера создается программно-определяемый коммутатор. Реализация самой виртуальной сети — наша собственная разработка, прошедшая серьезные испытания и давно (с сентября 2020 г.) работающие в промышленной эксплуатации на большом количестве кластеров.
Рисунок 2. Software-Defined Networking
Каждый экземпляр сети имеет следующие свойства:
- собственный MTU;
- поддержка Jumbo Frames;
- поддержка TSO/GSO;
- поддержка TCP MSS clamping «из коробки»;
- поддержка Path MTU Discovery «из коробки».
Лимиты SDN:
- максимальное количество сетей – 65536;
- 1 048 576 портов на коммутаторе одного узла;
- производительность виртуального порта ВМ: 22 GBps / 2.5Mpps.
2.1.5 Слой вычислений – SDC¶
Слой SDC работает на базе гипервизора второго типа (bhyve). Производительность bhyve значительно выше, чем у других популярных гипервизоров. Кроме того, его оптимизация до сих пор продолжается, а практически все средства аппаратного ускорения виртуальных вычислений поддерживаются на современных процессорах Intel. Также гипервизор bhyve поддерживает работу в условиях CPU overcommit, что критически важно для облачных решений. Экземпляр SDC – виртуальная машина, являющаяся совокупной сущностью со следующими элементами:
- CPU/RAM;
- виртуальные сетевые порты (подключенные к слою SDN);
- виртуальные дисковые устройства (подключенные к слою SDS).
Рисунок 3. Software-Defined Computing
Виртуальная машина может работать под управлением следующих гостевых ОС:
- 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 (снижение производительности виртуальной машины относительно физического сервера вследствие значимости накладных расходов гипервизора).