Привет, Хабр!

В этой статье — история одного из наших проектов, который стал достойным челленджем для инженеров OXYGEN. Решать сложные задачи мы любим, и часто приходится изобретать для этого необычные способы, чтобы уложиться в поставленные сроки!

Задача заказчика звучала так: предоставить инженерам-конструкторам удаленный доступ к тяжелой 3D-графике на импортозамещенном оборудовании и программном обеспечении по выделенному каналу.

Спойлер: позже на этом «техно-торте» появилась вишенка – данные из защищенного ЦОДа должны быть доступны на удаленных предприятиях в других регионах. И виртуальные места на удалении 1500 км понадобились «еще вчера». Все, что мы тестировали полгода, нужно было переосмыслить в самые сжатые сроки. Но обо всем по порядку.

Из статьи вы узнаете, как делить видеокарты от NVIDIA с использованием российского софта, почему полгода тестов не гарантируют успех в развертывании VDI, если надо быстро и по-другому, а также какой протокол все-таки смог «поднять второй монитор», который никак не хотел подключаться.

Что делали и для кого

Заказчика проекта называть не будем из-за NDA, скажем лишь что это компания, которая занимается проектированием и созданием сложной техники в одном из регионов России. 

Что нужно было сделать: внедрить на предприятии отечественный VDI с GPU. Причем не только для офисных сотрудников, но и для конструкторов, которые работают с «тяжелыми» моделями в САПР «Компас-3D», Siemens NX и SolidWorks. 

Год назад мы уже разворачивали VDI на российских технологиях – виртуальные рабочие места на несколько тысяч сотрудников. Там мы «в режиме ошпаренной кошки» с нашими партнерами из Astra Linux делали все возможное, чтобы проект заработал за 10 дней. Поэтому здесь мы решили учесть прошлый опыт и подготовиться основательно – выделили полгода на процесс полноценного R&D (Research & Development), чтобы развернуть стенд в размеренном темпе.

Выводы из тестирования и отладки или как мы уговаривали подключиться второй монитор

После шести месяцев R&D тестовый стенд заработал как должен. И вот с чем мы столкнулись, пока шли к результату.


Проблема: при работе с графикой в тяжеловесных проектах возникали большие задержки, несмотря на то что используемая конфигурация соответствовала рекомендованным требованиям ПО.

Решение: заменили GPU NVIDIA T4 на NVIDIA A40, что кардинально улучшило производительность рендера.


Проблема: пользователи работали с разными профилями и предъявляли разные требования к ресурсам в зависимости от своих задач.

Решение: подобрали оптимальные параметры vCPU, RAM и GPU для инженерных рабочих мест с учетом сценариев работы в NX и КОМПАС.


Проблема: возникали сложности с подключением и корректным определением второго монитора.

Решение: обновили прошивки тонких клиентов, после чего проблема с определением дисплеев была устранена.


Проблема: на работу системы влияли сетевые задержки.

Решение: оптимизировали сетевую связанность и протокол Loudplay, перешли на новые релизы Astra, Termidesk и Loudplay Client.


Проблема: процесс выдачи рабочих мест требовал отдельной настройки и управления. 

Решение: настроили автоматическое брокерирование в Termidesk с раздельными фондами в домене AD.

«Подводные камни», о которых мы подумали заранее

Для эмуляции виртуального GPU мы выбрали Forsite vGate – программное решение на базе отечественных ОС и гипервизоров, которое позволяет управлять VDI.

Технологическим фундаментом для работы с 3D-графикой выступает драйвер и профили NVIDIA GRID vGPU, которые устанавливаются на физическом сервере для обработки ресурсоемких приложений (не реклама, а личный опыт). Forsite vGate умеет не просто делать проброс карты, а производит разделение одного физического GPU на несколько виртуальныхустройств, что обеспечивает работу виртуальных машин с аппаратным ускорением 3D в ОС Astra Linux

За доставку изображения на удалённые рабочие места отвечает отдельный российский протокол — Loudplay: он забирает отрендеренный на vGPU кадр, кодирует его прямо на GPU и в реальном времени «дотягивает» до тонкого клиента, удерживая плавность даже на узком и нестабильном канале. 

Вот с чем пришлось помучаться — так это с вопросом: почему не поднимался второй монитор? У инженеров и проектировщиков нашего клиента всегда по два-три монитора с разным разрешением. А VDI-протоколы (SPICE, RDP, VNC) плохо «дружат» с разными DPI и OpenGL-акселерацией на двух экранах.

Чтобы решить проблему, мы перебирали настройки композитинга в Astra, параметры кэширования кадров, пробовали сырые сокеты вместо стандартных транспортных протоколов. Но скроллинг все равно лагал при вращении 3D-моделей. Ситуацию разрешило переключение Loudplay на аппаратное кодирование потока (H.264 на самом GPU сервера) вместо софтового.

Стек у клиента в итоге получился исключительно отечественный: ОС Astra Linux, «Брест» для виртуализации, Forsite vGate для работы с NVIDIA vGPU, Loudplay для быстрой графики, резервное копирование через RuBackup.

Мы очень благодарны нашим партнерам за оперативную поддержку и выпуск обновлений прямо в ходе проекта.

«Я мистер Вульф, и я решаю проблемы»

