VDI/OpenUDS

Материал из ALT Linux Wiki
Stub.png
Данная страница находится в разработке.
Эта страница ещё не закончена. Информация, представленная здесь, может оказаться неполной или неверной.


Введение

OpenUDS это много-платформенный брокер подключений для создания и управления виртуальными рабочими местами и приложениями. Основные компоненты решения VDI на базе OpenUDS:

  1. OpenUDS Server (openuds-server) - брокер подключений пользователей, а так же интерфейс администратора для настройки.
  2. SQL Server. Для работы django приложения, которым является openuds-server необходим SQL сервер, например mysql или mariadb. Может быть установлен на отдельном сервере.
  3. Платформа для запуска клиентских окружений и приложений. OpenUDS совместима со множеством систем виртуализации: PVE, OpenNebula, oVirt, OpenStack. Так же возможно использование с отдельным сервером без виртуализации (аналог терминального решения).
  4. OpenUDS Client (openuds-client) - клиентское приложения для подключения к брокеру соединений и дальнейшего получения доступа к виртуальному рабочему окружению
  5. OpenUDS Tunnel (openuds-tunnel) - решение для туннелирования обращений от клиента к виртуальному рабочему окружению. Предназначено для предоставления доступа из недоверенных сегментов сети, например из Интернет. Устанавливается на отдельный сервер.
  6. OpenUDS Actor (openuds-actor) - ПО для гостевых виртуальных машин, реализует связку виртуальной машины и брокера соединений.

Установка

Установка mysql/mariadb

# apt-get install mariadb
# systemctl enable --now mariadb.service
# mysql_secure_installation
# mysql -u root
 
mysql> CREATE DATABASE dbuds CHARACTER SET utf8 COLLATE utf8_general_ci;
mysql> CREATE USER 'dbuds'@'%' IDENTIFIED BY 'password';
mysql> GRANT ALL PRIVILEGES ON dbuds.* TO 'dbuds'@'%';
mysql> FLUSH PRIVILEGES;

OpenUDS Server

Установка OpenUDS Server

# apt-get install openuds-server-nginx

Будут установлены:

  • openuds-server — django приложение;
  • gunicorn — сервер приложений. Обеспечивает запуск django как стандартного WSGI приложения;
  • nginx — http-сервер, используется в качестве reverse-proxy для доступа к django приложению, запущенному с помощью gunicorn.

Настройка OpenUDS Server

  • отредактировать /etc/openuds/settings.py, указав корректные данные для подключения к SQL серверу:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql', 
            'OPTIONS': {
                'isolation_level': 'read committed',
            },
            'NAME': 'dbuds',  # Or path to database file if using sqlite3.
            'USER': 'dbuds',  # Not used with sqlite3.
            'PASSWORD': 'password',  # Not used with sqlite3.
            'HOST': 'localhost',  # Set to empty string for localhost. Not used with sqlite3.
            'PORT': '3306',  # Set to empty string for default. Not used with sqlite3.
        }
    }
    
  • "заполнить" базу данных первоначальными данными:
# su -s /bin/bash - openuds
$ cd /usr/share/openuds
$ python3 manage.py migrate
  • запустить gunicorn:
# systemctl enable --now openuds-web.service
  • запустить nginx:
# ln -s ../sites-available.d/openuds.conf /etc/nginx/sites-enabled.d/openuds.conf
# systemctl enable --now nginx.service
  • запустить менеджер задач OpenUDS
# systemctl enable --now openuds-taskmanager.service
  • подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>
Примечание: Имя/пароль по умолчанию: root/udsmam0

Чтобы получить доступ к администрированию OpenUDS следует в меню пользователя выбрать пункт «Dashboard»:

OpenUDS. Меню пользователя


Дополнительная информация о настройках django приложений:

https://docs.djangoproject.com/en/2.2/howto/deployment/wsgi/
https://docs.djangoproject.com/en/2.2/ref/databases/

OpenUDS Tunneler

Установка OpenUDS Tunnel

Установка OpenUDS Tunnel должна выполняться на отдельной от OpenUDS Server системе.

# apt-get install openuds-tunnel

Будут установлены:

  • openuds-tunnel — java приложение, основанное на проекте guacamole;
  • guacamole-server
  • tomcat
  • libnss_uds
  • pam_uds

Настройка OpenUDS Tunnel

  • указать адрес OpenUDS сервера (брокера) в /etc/uds.conf и в /etc/pam.d/sshd_uds;
  • запустить сервисы:
# systemctl enable --now sshd_uds guacd tomcat

Настройка

Подключение системы виртуализации

В разделе «Services» подключаем один из «Service providers»:

  • PVE Platform Provider
  • OpenNebula Platform Provider
  • OpenStack Platform Provider
  • oVirt/RHEV Platform Provider
  • Static IP Machine Provider (отдельный сервер без виртуализации)

OpenUDS. Подключение системы виртуализации

