Эта статья предназначена для архитекторов и администраторов, которые будут внедрять Termidesk в корпоративную инфраструктуру. 


НАЗНАЧЕНИЕ

Программный комплекс  «Диспетчер подключений виртуальных рабочих мест Termidesk» (далее - Termidesk) - это решение для виртуализации (VDI) и терминального доступа, доставляющее конечному пользователю виртуальные рабочие места (ВРМ), приложения или рабочий стол терминала посредством различных протоколов удаленного доступа.

ВРМ - это развернутая на виртуальной машине (ВМ) операционная система (ОС) с установленным компонентом «Агент ВРМ» и необходимым прикладным программным обеспечением. Подключение к ВРМ происходит при помощи протоколов удаленного доступа, чаще всего называемыми протоколами доставки.

ВРМ позволяет сотрудникам компаний работать из любых точек мира без привязки к характеристикам применяемых устройств. Использование ВРМ избавляет от необходимости хранения рабочих документов на своем (личном) устройстве, а значит устраняется риск потери информации при поломке устройства или его краже, поскольку вся информация будет храниться в корпоративной среде.

Эффект от использования Termidesk:

  • быстрое предоставление конечным пользователям приложений, рабочего стола или ВРМ;
  • удобное управление инфраструктурой рабочих мест VDI и Terminal за счет централизованного управления;
  • возможность управлять сессиями пользователей;

В текущей архитектуре Termidesk позволяет управлять только сессиями пользователей и питанием ВМ, однако в будущем планируется добавить:

  • управление приложениями и методами их доставки;
  • управление профилями пользователей;
  • управление шаблонами и образами тиражируемой ОС.
  • гибкое масштабирование инфраструктуры за счет разделения компонентов Termidesk.

ВИДЫ ПРОГРАММНОГО ПРОДУКТА TERMIDESK

В зависимости от решаемых задач, Termidesk предлагает два типа программных продуктов: VDI (предоставление ВРМ) и Terminal (предоставление приложений или ресурсов терминального сервера).

В Termidesk VDI доступен весь функционал программного продукта: как для работы с ВРМ, так и для работы с терминальными серверами и доставкой приложений. Если необходима работа только с терминальными серверами и приложениями, без доставки ВРМ и работы с платформами виртуализации, следует выбрать Termidesk Terminal.

Разделение функционала происходит при активации соответствующего типа лицензии.

ВАРИАНТЫ РАЗВЕРТЫВАНИЯ TERMIDESK

Общая схема установки решения Termidesk VDILink to Общая схема установки решения Termidesk VDI

Решение Termidesk VDI используется, если пользователю нужно предоставить полнофункциональное виртуальное окружение, а именно - ВРМ.

Termidesk состоит из ряда компонентов, которые могут быть либо отделяемыми (подразумевает выбор роли при установке из общего пакета), либо самостоятельными (компонент устанавливается из отдельного пакета, но используется в составе общего комплекса): 

  • «Универсальный   диспетчер» (также «Диспетчер подключений») - отделяемый компонент, предоставляющий графическую систему управления полным жизненным циклом ВРМ;
  • «Шлюз» - отделяемый компонент, отвечающий за туннелирование протоколов доставки, использующих транспортный протокол TCP. Обеспечивает отделение инфраструктуры ВРМ, находящихся во внутренней локальной сети, от внешних локальных или глобальных сетей;
  • «Менеджер рабочих мест» - отделяемый компонент,  отвечающий за взаимодействие с поставщиком ресурсов и управление жизненным циклом ВРМ, включая создание, настройку, запуск, отключение и удаление;
  • «Агент» - компонент,  отвечающий за контролируемую доставку, взаимодействие с компонентами «Универсальный диспетчер» и «Менеджер  рабочих мест»;
  • «Клиент» - компонент, предназначенный для установки на пользовательскую рабочиую станцию с целью эффективного взаимодействия с ВРМ.

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

Архитектура Termidesk VDI приведена на рисунке. На схеме отражен процесс выдачи ВРМ пользователю, поэтому «Менеджер рабочих мест» на ней не представлен. «Менеджер рабочих мест» задействуется при публикации фонда ВРМ, подробное описание представлено ниже.