Вернемся к нашей вишенке на торте. Жизнь непредсказуема, и штатное течение R&D нарушил звонок от клиента. Заказчик уточнил, что через месяц ему нужны новые, полностью подготовленные удаленные места для инженеров и проектировщиков в одном из регионов. А именно – в республике, где открывается новое подразделение компании-клиента.

То есть новая задача звучала так: развернуть полностью функциональный промышленный кластер за четыре недели вместо шести месяцев. Перед глазами пронеслась вся жизнь, а нашими друзьями на ближайший месяц стали командная работа, ночные смены, жесткий контроль и выверенный тайминг. Инженеры OXYGEN на какое-то время превратились в мистера Вульфа из «Криминального чтива», который решает проблемы. 

Какую архитектуру VDI мы выстроили

На стороне OXYGEN в защищенном московском ЦОДе развернули на российском оборудовании и софте: 

  • кластер «Брест» (виртуализация уровня ядра);

  • серверы для работы с GPU (российские бренды);

  • управление Forsite vGate с протоколом Loudplay;

  • резервное копирование на RuBackup;

  • межсетевой экран и АПКШ «Континент» для шифрования по ГОСТ.

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

Мы верим, что российское может не просто работать, а соответствовать требованиям современного пользователя при правильном подходе к настройке!

Три важных момента

Деление GPU (Loudplay + vGate vs vGPU)

В чем проблема «классики»: NVIDIA vGPU требует недоступных лицензий на импортные платформы управления VDI. Forsite vGate выполняет ту же функцию, решение позволяет использовать родную технологию виртуализации видеокарт NVIDIA GRID.

Шифрование по ГОСТ от АПКШ «Континент»

Статус клиента определил жёсткие условия по каналам передачи данных. Пользоваться интернет-соединением в такой ситуации нельзя, только выделенный канал с криптошифрованием. 

Протокол доставки графики — Loudplay

Именно протокол решает, увидит ли конструктор на удалёнке «живую» модель или «слайд-шоу». Мы использовали Loudplay — единственный на российском рынке проприетарный протокол доставки, который разрабатывают «с нуля» с 2018 года (у большинства отечественных VDI протокол построен на опенсорсе — RDP, SPICE, FreeRDP). Он внесён в реестр отечественного ПО (запись №14202). В нашем кейсе решающими оказались две его особенности:

  • запатентованная технология автоматической адаптации битрейта: поток в реальном времени подстраивается под ширину и потери канала, поэтому картинка остаётся плавной и на узком, и на шифрованном канале длиной 1500 км;

  • аппаратное кодирование H.264 прямо на GPU (в том числе в среде vGPU): снимает нагрузку с CPU и убирает задержку рендера — именно это в итоге «разгладило» вращение тяжёлых 3D-моделей.

Из других возможностей протокола, полезных в подобных сценариях, — помехоустойчивое кодирование (FEC) для восстановления потерянных UDP-пакетов без переотправки, поддержка кодеков H.264 и H.265, а также прямой режим «точка-точка», когда медиапоток идёт напрямую между виртуальной машиной и клиентом.

Как мы поняли, что нам удалось

Мы ориентировались на то, чтобы удаленный пользователь на расстоянии в 1500 км от нашего дата-центра и пользователь, сидящий в кафетерии нашего ЦОДа, не должны чувствовать разницы в удобстве работы. При пробросе графики – задержки в миллисекунду критичны для работы сервиса VDI, а на шифрованном канале особенно. И нам это удалось – мы добились того, чтобы модель отображалась так же, как пользователь видел бы её у себя в офисе!

Как мы это проверяли? Нестабильность задержек (джиттер) компенсировали буферизацией кадров на клиенте. Базовую задержку и трафик оптимизировали настройками кодеков (перешли с MJPEG на H.264 с переменным битрейтом). Оба приёма — не ручная магия, а штатные механизмы протокола Loudplay: буферизация на клиенте и адаптивный автобитрейт, который в реальном времени подстраивается под ширину и потери канала. 

Главный судья, оценивающий качество — пользователь

Этот проект стал для нас интереснейшим опытом, и выводы мы сделали вот какие:

  • не существует идеальной «серебряной пули». Даже если протокол имеет 50 версий настроек – готовьтесь компилировать свой модуль ядра для второго монитора;

  • канал важен — это нормальный путь для развертывания VDI в регионах, если нужно сделать надёжно8

  • тестируйте разные решения, и найдете идеал. Клиент – герой этой истории – до итоговой конфигурации пробовал работать с разными вендорами, решениями и провайдерами. И далеко не всегда проверенные технологии дают лучший результат. Новые идеи, тесты, смекалка – вот что приводит к успеху.

Именно эти качества позволили нам успешно решить кейс клиента. Запросы были, казалось бы, весьма понятными, но вот количество «подводных камней» и нюансов превратили проект в нестандартную и интересную задачку. И мы ее решили – российский VDI с GPU работает, и не на словах, а в реальной деятельности конструкторов, которые пользуются решением каждый день.

Больше о том, как OXYGEN помогает построить надежную облачную архитектуру для бизнеса – по ссылке. А еще у нас есть канал в TG, подписка на который позволит вам следить за главными новостями сферы дата-центров и облачных сервисов.

Комментарии (0)