OpenNebula

Минимальные параметры для настройки «OpenNebula Platform Provider»: название, IP-адрес сервера OpenNebula (поле «Host»), порт подключения, имя пользователя (с правами администратора) и пароль. Используя кнопку «Тест», можно убедиться, что соединение установлено правильно.

OpenUDS. Подключение системы виртуализации OpenNebula

После интеграции платформы OpenNebula в OpenUDS необходимо создать базовую службу типа «OpenNebula Live Images». Для этого дважды щелкните мышью по строке созданного поставщика услуг или в контекстном меню поставщика выберите «Detail»:

OpenUDS. Контекстное меню Service providers

На вкладке «Services» нажмите «New»→«OpenNebula Live Images». Заполните минимальные параметры конфигурации (вкладки «Main» и «Machine»): название службы, хранилище, базовый шаблон (шаблон ВМ, используемый системой OpenUDS для развертывания виртуальных рабочих столов), базовое название для клонов с этой машины (например, Desk-kwork-), количество цифр счетчика, прикрепленного к базовому имени рабочих столов (например, если Name Length = 3, названия сгенерированных рабочих столов будет: Desk-kwork-000, Desk-kwork-001 ... Desk-kwork-999).

OpenUDS. Создание службы типа «OpenNebula Live Images». Вкладка «Main» OpenUDS. Создание службы типа «OpenNebula Live Images». Вкладка «Machine»

Настройка аутентификации пользователей

В разделе «Autentificators» выбираем тип аутентификации пользователей. Можно выбрать как внешние источники (Active Directory, OpenLDAP и т. д.), так и внутренние (внутренняя база данных, IP-аутентификация):

  • Internal Database
  • Regex LDAP Authenticator
  • IP Autentificator

OpenUDS. Выбор типа аутентификации пользователей

Внутренняя база данных

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

Минимальные параметры конфигурации (вкладка «Main»): имя аутентификатора, приоритет и метка.

После того, как аутентификатор типа «Internal Database» создан, нужно будет зарегистрировать пользователей и группы пользователей. Для этого следует выбрать аутентификатор «Internal Database», во вкладке «Groups» создать группу пользователей, затем во вкладке «Users» создать пользователей.

OpenUDS. «Internal Database» - пользователи

Regex LDAP Authenticator

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

Параметры конфигурации:

  • вкладка «Main»: название аутентификатора, приоритет, метка, IP-адрес и порт сервера LDAP, тайм-аут;
  • вкладка «Credentials»: имя пользователя с правами чтения на сервере (формат uid=...,ou=....,dc=...,dc=...), пароль;
  • вкладка «Ldap info»: база — каталог поиска, класс пользователя.

IP-аутентификаци

Этот тип аутентификации обеспечивает доступ клиентов к рабочим столам и виртуальным приложениям по их IP-адресу.

Минимальные параметры конфигурации (вкладка «Main»): имя аутентификатора, приоритет и метка.

После того, как аутентификатор типа «IP Autentificator» создан, следует создать группы пользователей. Группа может представлять собой диапазон IP-адресов (192.168.0.1-192.168.0.55), подсеть (192.168.0.0/24) или отдельные IP-адреса (192.168.0.33,192.168.0.50)

OpenUDS. IP Autentificator - создание группы пользователей

Настройка групп пользователей

На вкладке "Groups" необходимо создать группы пользователей с указанием какую базу пользователей использовать.

Настройка «OS Manager»

OpenUDS. Настройка «OS Manager»

«Linux OS Manager» используется для виртуальных рабочих столов на базе Linux. Он выполняет задачи переименования и управления сеансами виртуальных рабочих столов.

«Windows Basic OS Manager» используется для виртуальных рабочих столов на базе Windows, которые не являются частью домена AD.

Минимальные настройки для «Linux OS Manager» и «Windows Basic OS Manager»:

  • «Name» — название;
  • «Logout Action» — действие, которое OpenUDS будет выполнять на виртуальном рабочем столе при закрытии сеанса пользователя («Keep service assigned» = постоянная ВМ, при выходе пользователя, система не предпринимает никаких действий, при повторном входе пользователю будет назначен тот же рабочий стол. «Remove service» = непостоянная ВМ, при выходе пользователя из системы, система уничтожит рабочий стол. «Keep service assigned even on new publication» — сохранение назначенной службы даже при создании новой публикации «Service Pool»);
  • «Max. Idle time» («Время простоя») — время (в секундах) простоя виртуального рабочего стола. По истечении этого времени OpenUDS Actor автоматически закроет сеанс. Отрицательные значения и значения менее 300 секунд отключают эту опцию.

OpenUDS. Настройка «OS Manager»

Настройка «Transports»

Для подключения к виртуальным рабочим столам необходимо создать «Transports». Это приложения, которые будут выполняться на клиенте и будут отвечать за предоставление доступа к реализованной службе.