Фонд - совокупность ВРМ, размещенных на платформе виртуализации.

Публикация - запуск процесса наполнения фонда ВРМ в соответствии с заданными параметрами. 

Программный клиент
Универсальный диспетчер
Шлюз
Менеджер рабочих мест
Портал администратора
Портал пользователя
Пользовательская инфраструктура
Тонкие/толстые клиенты
Мобильные устройства
HTML5-клиент
VPN канал
Интернет
ЛВС
Каналы связи
Инфраструктура Termidesk
Виртуальные рабочие места
Агент ВРМ
COM
DBUS
Терминальный сервер
Сессионный агент
DBUS
СУБД
RabbitMQ
Хранилище профилей
Балансировщик
Сервер DNS
Служба каталогов
Сервер DHCP
Сервер(-ы) платформы виртуализации
Инфраструктурные сервисы
Удаленный помощник (серв.)
(11) HTML5 через WebSocket
(11) SPICE/RDP через WebSocket
(1) Вход 
(9) Параметры подключения
(2) Аутентификация
(8) Готовность ВМ
(10) Туннелирование
(12) RDP
(6) Контроль состояния
Подключения к экрану
(2) Аутентификация
Гипервизор(-ы)
(3) Запуск ВМ
(4) Kerberos
Задачи
(5) Старт ВМ
Удаленный помощник (клиент.)
(6) Контроль состояния
(12) SPICE
(12) RDP
Задачи
Запуск
Задачи
Задачи
(7) Ввод в домен

Архитектура Termidesk VDI

Когда пользователь запускает компонент «Клиент» на своем рабочем месте и нажимает кнопку  [Подключиться] происходит следующее:

  • «Клиент» подключается к указанному серверу («Диспетчеру подключений») и передает учетные данные пользователя, с которыми он хочет подключиться;
  • «Диспетчер подключений» запрашивает сервер каталогов для аутентификации пользователя;
  • при успешной аутентификации «Диспетчер подключений» посылает команду платформе виртуализации на запуск ВМ для аутентифицированного пользователя;
  • в случае, если используется программный комплекс «Средства виртуализации «Брест», платформа виртуализации получает билет kerberos от сервера каталогов.  Это гарантирует, что платформа виртуализации получила полномочия на запуск ВМ через единый центр управления пользователями;
  • платформа виртуализации размещает ВМ на гипервизоре и запускает ее;
  • гипервизор контролирует состояние ВМ;
  • после запуска ОС на ВМ установленный в ней «Агент» проводит необходимые настройки и добавляет ВМ в домен. Если ВМ уже была создана ранее (использовалась), то заново настройки не выполняются;
  • «Агент» сообщает «Диспетчеру подключений» о готовности ВМ к работе;
  • «Диспетчер подключений» формирует параметры подключения к ВМ для «Клиента» и передает их.

Пользователь получает ВРМ через «Клиент», который в свою очередь запускает приложение доставки ВРМ termidesk-viewer для отображения экрана.

Если пользователь хочет получить терминальную сессию или приложение, происходит следующее:

  • «Клиент» подключается к указанному серверу («Диспетчеру подключений») и передает учетные данные пользователя, с которыми он хочет подключит ься;
  • «Диспетчер подключений» запрашивает сервер каталогов для аутентификации пользователя;
  • при успешной аутентификации «Диспетчер подключений» посылает команду серверу терминалов  о подключении аутентифицированного пользователя через сессионный агент;
  • от сессионного агента на сервер терминалов поступает запрос на создание сессии. Взаимодействие выполняется посредством dbus ;
  • при успешном создании сессии агент сообщает «Диспетчеру подключений» о готовности к работе;
  • пользователь получает доступ в сессию через «Клиент», который в свою очередь запускает соответствующее приложение (mstsc/wfreerdp или xfreerdp) для ее отображения.

При туннелировании протокола доставки через «Шлюз» происходят похожие процессы, при этом появляются новые:

  • «Диспетчер подключений» формирует параметры подключения и выдает «Клиенту» URL-адрес, содержащий токен доступа. Токен доступа представляет собой закодированную структуру данных с указанием параметров перенаправления «Клиента»;
  • «Клиент» обращается по этому URL-адресу;
  • «Шлюз» проверяет переданный от «Клиента» токен доступа API-запросом через «Диспетчер подключений»;
  • если проверка прошла успешно,  «Диспетчер подключений» возвращает «Шлюзу» параметры подключения (хост и порт) из токена доступа;
  • «Шлюз» перенаправляет соединение «Клиента» на указанный хост и порт.

