Прежде чем перейти к статье, хочу вам представить, экономическую онлайн игру Brave Knights, в которой вы можете играть и зарабатывать. Регистируйтесь, играйте и зарабатывайте!
А зачем он вообще нужен?
Open source так плотно вошел в нашу жизнь, что мы ее без этого феномена и не представляем. Многое чем мы пользуемся основано на open source компонентах, работает на open source ОС и это можно продолжать до бесконечности. И если любая инфраструктура начинается с фундамента в виде ОС и виртуализации того или иного типа, и здесь не вызывает вопросов зачем нам Linux, qemu, KVM, containerd и т.п., то VDI на их фоне выглядит экзотикой и точно не является предметом первой необходимости. Тогда возникает вопрос - а зачем тогда вообще разбираться? Ответ простой - если посмотреть на то, что есть в реестре Минцифры в фундаментальных, с точки зрения инфраструктуры, категориях (операционные системы, средства виртуализации, системы управления базами данных, системы контейнеризации и контейнеры), то мы увидим там продукты, которые построены на основе всем известных open source проектах: Linux (почти монопольно), KVM в сочетании с oVirt, Open Stack, OpenNebula, PostgreSQL, Greenplum, Ignite, Kubernetes.
Это можно критиковать, не принимать, брезгливо отворачиваться, но это наша реальность. К тому же даже братья-китайцы, у которых ресурсов побольше, а рынок сравним с американским, не брезгуют за основу брать что-то зрелое. Чего стоит, например, почивший в бозе Asianux, основанный на RHEL, но не чисто китайский, конечно, который был в списке совместимости Oracle Database. Ни одного российского дистрибутива в списке совместимости мировых вендоров ни разу не было.
Рынок VDI по сравнению с серверной виртуализацией не велик, но в России немало компаний и организаций, которые понимают зачем им нужна именно такая инфраструктура. И если в 2012, например, идея разработки собственного VDI была, мягко говоря, неожиданной (есть Citrix, VMware и Microsoft, которые никуда не собираются), а в 2014 эта она уже перестала казаться бредовой фантазией, но российские потенциальные потребители находились на стадии отрицания, то из сегодняшнего дня понятно, что рано или поздно придется искать замену существующим инсталляциям продуктов из правого верхнего квадранта Гартнера или проектировать новую инфраструктуру без их участия.
Вот и выходит, что если приведенные выше open source проекты легли в фундамент российской ИТ-инфраструктуры, то почему бы и open source VDI не повторить этот путь.
Цель этой статьи как раз и разобраться в том, какие проекты есть, а также выбрать что стоит протестировать (но это уже в следующих статьях). Это позволит нам попробовать заглянуть в будущее, чтобы понять, на чем, потенциально, будут строить VDI в российских компаниях.
Таксономия open source VDI
Пришло время осмотреться вокруг. Забегая вперед, скажу, что активных проектов можно пересчитать по пальцам одной руки умелого столяра. Раз уж взялись за таксономию, давайте ее сделаем, но для начала давайте еще немного теории и общих принципов устройства VDI.
Общие принципы устройства VDI
Прежде чем начнем погружение, давайте на берегу немного разберемся с теорией, чтобы выровнять терминологию. На рисунке ниже приведены компоненты любого VDI продукта в очень крупную клетку.
Итого, что у нас есть:
VDI-клиент - это клиентское приложение для работы с брокером соединений. Это не обязательно может быть десктопное приложение. Клиентом может быть и web-браузер. Нужен он для того, чтобы авторизоваться в VDI, а в ответ получить список ресурсов, которые доступны пользователю для подключения. Ну и наконец, с его помощью запускается подключение к виртуальному рабочему месту.
Клиент протокола - этот компонент позволяет получить на устройстве доступа картинку виртуального рабочего места будь то полноценный десктоп, терминальная сессия или окно приложения. Примером такого клиента является mstsc в Windows или TightVNC в Linux. Некоторые VDI продукты могут обходиться без него - например, доставляя картинку на устройство доступа в окне браузера в формате HTML5.
Брокер соединений - это мозг VDI, которые позволяет из набора независимых терминальных серверов или виртуальных машин построить управляемую инфраструктуру, с аутентификацией и авторизацией, автоматизацией и правилами жизненного цикла виртуальных рабочих мест, политиками безопасности и т.п. У всех они устроены по разному, но основная задача этого компонента сделать так, чтобы пользователь мог ввести один простой адрес для подключения (а то и не вводить его вовсе, если он преднастроен) и дальше не заботиться о том, сколько и каких рабочих мест есть, созданы ли они, включены ли они и т.п.
В некоторых VDI продуктах у брокера соединений может быть дополнение, как его часть или как отдельный компонент, - это шлюз. На схеме его для упрощения не отобразил, но это что-то вроде обратного прокси. За ним скрывается вся инфраструктура. В интернет/DMZ выставляется только он. Принимает все соединения от пользователей и дальше транслирует их внутри инфраструктуры к нужным компонентам.Платформа виртуализации - это ресурс для VDI, на котором брокер соединений создает виртуальные машины, которые могут играть роль виртуальных десктопов или виртуальных терминальных серверов. Обычно, брокер соединений и так довольно сложно устроен и ему есть чем заниматься, поэтому управление виртуализацией происходит не в виде управления отдельными хостами, а через какую-нибудь централизованную систему управления, например VMware vCenter, oVirt или Open Stack.
Терминальные серверы - это тоже ресурс для VDI, где брокер соединений управляет только сессиями пользователей. Обычно это физические серверы, выполняющие роль терминальных серверов с опубликованными терминальными сессиями, либо отдельными приложениями.
У некоторых брокеров соединений могут быть специальные агенты для виртуальных машин и терминальных серверов, для повышения уровня автоматизации и управляемости инфраструктуры.
Теперь, кажется, все готово для погружения.
Ulteo OVD
Начнем, пожалуй, с самого старого проекта. Он был запущен сооснователем дистрибутива Mandrake Linux Гаэлем Дювалем после того, как в 2006-м его уволили из компании. Компания просуществовала до 2017 года, сменив собственника в 2015-м - была приобретена группой компаний AZNetwork.
Сайт Ulteo уже недоступен, но web-архив кое-что о нем помнит.
Например, сравнение community и коммерческой версии:
Функция | Community | Коммерческая |
Рабочие места на Linux и Windows | + | + |
Интеграция с Remote App | + | + |
Java и HTML5 клиенты | + | + |
Клиенты для Android и iOS | + | |
Шлюз (позволяет организовать безопасное подключение к Application Server из внешних сетей) | + | |
Клиенты для Linux и Windows | + | |
Интеграция удаленных Windows-приложений в сеанс пользователя | + | |
SSL VPN | + |
Примечательно, что сайт компании имел русскую локализацию, а на habr можно найти статью 2012 года о этом продукте, правда еще версии 3.0. Проект был сконцентрирован на разработке сервера приложений (в нашей терминологии - терминального сервера) для Windows и Linux, брокера соединений и клиентских приложениях. Как мы видим из сравнения, базовым вариантом был web-клиент и HTML5. Интеграцией с какой-либо платформой виртуализации нет. Наверняка серверы приложений Ulteo можно было запускать в виртуальных машинах, но администратору нужно было позаботиться о них самому.
Лицензия для Community версии указывалась как GPL.a. Такой тип GPL не ищется. Скорее всего - это AGPL. Исходный код версии 4.0.2 доступен на github, последние изменения были сделаны 8 лет назад. Констатируем, что проект умер.
FOSS-Cloud
Еще один умерший проект, который спонсировала швейцарская компания FOSS-Group, пытавшаяся, судя по всему, зарабатывать на профессиональных сервисах для open source ПО. В отличие от французской Ulteo эта команда предлагала полный стек: платформу виртуализации на основе KVM (видимо даже что-то вроде IaaS) и VDI поверх этой платформы. Судя по описанию, VDI довольно похож по устройству на теоретический, описанный выше. В качестве протокола доставки рабочего стола использовался SPICE.
Сайт проекта все еще доступен. Поэтому можем посмотреть, какие возможности своего продукта выделяли сами авторы:
Интеграция с существующими инфраструктурами на Windows и Linux (возможно имеются в виду домены и т.п.)
Платформа виртуализации для серверных нагрузок и рабочих столов
Поддержка виртуальных машин x86/x86_64 на Windows и Linux
Публикация рабочих столов
Персонализированные рабочие столы, включая перенос сессий между устройствами
Динамические рабочие столы, разворачиваемые из единого образа
Доставка приложений, в том числе через Microsoft RDS
Оптимизация трансляции видео в удаленной сессии с помощью M-GPEG
Поддержка мониторов с высоким разрешением
Поддержка пулов сетей, вычислительных ресурсов и виртуальных машин
Доступ к VDI с устройств на Windows, Linux и мобильных устройств
Двусторонняя передача аудио и видео
Аутентификация по смарт-картам и их трансляция в удаленную сессию
Перенаправление USB устройств
Web-консоль администратора
Многоарендность
Готовые сборки все еще доступны на sourceforge, а исходники на github, где последние изменения были сделаны в 2017 году. Также любопытна и лицензия, под которой это все распространялось - EUPL.
The Quality Virtual Desktop (QVD/theQVD)
Проект, запущенный испанской компанией Qindel Group в 2011 году. Формально вроде бы еще жив, но последний релиз датирован 2020-м годом. На github есть небольшие всплески изменений в 2021-м и 2022-м. Проект концентрируется на предоставлении рабочих столов на ОС Linux в виде виртуальных машин на KVM и контейнеров LXC. В качестве терминального сервера и протокола доставки рабочего стола используется некий форк freeNX. Примечательно, что QVD и X2Go (о котором будет ниже) решили в 2014 году объединить усилия для доработки общих компонентов протокола NX и создали проект The Arctica Project, но, судя по активности в github, жизнь там как-то не очень бурна.
Любопытно, что брокер соединений, агент управления виртуальными машинами и гипервизор совмещаются на одном физическом хосте. Их может быть несколько, тогда понадобится разделяемое хранилище. То есть, выходит, брокер управляет хостами виртуализации напрямую, а не через какую-либо систему управления вроде oVirt. На диаграммах упоминается кластеризация, но без деталей. Также в продукте отсутствует концепция пулов рабочих столов. Рабочие столы создаются и назначаются на пользователя индивидуально.
Разделения на редакции нет. Можно купить техническую поддержку. Но, учитывая, что новых релизов не было уже 2 года - проект скорее мертв, чем жив.
RAVADA VDI
Проект Политехнического Университета Каталонии (БарселонаТех). Был запущен в 2016 и, судя по активности на github, активно разрабатывался до 2019. Активность есть и сейчас, но в несколько раз меньше. Точно также как и QVD не опираются на какую-либо систему управления виртуализацией и работают с KVM напрямую. Не с первой версии, но появилась кластеризация хостов виртуализации. Поддерживают рабочие места на Windows и Linux в режиме связанных клонов. Рабочие места создаются из золотых образов. По умолчанию используется протокол SPICE, но для Windows можно настроить и RDP. Много чего делается через конфигурационные файлы. Больше похож на студенческий проект, годный для использования в университете, а также в каких-то крайне ограниченных инсталляциях (домашняя лаборатория?)
Коммерческой версии нет, распространяется под AGPL.
X2Go
Есть такая немецкая компания NoMachine, которая давным-давно решила оптимизировать подключение к X-серверу по сети. Так родился протокол NX, который значительно снизил нагрузку на эту самую сеть. И на протяжении нескольких лет NoMachine развивала его как коммерческий продукт и как community проект freeNX. NX примечателен тем, что это не просто протокол доставки картинки, но, по сути, это терминальный сервер для Linux, аналогичный Microsoft RDS. То есть он позволяет в удаленной операционной системе авторизовать пользователя, организовать для него полноценный сеанс и в нем уже запустить графическое окружение. Те же VNC и SPICE так не умеют. Они являются консольными протоколами - то есть подключение с их помощью равносильно тому, как если бы мы подключили физический монитор к порту видеоадаптера. Больше того, как и в RDS этот терминальный сервер для Linux умеет пробрасывать различные устройства как известные (принтеры, например).
И все бы хорошо, но NoMachine, выпуская 4-ю версию своего продукта, решила больше не развивать freeNX. Сообщество осталось наедине с собой и, как водится, появилось много форков, которые знали как делать лучше. Так, кроме freeNX появились X2Go, QVD, RX, Neatx (от Google). Все они уже между собой не совместимы, а кто-то уже и вовсе умер.
Строго говоря, X2Go не является VDI в чистом виде. Это именно терминальный сервер со своим брокером соединений. С его помощью нельзя автоматизировать развертывание виртуальных терминальных серверов, но обеспечить жизненный цикл рабочих мест на Linux - вполне. Ну и, как мы видим, некоторые VDI продукты используют его в своем составе.
Итого, проект жив, развивается, но все же на полноценный VDI не тянет.
OpenUDS
Удивительно, но это еще один испанский проект, который появился в 2011 году. Но он не самостоятельный, а является community версией коммерческого продукта UDS Enterprise, которая распространяется под лицензией 3-clause BSD и поддерживается студентами различных испанских университетов. На github проекта жизнь бурлит. Полагаю, связано это с успехами коммерческого продукта. В отличие от всех предыдущих кандидатов здесь виден более зрелый подход. Проект концентрируется именно на функциях брокера соединений и не пробует управлять хостами виртуализации напрямую, изобретать велосипеды с их кластеризацией и т.п. Open source версия, конечно не очень богата возможностями, но поддерживаются рабочие места на WIndows и Linux, публикация физических ПК, несколько платформ виртуализации на базе KVM, политики, ограничивающие проброс устройств в удаленную сессию.
Прямого сравнения версий как для Ulteo нет, но попробуем его сконструировать по тем данным, что приводят на странице коммерческого UDS Enterprise:
Функция | OpenUDS | UDS Enterprise |
Поддержка open source платформ виртуализации: | + | + |
Поддержка коммерческих платформ виртуализации: | + | |
Рабочие места на Linux и Windows | + | + |
Интеграция с Remote App | + | |
Публикация физических ПК | + | + |
Создание и управление пулами рабочих мест | + | + |
Поддержка базового набора протоколов доставки рабочего стола: | + | + |
Поддержка расширенного набора протоколов доставки рабочего стола: | + | |
Базовые механизмы аутентификации: | + | + |
Расширенные механизмы аутентификации: | + | |
Клиенты для Linux и Windows | + | + |
Это очень живой проект, к которому стоит присмотреться.
Итог
Если просуммировать, то подтвердилось, что open source VDI - не предмет первой необходимости. Проектов было запущено не так уж и мало , но из-за того, что ценность в такой инфраструктуре видят не все, то и выжили из них немногие. А самый живучий оказался тот, который является community версией довольно успешного коммерческого продукта.
Закономерный итог - из всех рассмотренных проектов OpenUDS выглядит наиболее перспективным, так как тут сошлись все факторы:
BSD лицензия позволяет взять его за основу коммерческого проприетарного продукта
В проекте есть все необходимые компоненты:
VDI-клиент
Брокер соединений
Шлюз
Агент для рабочих мест
Поддержка немалого количества протоколов доставки рабочего стола
Управление виртуализацией происходит через ее систему управления
Он более чем активный, а UDS Enterprise, судя по историям успеха, имеет немало инсталляций.
В следующей статье посмотрим на возможности OpenUDS на лабораторном стенде.