OpenUDS. Настройка «Transports»

Можно создать один транспорт для различных «пулов» или установить по одному для каждого «пула».

При создании «Transports» необходимо выбрать его тип: «Direct» — используется, если пользователь имеет доступ к виртуальным рабочим столам из внутренней сети (например, LAN, VPN и т. д.); «Tunneled» — используется, если у пользователя нет прямого подключения к рабочему столу.

RDP (direct)

«RDP» позволяет пользователям получать доступ к виртуальным рабочим столам Windows/Linux. И на клиентах подключения, и на виртуальных рабочих столах должен быть установлен и включен протокол RDP (для виртуальных рабочих столов Linux необходимо использовать XRDP).

SPICE (direct)

«SPICE» позволяет пользователям получать доступ к виртуальным рабочим столам Windows/Linux. На клиентах подключения должен быть установлен клиент «SPICE» (Virt-Manager). Транспортный протокол «SPICE» может использоваться только с oVirt/RHEV и OpenNebula.

X2Go (direct)

«X2Go» позволяет пользователям получать доступ к виртуальным рабочим столам Linux. И на клиентах подключения (клиент), и на виртуальных рабочих столах (сервере) должен быть установлен и включен «X2Go».


Настройка «Service Pools»

После того, как был создан и настроен хотя бы один Service provider (с базой службы), аутентификатор (с пользователем и группой), «Manager OS» и «транспорт», нужно создать Service Pool для публикации виртуальных рабочих столов.

OpenUDS. Новый Service Pool

Вкладка «Main»:

  • «Name» — название службы;
  • «Base service» — служба, созданная ранее в «Поставщике услуг»;
  • «OS Manager».

Вкладка «Display»:

  • «Visible» — если этот параметр отключен, пул не будет отображаться у пользователей;
  • «Associated Image» — Изображение, связанное с услугой. Изображение должно быть предварительно добавлено в репозиторий изображений (раздел «Tools»→«Gallery»);
  • «Pool group» — позволяет группировать различные службы. Группа должна быть предварительно создана в разделе «Pools»→«Groups».

Вкладка «Availability»:

  • «Initial available services» — минимальное количество виртуальных рабочих столов, созданных, настроенных и назначенных/доступных для службы;
  • «Services to keep in cache» — количество доступных виртуальных рабочих мест. Они всегда будут настроены и готовы к назначению пользователю (они будут автоматически создаваться до тех пор, пока не будет достигнуто максимальное количество машин, указанное в поле «Maximum number of services to provide»);
  • «Maximum number of services to provide» — максимальное количество виртуальных рабочих столов, созданных системой в «пуле служб» (рабочие столы, созданные в кэше L2, не учитываются).

Нажать кнопку «Save» и система начнет создавать виртуальные рабочие столы на основе настроенного кеша (вкладка «Availability»).

После создания пула, в настройках:

  • на вкладке «Groups» назначить группы доступа (выбрать аутентификатор и группу, которая будет иметь доступ к этому пулу служб):
    OpenUDS. Назначение группы пулу служб
  • на вкладке «Transports» выбрать способы подключения пользователей к рабочему столу:
    OpenUDS. «Service Pools» - выбор способов подключения

Подготовка шаблона виртуальной машины

Требования к шаблону виртуальной машины:

  • установить openuds-actor:
# apt-get install openuds-actor
  • в настройках openuds-actor (/etc/udsactor/udsactor.cfg) указать IP-адрес сервера UDS и Master Key, соответствующий серверу OpenUDS:
[uds]
host = 192.168.0.191
logLevel = 30000
ssl = False
masterKey = b578d41ac4c6513bbda188cdd57f3e20
Примечание: Получить UDS Master Key можно в панели администрирование UDS (раздел «Tools»→«Configuration», вкладка «Security», поле «Master Key»):

OpenUDS. Master Key

  • установить и настроить один из вариантов удаленного доступа:

Подключение пользователя к виртуальному рабочему месту

  • на клиенте необходимо установить openuds-client
# apt-get install openuds-client
  • подключиться к серверу OpenUDS с помощью браузера http://<openuds_address>, имя/пароль должен указать администратор, возможен как из внутренней базы OpenUDS, так и из внешней, например ldap
  • в web-интерфейсе пользователя видны виртуальные машины (или шаблоны) только опубликованные администратором:
    OpenUDS. Подключение пользователя к виртуальному рабочему месту
  • выбрав нужную ВМ, автоматически загрузится openuds-client и запустит приложение для просмотра удаленного рабочего стола
Примечание: Если для подключения к службе существует более одного типа транспорта, то правом верхнем углу службы появляется кнопка. Если щелкнуть непосредственно по службе, будет вызван транспорт по умолчанию (транспорт с меньшим значением в поле приоритет). Для того чтобы выбрать другой транспорт, можно его выбрать в раскрывающемся списке.


TODO:
Отказоустойчивое решение