Подключения между «Клиентом» и «Шлюзом» формируются через вебсокеты (WS), которые позволяют туннелировать протоколы SPICE и RDP.

Соединения от «Шлюза» формируются напрямую (без WS) по протоколу SPICE на гипервизор, по протоколу RDP в гостевую ОС или сервер терминалов.

Опционально подключение пользователя может выполняться через веб-браузер с поддержкой HTML5.

Общая схема установки решения Termidesk TerminalLink to Общая схема установки решения Termidesk Terminal

Если в инфраструктуре нет необходимости в ВРМ, а нужно только обеспечить пользователей определенным набором приложений или доступом к ресурсам сервера, рекомендуется использовать решение Termidesk Terminal.

Для решения задач по доставке приложений и рабочих столов терминалов с ОС Astra Linux Special Edition (Server) служит компонент «Сервер терминалов Astra Linux» (Terminal Server Astra Linux, далее - STAL). Совместно с компонентом STAL должен быть установлен сессионный агент. 

Для решения задач по доставке приложений и рабочих столов терминалов с ОС Microsoft Windows Server достаточно установить сессионный агент на уже настроенный для работы сервер Microsoft Windows Server с ролью «Remote Desktop Session Host» из состава «Remote Desktop Services» (далее - MS RDSH).

Архитектура решения Termidesk Terminal приведена на рисунке.

(9) Параметры подключения
(1) Вход в диспетчер
(10) Туннелирование
(8) Готовность
(2) Аутентификация
(11) HTML5 через WebSocket
(11) RDP через WebSocket
(6) Контроль состояния
(6) Контроль состояния
(2) Аутентификация
(12) RDP
Программный клиент
Диспетчер подключений
Шлюз подключений
HTML5 - клиент
RDS
STAL
Сессионный агент

Архитектура Termidesk Terminal

Общая схема взаимодействия Termidesk и компонента STAL приведена на  рисунке.

Процесс PROXY - внутренний сервис, прослушивающий сетевой сокет на порте 3389 и транслирующий подключения в unix-сокеты, с которыми связан терминальный сервер.

Сервер STAL
REST API
запуск процесса
bus
Сервис STAL
Сервис PROXY
RDP
X11
FREERDP-SHADOW
RDP
FREERDP-SHADOW
FREERDP-SHADOW
STAL
RDP
Cессия
пользователя
Cессия
пользователя
Cессия
пользователя
X11
X11
запуск процесса
запуск процесса
Клиент Termidesk
АРМ пользователя
Клиент Termidesk
АРМ пользователя
Клиент Termidesk
АРМ пользователя
Клиент RDP
Сервер Termidesk
Сессионный Агент
Клиент RDP
Клиент RDP

Схема взаимодействия Termidesk и STAL

Для того, чтобы пользователь после запуска «Клиента» получил приложение или терминальный доступ к STAL, происходит следующее:

  • на сервере с установленным STAL сервис PROXY выполняется с правами служебного пользователя stal-proxy;
  • пользователь подключается к серверу Termidesk через «Клиент», получает список доступных ему приложений и терминалов и выбирает необходимое подключение;
  • от компонента сессионного агента на сервис STAL поступает запрос на создание сессии. Взаимодействие между компонентами выполняется посредством dbus;
  • сервис STAL создает X (первую, вторую и так далее) сессию пользователя (в зависимости от количества подключившихся пользователей);
  • сервис STAL отправляет сигнал на открытие порта на сервис PROXY;
  • сервис PROXY открывает порт 3389 (по умолчанию) на прием соединений и ожидает подключения от «Клиента»;
  • при подключении «Клиента» сервис PROXY принимает соединение, затем выполняет следующее:
    • закрывает сокет приема соединений;
    • запускает протокол RDP на локальный unix-сокет;
    • создает асинхронную задачу на передачу данных с сокета принятого соединения «Клиента» на unix-сокет;
    • отправляет на сервис STAL информацию о соединении «Клиента»;
  • «Клиент» получает доступ в X-сессию;
  • сервис PROXY отслеживает состояние подключения «Клиента» и останавливает передачу данных, если поступил сигнал на отключение от STAL.

Распределенная схема установкиLink to Распределенная схема установки

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

Установка нескольких экземпляров (N+1) «Универсального диспетчера», «Шлюза», «Менеджера рабочих мест» позволяет избежать единой точки отказа системы.

Доступ к таким компонентам осуществляется через балансировщики нагрузки, не входящие в состав решения Termidesk.

Общая схема распределенной установки Termidesk представлена на рисунке.




Astra Linux
Windows 10
Программный
 клиент
DHCP
Агент
ВРМ
Шлюз подключений
Универсальный диспетчер
Менеджер рабочих мест
Менеджер рабочих мест
Универсальный диспетчер
Инфраструктура Termidesk
АРМ Пользователя
Платформа виртуализации
LDAP
DNS
Балансировщик шлюзов
Балансировщик диспетчеров
Шлюз подключений
СУБД PostgreSQL
Astra Linux
Windows 10

Общая схема распределенной установки

В случае, если планируется использование Termidesk VDI со STAL, схема приобретет следующий вид.




Astra Linux
Windows 10
Программный
 клиент
Агент
ВРМ
Шлюз подключений
Универсальный диспетчер
Менеджер рабочих мест
Менеджер рабочих мест
Универсальный диспетчер
Инфраструктура Termidesk
АРМ Пользователя
Платформа виртуализации
Балансировщик шлюзов
Балансировщик диспетчеров
Шлюз подключений
СУБД PostgreSQL
Astra Linux
Windows 10
DHCP
MS AD, RDS
DNS
Сервер STAL

Схема распределенной установки Termidesk VDI со STAL

Схема распределенной установки Termidesk VDI с инфраструктурой Microsoft (Active Directory,  Remote Desktop Services) и доменом аутентификации ALD Pro представлена на рисунке




Astra Linux
Windows 10
Программный
 клиент
DHCP
Агент
ВРМ
Шлюз подключений
Универсальный диспетчер
Менеджер рабочих мест
Менеджер рабочих мест
Универсальный диспетчер
Инфраструктура Termidesk
АРМ Пользователя
Платформа виртуализации
MS AD, RDS
DNS
Балансировщик шлюзов
Балансировщик диспетчеров
Шлюз подключений
СУБД PostgreSQL
Astra Linux
Windows 10
ALD Pro
Сервер STAL

Схема установки Termidesk VDI с инфраструктурой Microsoft и ALD Pro

Отказоустойчивая схема установкиLink to Отказоустойчивая схема установки

В отказоустойчивом режиме балансировка серверов Termidesk осуществляется в режиме «Primary-Secondary» (также «Active-Passive»). Отказоустойчивость БД выполняется средствами СУБД.

Отказоустойчивая схема установки представлена на рисунке.


Инфраструктура Termidesk
DHCP
LDAP
DNS

Astra Linux
Windows 10
Программный
 клиент
АРМ Пользователя
Платформа виртуализации
Сервер Termidesk
Primary
Сервер Termidesk
Secondary
СУБД PostgreSQL

Отказоустойчивая схема установки

МасштабируемостьLink to Масштабируемость

С целью увеличения производительности распределенной инфраструктуры VDI применяется горизонтальное масштабирование Termidesk.

Минимальная конфигурация компонентов при горизонтальном масштабировании следующая:

  • «Универсальный  диспетчер» - 2 шт.;
  • «Шлюз» - 2 шт.;
  • «Менеджер рабочих мест» - 2 шт. (значение постоянно  и остается таким при конфигурации N+1);
  • балансировщик БД - 1 шт. (значение постоянно  и остается таким при конфигурации N+1);
  • серверы БД - 2 шт. (значение постоянно и остается таким при конфигурации N+1);
  • балансировщики подключений - 2 шт. Предполагается, что необходим отдельный балансировщик для «Шлюзов», и отдельный для «Универсальных диспетчеров».

DISPLAY NET
VM NET
VRRP
доменное имя Termidesk
(внешн)
Балансировщик БД
MGMT NET
VRRP
доменное имя
(внутр)
VM NET
Кластер БД
EXTERNAL NET
Шлюз N
Шлюз 1
GW1-VRRP
VRRP
GWN-VRRP
доменное имя шлюзов
адрес VRRP
видеотрафик
VRRP
VRRP
доменное имя
(внутр)
Пользователи
Сервер БД 1
Сервер БД 2
Балансировщик 1
Менеджер рабочих мест Primary
Менеджер рабочих мест Secondary
Универсальный диспетчер 1
Универсальный диспетчер N
Балансировщик 2

Схема горизонтального масштабирования Termidesk

В общем случае при горизонтальном масштабировании будут задействованы компоненты, указанные на схеме:

  • Сети:
    • EXTERNAL NET - внешняя сеть, в которой находятся пользователи;
    • MGMT NET - управляющая сеть Termidesk;
    • DISPLAY NET - сеть узлов платформ виртуализации для подключения к экранам пользовательских рабочих станций;
    • VM NET - сеть рабочих мест для терминирования прямых подключений (например, RDP).
  • Компоненты:
    • балансировщик - представляет собой точку входа в Termidesk для внешних пользователей и внутренних компонент. Принимает HTTP-запросы на внешние и внутренние доменные имена Termidesk и распределяет обычные запросы между серверами Termidesk;

В текущей архитектуре балансировщики могут быть реализованы программным обеспечением nginx/haproxy.

    • компонент «Универсальный диспетчер» - обеспечивает работу веб-интерфейса панели управления Termidesk и отвечает за идентификацию пользователей, назначение и контроль доставки им ВРМ;
    • компонент «Менеджер рабочих мест» - является обработчиком фоновых задач;

В текущей архитектуре компонент «Менеджер рабочих мест» работает посредством служб termidesk-taskmantermidesk-celery-beattermidesk-celery-worker. Происходит плавный переход на работу только со службами termidesk-celery-beattermidesk-celery-worker.

    • компонент «Шлюз» - обеспечивает работу websocket-подключений. «Шлюзы» обладают общим внешним доменным именем, которое определяется в один из виртуальных IP-адресов по кругу («Round-robin»). Каждый «Шлюз» обладает собственным виртуальным IP-адресом (GWN-VRRP). При отказе одного из «Шлюзов», запросы начинает обрабатывать один из оставшихся, в зависимости от выставленного приоритета. «Шлюзы» должны иметь доступ через балансировщики к узлам Termidesk;
    • кластер БД - обеспечивает работу при больших нагрузках на БД. Состоит из балансировщика для подключений к серверам БД и непосредственно серверов БД;
    • ВРМ - непосредственно получаемые пользователем рабочие места. Должны иметь доступ к серверам Termidesk через балансировщики.

Облачное развертываниеLink to Облачное развертывание

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

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

Сессионный агент
(6) Контроль состояния
(9) Параметры подключения
(1) Вход в диспетчер
(10) Туннелирование
(8) Готовность ВМ
(7) Ввод в домен
(4) Kerberos
(5) Старт ВМ
(12) RDP/SPICE
(6) Контроль состояния
(2) Аутентификация
(3) Запуск ВМ
(6) Контроль состояния
(11) HTML5 через WebSocket
(11) SPICE/RDP через WebSocket
(12) SPICE
(12) RDP
Оркестратор
Серверы
Запросы и ответы
Управляющие команды и ответы
Размещение ресурсов
Программный клиент
Диспетчер подключений
(2) Аутентификация
Шлюз подключений
HTML5 - клиент
Агент ВМ
Хранилища
STAL
RDS
COM
DBUS

Архитектура Termidesk в облаке


КОМПОНЕНТЫ TERMIDESK


Схема взаимодействия компонентов и приложенийLink to Схема взаимодействия компонентов и приложений

Схема взаимодействия компонентов Termidesk и приложений представлена на рисунке.

Рабочая станция пользователя
Клиент
vdi-viewer
vdi-proxy
Сервер Termidesk
termidesk-vdi
Универсальный диспетчер
termidesk-taskman
Менеджер ВРМ
termidesk-gateway
Шлюз
Платформа виртуализации
qemu-spice
termidesk-vmsd
ВРМ
Агент виртуальных смарт-карт
termidesk-pcsc
Видеоагент
termidesk-video-agent
Агент ВРМ
termidesk-agent
ru.termidesk.tvm.0
ru.termidesk.realtimestreaming.0
Агент УВ
ru.termidesk.pcsc.0
Сервер терминалов
termidesk-session-agent
Сессионный агент
PostgreSQL
СУБД
RabbitMQ-server
Брокер сообщений
Обозначения:
Компонент, не входящий в Termidesk
Компонент, входящий в Termidesk
Узел установки
Обращение к службе/приложению
Использование именованного канала
Приложение
celery beat
Планировщик задач
celery worker
Исполнитель отложенных задач
termidesk-stal
STAL
stal-proxy
freerdp-shadow
xorg
SSO
termidesk-client

Схема взаимодействия компонентов и процессов

«Универсальный диспетчер»Link to «Универсальный диспетчер»

Компонент, отвечающий за идентификацию пользователей, назначение и контроля доставки им ВРМ, приложений и рабочих столов. 

Поскольку основная задача «Универсального диспетчера» - предоставить ВРМ пользователю, в нем реализованы следующие функции:

  • взаимодействие с поставщиком услуг, на котором размещается ВРМ;
  • взаимодействие с терминальными серверами, к которым предоставляется доступ;
  • взаимодействие с серверами каталогов для обеспечения процедур идентификации и аутентификации.

«Шлюз» Link to  «Шлюз»

Компонент, отвечающий за туннелирование протоколов доставки, использующих транспортный протокол TCP. Может быть установлен совместно с «Универсальным диспетчером», либо отдельно.

«Шлюз» обеспечивает изоляцию инфраструктуры VDI и терминальных серверов, находящихся во внутренней локальной сети, от внешних локальных или глобальных сетей.

Рекомендуется использовать «Шлюз» при работе через недоверенные сети, поскольку это способствует не только защищенному взаимодействию (применяется протокол SSL), но и сокрытию инфраструктуры ВРМ.

«Шлюз» использует технологию websockets для туннелирования протоколов доставки. «Универсальный диспетчер» передает на «Клиент» информацию о «Шлюзе», через который будет осуществляться доставка ВРМ. «Клиент» устанавливает со «Шлюзом» защищенное соединение. Схема работы представлена на рисунке.

Поставщик ресурсов
HTTPS
Протокол доставки
WS/WSS
RDP
SPICE
RDP
Агент ВМ
Гостевая ОС ВМ
HTTPS
Универсальный диспетчер
Программный клиент
Шлюз

Схема работы компонента «Шлюз»

Termidesk может взаимодействовать со множеством «Шлюзов», настроенных в режиме балансировки нагрузки. 


«Менеджер рабочих мест»Link to «Менеджер рабочих мест»

Компонент, отвечающий за взаимодействие с поставщиком ресурсов и управления жизненным циклом ВРМ. Является обработчиком фоновых задач. Может быть установлен совместно с «Универсальным диспетчером», либо отдельно. 

Работа «Менеджера рабочих мест» основывается на следующих службах:

  • termidesk-taskman - работает с API платформ виртуализации, отправляет команды на создание и удаление ВРМ и шаблонов;
  • termidesk-celery-worker - выполняет отложенные задачи. В будущем эта служба заменит termidesk-taskman;
  • termidesk-celery-beat - является планировщиком фоновых задач, запуск осуществляется по расписанию. Взаимодействует со службой RabbitMQ.

Менеджер рабочих мест задействуется при публикации фонда ВРМ и взаимодействует с БД для определения задачи на публикацию (создать ВМ, дождаться инициализации, клонировать и т.п) и ее исполнение. Компонент используется в том числе для отслеживания состояния уже созданных ВМ.

«Агент» Link to «Агент»

К «Агенту» относятся несколько подкомпонентов:

  • агент ВРМ - выполняет взаимодействие с диспетчером Termidesk, конфигурирует ВРМ, фиксирует действия пользователя, реализует передачу управляющих сообщений;
  • агент узла виртуализации - взаимодействует с гипервизором через модуль  libvirt. Работает в качестве посредника между libvirtd и агентом ВРМ через virtio канал /dev/virtio-ports/ru.termidesk.tvm.0, управляя тем самым ВМ, на которой запущен агент ВРМ;
  • сессионный агент - активирует возможность множественного доступа пользователей к удаленным рабочим столам и приложениям;
  • видеоагент - выполняет перенаправление видеокамеры с пользовательской рабочей станции в ВРМ. Принимает изображения с камеры через virtio канал /dev/virtio-ports/ru.termidesk.RealtimeStreaming.0;
  • агент виртуальных смарт-карт - выполняет перенаправление подключенных к пользовательской рабочей станции смарт-карт в ВРМ. Работает с каналом /dev/virtio-ports/ru.termidesk.PCSC.0.

Все перечисленные каналы должны быть активированы на платформе виртуализации.

Без установленного на соответствующем узле «Агента» сервер Termidesk не сможет корректно взаимодействовать с этим узлом. По среде установки эти «Агенты» распределяются следующим образом:

  • устанавливаются в гостевую ОС:  агент ВРМ, видеоагент, агент виртуальных смарт-карт;
  • устанавливается на узел виртуализации: агент узла виртуализации;
  • устанавливается на узел сервера терминалов: сессионный агент.

«Клиент» Link to  «Клиент»

Компонент, отвечающий за доставку ВРМ на пользовательскую рабочую станцию с возможностью перенаправления периферии, каталогов, а также оптимизацию их использования в протоколе доставки.

Для отображения экрана ВРМ «Клиент» открывает соответствующую программу:

  • при использовании протокола SPICE будет запущен termidesk-viewer;
  • при использовании протокола RDP будет запущено одно из приложений в зависимости от используемой ОС: wfreerdp.exe, mstsc.exe, xfreerdp.

Схема работы представлена на рисунке.

RDP
SPICE
Параметры подключения
Универсальный диспетчер
Агент ВМ
Гостевая ОС ВМ
Управляющие команды
VMM QEMU
Графический интерфейс
Взаимодействие с API диспетчера
Обработчик URI
VDI-прокси
Модуль запуска программ
termidesk viewer
wfreerdp/mstsc

Схема работы компонента «Клиент»

«Оркестратор» Link to «Оркестратор»

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

В текущей реализации выполняет роль API-шлюза и обеспечивает обработку запросов внутри управляемого контура и передачу результата обработки облачным компонентам.

Схема работы «Оркестратора» представлена на рисунке.

CLOUD AGENT
CLOUD IDENTITY SERVICE
1. Получение токена
6. Транзит ответа на запрос
2. Отправка запроса
5. Ответ на запрос
4. Транзит запроса
3. Валидация токена
Оркестратор
Универсальный диспетчер

Схема работы компонента «Оркестратор»
 

STALLink to STAL

«Сервер терминалов Astra Linux» или STAL - компонент, отвечающий за организацию терминального доступа в ОС  Astra Linux Special Edition (Server).

STAL позволяет перенаправлять в терминальную сессию принтеры и диски, подключенные к пользовательской рабочей станции, а также поддерживает динамическое изменение размера отображаемого экрана терминальной сессии.

Для того чтобы пользователь смог перенаправить подключенный диск в терминальную сессию, происходит следующее:

  • сессионный агент устанавливает политику разрешения перенаправления дисков для терминальной сессии;
  • STAL выполняет запуск сервера freerdp-shadow с каналом RDPDR (клиент шины DBus ru.uveon.stal.rdpdr);
  • при первом обращении в шину запускается STAL-RDPDR (менеджер сессионной шины DBus ru.uveon.stal.rdpdr); 
  • служба xfreerdp передает служебную информацию через протокол MS-RDPEFS;
  • расширение RDPDR транслирует команды протокола RDPDR в шину DBus ru.uveon.stal.rdpdr;
  • STAL-FUSE (менеджер службы fuse) запускается на каждую точку монтирования и транслирует команды RDPDR в FUSE API;
  • пользователь получает подключенный к точке монтирования ресурс.

FREERDP-SHADOW
RDPDR
MS-RDPEFS
AUDIT
STAL-FUSE
/mount point1
STAL
CMD
DBUS
CMD
RUN
STAL-RDPDR
AUDIT
STAL-FUSE
/mount point2
AUDIT
STAL-FUSE
/mount point3
CMD
CMD
CMD
SYSLOG
REST API
АРМ пользователя
Клиент Termidesk
DRIVE path2
DRIVE path3
XFREERDP
DRIVE path1
Клиент RDP
Сервер Termidesk
Сессионный Агент
Терминальная сессия

Схема работы STAL при перенаправлении диска

Для того чтобы пользователь cмог перенаправить печать в терминальную сессию, происходит следующее:

  • сессионный агент   устанавливает политику разрешения печати для терминальной сессии;
  • STAL выполняет запуск сервера freerdp-shadow с каналом RDPDR (клиент шины DBus ru.uveon.stal.rdpdr);
  • при первом обращении в шину запускается STAL-RDPDR (менеджер сессионной шины DBus ru.uveon.stal.rdpdr); 
  • при старте системы запускается STAL-RDPEPC (менеджер системной шины DBus ru.uveon.stal.rdpepc);
  • служба xfreerdp передает служебную информацию через протокол RDPEPC (базируется на операциях протокола RDPDR);
  • расширение RDPDR транслирует команды протокола RDPEPC в шину DBus ru.uveon.stal.rdpdr и далее в шину DBus ru.uveon.stal.rdpepc;
  • STAL-RDPEPC транслирует команды в CUPS API;
  • пользователь автоматически получает виртуальные принтеры во всех своих сессиях;
  • пользователь инициирует печать документа на виртуальный принтер;
  • CUPS запускает печать через VPRINT (драйвер виртуального принтера);
  • VPRINT сохраняет задание в каталоге JOBS SPOOL и как клиент DBus отправляет в STAL-RDPEPC информацию о завершении печати документа, количества копий, страницы и т.д.;
  • STAL-RDPEPC передает данные печати через DBus в сессию пользователя в STAL-RDPDR;
  • RDPDR отправляет данные печати через RDPEPC.

XFREERDP
PRINTER1
FREERDP-SHADOW
RDPDR
MS RDPEPC
CUPS
JOB
STAL
CUPS API
DBUS
STAL-RDPEPC
STAL-RDPDR
XFREERDP
PRINTER1
PRINTER2
FREERDP-SHADOW
RDPDR
MS RDPEPC
DBUS
STAL-RDPDR
Терминальная сессия
RUN
RUN
RDPEPC DBUS
RDPEPC DBUS
RDPEPC DBUS
VPRINT
JOBS SPOOL
(folder)
Терминальная сессия
CMD
REST API
АРМ пользователя
Клиент Termidesk
Сервер Termidesk
Сессионный Агент
АРМ пользователя
Клиент RDP
Клиент RDP
Клиент Termidesk

Схема работы STAL при перенаправлении печати


ЗАКЛЮЧЕНИЕ

Termidesk - программный комплекс, состоящий из нескольких компонентов, каждый из которых выполняет свои задачи.

Функционирование Termidesk в варианте доставки ВРМ, а не терминальной сессии или приложения, невозможно без компонентов «Универсальный диспетчер», «Менеджер рабочих мест», «Агент ВРМ », «Агент узла виртуализации». Для получения ВРМ на пользовательской рабочей станции  должен быть установлен компонент  «Клиент».

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

  • « Шлюз» поможет скрыть инфраструктуру от внешних воздействий. При этом он может устанавливаться на отдельный узел, не совмещенный с «Универсальным диспетчером»;
  • « Видеоагент» необходимо установить в гостевую ОС тиражируемой ВМ в случае, если нужно предоставить пользователю возможность перенаправить видеокамеру в ВРМ;
  • « Агент виртуальных смарт-карт» необходимо установить в гостевую ОС тиражируемой ВМ в случае, если нужно предоставить пользователю возможность перенаправить смарт-карты в ВРМ.

Функционирование Termidesk в варианте доставки терминальных сессий или приложений невозможно без компонентов «Универсальный диспетчер», «Менеджер рабочих мест», «Сессионный агент», STAL (для ОС Astra Linux Special Edition). Для получения терминальной сессии или приложения на пользовательской рабочей станции по-прежнему должен быть установлен компонент «Клиент». Установка компонента «Шлюз» опциональна.