Удаленный доступ к ВМ с GPU с помощью Citrix

В данном руководстве подробно описаны шаги, которые необходимо выполнить при подготовке удаленного доступа к виртуальным рабочим столам с помощью технологии, которую предлагает компания Citrix.

Оно будет полезно тем, кто недавно познакомился с технологией виртуализации рабочих столов, так как является сборником полезных команд, собранных из ~10 мануалов, многие из которых доступны на сайтах Citrix, Nvidia, Microsoft, после авторизации.

Данная реализация содержит этапы подготовки удаленного доступа к виртуальным машинам (ВМ) с графическими ускорителями Nvidia Tesla M60 и операционной системой Centos 7.

Итак, начнём.

Подготовка гипервизора для хостинга виртуальных машин

Как скачать и установить XenServer 7.4?
Как добавить XenServer в Citrix XenCenter?
Как скачать и установить Nvidia драйвер?
Как изменить режим Nvidia Tesla M60?
Как примонтировать хранилище?

XenServer 7.4

Ссылка для скачивания XenServer 7.4 доступна, после авторизации на сайте Citrix.

Удаленный доступ к ВМ с GPU с помощью Citrix

Выполним установку XenServer.iso на сервер с 4x NVIDIA Tesla M60 штатным способом. В моем случае iso монтируется через IPMI. Для серверов Dell управление контроллером BMC выполняется через IDRAC. Этапы установки практически совпадают с установкой Linux подобных ОС.

Мой адрес XenServer c GPU — 192.168.1.100

Установим XenCenter.msi на локальный компьютер, с которого будем управлять гипервизорами и виртуальными машинами. Добавим туда сервер с GPU и XenServer, нажав по вкладке «Server», затем «Add». Введем логин и пароль root, указанный при установке XenServer.

Удаленный доступ к ВМ с GPU с помощью Citrix

В XenCenter, после нажатия по имени добавленного гипервизора, будет доступна вкладка «Console». В меню выберем «Remote Service Configuration» и включим авторизацию по SSH — «Enable/Disable Remote Shell».

Nvidia driver

Дам волю эмоциям и скажу, что за всё время работы с vGPU я ни разу не зашел на сайт nvid.nvidia.com с первой попытки. Если авторизация не будет работать, то рекомендую Internet Explorer.

Скачаем zip c vGPU, а так же GPUMode Change Utility:

NVIDIA-GRID-XenServer-7.4-390.72-390.75-391.81.zip
NVIDIA-gpumodeswitch-2020-01.zip

Удаленный доступ к ВМ с GPU с помощью Citrix

Следим за версиями. В названии скаченного архива указана версия подходящих драйверов NVIDIA, которые можно в дальнейшем устанавливать на виртуальные машины. В моем случае это 390.72.

Перекидываем zip-ы на XenServer и распаковываем.

Поменяем режим GPU и установим драйвер vGPU

$ cd NVIDIA-gpumodeswitch-2020-01
$ gpumodeswitch --listgpumodes
$ gpumodeswitch --gpumode graphics
$ cd ../NVIDIA-GRID-XenServer-7.4-390.72-390.75-391.81
$ yum install NVIDIA-vGPU-xenserver-7.4-390.72.x86_64.rpm
$ reboot

Удаленный доступ к ВМ с GPU с помощью Citrix

Mount storage

Настроим общую директорию с помощью NFS на любом компьютере в сети.

$ yum install epel-release
$ yum install nfs-utils libnfs-utils
$ systemctl enable rpcbind
$ systemctl enable nfs-server
$ systemctl enable nfs-lock
$ systemctl enable nfs-idmap
$ systemctl start rpcbind
$ systemctl start nfs-server
$ systemctl start nfs-lock
$ systemctl start nfs-idmap
$ firewall-cmd --permanent --zone=public --add-service=nfs
$ firewall-cmd --permanent --zone=public --add-service=mountd
$ firewall-cmd --permanent --zone=public --add-service=rpc-bind
$ firewall-cmd --reload
$ mkdir -p /nfs/store1
$ chmod -R 777 /nfs/store1
$ touch /nfs/store1/forcheck
$ cat /etc/exports
  ...
  /nfs/store1 192.168.1.0/24(rw,async,crossmnt,no_root_squash,no_all_squash,no_subtree_check)
$ systemctl restart nfs-server

В XenCenter выберем XenServer и на вкладке «Storage» выберем «New SR». Укажем тип хранилища — NFS ISO. Путь должен указывать на общую директорию NFS.

Citrix Master Image на основе Centos 7

Как создать виртуальную машину с Centos 7?

Как подготовить виртуальную машину для создания каталога?

Образ Centos 7

С помощью XenCenter создадим виртуальную машину с GPU. В вкладке «VM» нажмем «New VM».

Удаленный доступ к ВМ с GPU с помощью Citrix

Выбираем необходимые параметры:

VM template — Other install media
Name — template
Install from ISO library — Centos 7 (скачать), выбираем из примонтированного хранилища NFS ISO.
Number of vCPUs — 4
Topology — 1 socket with 4 cores per socket
Memory — 30 Gb
GPU type — GRID M60-4Q
Use this virtual disk — 80 Gb
Network

После создания, виртуальная машина появится в вертикальном списке слева. Нажмём на нее и перейдём во вкладку «Console». Дождемся загрузки инсталятора Centos 7 и выполним необходимые шаги для установки ОС с оболочкой GNOME.

Подготовка образа

Подготовка образа с Centos 7 заняла у меня много времени. В последствии получился набор скриптов, который облегчает первичную настройку Linux и позволит создать каталог виртуальных машин с помощью Citrix Machine Creation Services (MCS).

DHCP сервер, установленный на ws-ad, присвоил новой виртуальной машине IP адрес 192.168.1.129.

Далее приведу основные настройки.

$ hostnamectl set-hostname template
$ yum install -y epel-release
$ yum install -y lsb mc gcc
$ firewall-cmd --permanent --zone=dmz --remove-service=ssh
$ firewall-cmd --permanent --zone=external --remove-service=ssh
$ firewall-cmd --permanent --zone=home --remove-service=ssh
$ firewall-cmd --permanent --zone=home --remove-service=mdns
$ firewall-cmd --permanent --zone=home --remove-service=samba-client
$ firewall-cmd --permanent --zone=home --remove-service=dhcpv6-client
$ firewall-cmd --permanent --zone=internal --remove-service=dhcpv6-client
$ firewall-cmd --permanent --zone=internal --remove-service=samba-client
$ firewall-cmd --permanent --zone=internal --remove-service=mdns
$ firewall-cmd --permanent --zone=internal --remove-service=ssh
$ firewall-cmd --permanent --zone=public --remove-service=ssh
$ firewall-cmd --permanent --zone=public --remove-service=dhcpv6-client
$ firewall-cmd --permanent --zone=work --remove-service=dhcpv6-client
$ firewall-cmd --permanent --zone=work --remove-service=ssh
$ firewall-cmd --permanent --zone=public --add-service=ssh
$ firewall-cmd --complete-reload

В XenCenter в вкладке «Console» смонтируем guest-tools.iso в DVD привод виртуальной машины и выполним установки XenTools для Linux.

$ mount /dev/cdrom /mnt
$ /mnt/Linux/install.sh
$ reboot

При настройке XenServer мы использовали архив NVIDIA-GRID-XenServer-7.4-390.72-390.75-391.81.zip, скаченный с сайта NVIDIA, в котором, помимо NVIDIA драйвера для XenServer, находится нужный нам драйвер NVIDIA для клиентов vGPU. Скачаем и установим его на ВМ.

$ cat /etc/default/grub
  GRUB_TIMEOUT=5
  GRUB_DISTRIBUTOR="$(sed 's, release .*$,,g' /etc/system-release)"
  GRUB_DEFAULT=saved
  GRUB_DISABLE_SUBMENU=true
  GRUB_TERMINAL_OUTPUT="console"
  GRUB_CMDLINE_LINUX="rhgb quiet modprobe.blacklist=nouveau"
  GRUB_DISABLE_RECOVERY="true"
$ grub2-mkconfig -o /boot/grub2/grub.cfg
$ wget http://vault.centos.org/7.6.1810/os/x86_64/Packages/kernel-devel-3.10.0-957.el7.x86_64.rpm
$ yum install kernel-devel-3.10.0-957.el7.x86_64.rpm
$ reboot
$ init 3
$ NVIDIA-GRID-XenServer-7.4-390.72-390.75-391.81/NVIDIA-Linux-x86_64-390.75-grid.run
$ cat /etc/nvidia/gridd.conf
  ServerAddress=192.168.1.111
  ServerPort=7070
  FeatureType=1
$ reboot

Скачаем Linux Virtual Delivery Agent 1811 (VDA) для Centos 7. Ссылка для скачивания Linux VDA доступна, после авторизации на сайте Citrix.

$ yum install -y LinuxVDA-1811.el7_x.rpm
$ cat /var/xdl/mcs/mcs.conf
  #!/bin/bash
  dns1=192.168.1.110
  NTP_SERVER=some.ntp.ru
  AD_INTEGRATION=winbind
  SUPPORT_DDC_AS_CNAME=N
  VDA_PORT=80
  REGISTER_SERVICE=Y
  ADD_FIREWALL_RULES=Y
  HDX_3D_PRO=Y
  VDI_MODE=Y
  SITE_NAME=domain.ru
  LDAP_LIST=ws-ad.domain.ru
  SEARCH_BASE=DC=domain,DC=ru
  START_SERVICE=Y
$ /opt/Citrix/VDA/sbin/deploymcs.sh
$ echo "exclude=kernel* xorg*" >> /etc/yum.conf

В Citrix Studio создадим Machine Catalog и Delivery group. Перед этим необходимо установить и настроить Windows Server.

Windows Server с Domain Controller

Как скачать и установить Windows Server 2016?
Как установить компоненты Windows Server?
Как настроить Active Directory, DHCP и DNS?

Windows server 2016

Так как виртуальной машине (ВМ) с Windows Server не нужны GPU, мы будем использовать в качестве гипервизора сервер без GPU. По аналогии с описанием выше, установим еще один XenServer для хостинга системных виртуальных машин.

После этого создадим виртуальную машину для Windows Server с Active Directory.

Скачаем Windows Server 2016 с сайта Microsoft. Лучше пройти по ссылке с помощью Internet Explorer.

Удаленный доступ к ВМ с GPU с помощью Citrix

С помощью XenCenter создадим виртуальную машину. В вкладке «VM» нажмем «New VM».

Удаленный доступ к ВМ с GPU с помощью Citrix

Выбираем необходимые параметры:

VM template — Windows Server 2016 (64-bit)
Name — ws-ad.domain.ru
Install from ISO library — WindowsServer2016.iso, выбираем из примонтированного хранилища NFS ISO.
Number of vCPUs — 4
Topology — 1 socket with 4 cores per socket
Memory — 20 Gb
GPU type — none
Use this virtual disk — 100 Gb
Network

После создания, виртуальная машина появится в вертикальном списке слева. Нажмём на нее и перейдём во вкладку «Console». Дождем загрузки инсталятора Windows Server и выполним необходимые шаги для установки ОС.

Установим в ВМ XenTools. Правой кнопкой по ВМ, далее «Install Citrix VM Tools…». После этого будет примонтиван образ, который нужно запустить и установить XenTools. По окончанию установки потребуется перезагрузка ВМ.

Настроим сетевой адаптер:

IP адрес — 192.168.1.110
Маска — 255.255.255.0
Шлюз — 192.168.1.1
DNS1 — 8.8.8.8
DNS2 — 8.8.4.4

Если Windows Server не активирован, то выполним активацию. Ключ можно взять там же, откуда скачивали образ.

[PowerShell]$ slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx

Настроим имя компьютера. В моем случае это ws-ad.

Установка компонентов

В диспетчере серверов выберем «Добавить роли и компоненты». Отметим для установки DHCP-сервер, DNC-сервер и Доменные службы Active Directory. Отметим галочку «Перезагрузить автоматически».

Удаленный доступ к ВМ с GPU с помощью Citrix

Настройка Active Directoy

После перезагрузки ВМ, жмем «Поднять этот сервер до уровня контроллера домена» и добавим новый лес domain.ru.

Настройка DHCP сервера

На верхней панели диспетчера серверов нажмем на восклицательный знак, чтобы сохранить изменения при установки DHCP сервера.

Перейдем к настройкам DHCP сервера.

Удаленный доступ к ВМ с GPU с помощью Citrix

Создадим новую область 192.168.1.120-130. Остальное не меняем. Выберем «Настроить параметры DHCP сейчас» и введем IP адрес ws-ad (192.168.1.110) в качестве шлюза и DNS, которые будут указываться в настройках сетевых адаптеров виртуальных машин из каталога.

Настройка DNS сервера

Перейдем к настройкам DNS сервер.

Удаленный доступ к ВМ с GPU с помощью Citrix

Создадим новую зону прямого просмотра — primary zone, для всех DNS серверов в домене domain.ru. Больше ничего не меняем.

Создадим новую зону обратного просмотра, выбрав аналогичные параметры.

В свойствах DNS сервера, во вкладке «Дополнительно», установим галочку «Отключить рекурсию».

Создание тестового пользователя

Перейдем в «Центр администрирования Active Directory»

Удаленный доступ к ВМ с GPU с помощью Citrix

В разделе «Users» справа нажмем «Создать». Введем имя, например test, и внизу нажмем «ОК».

Удаленный доступ к ВМ с GPU с помощью Citrix

Выберем созданного пользователя и в вертикальном меню справа выберем «Сбросить пароль». Оставим галочку «Требовать смены пароля при следующем входе в систем».

Windows Server с Citrix Delivery Controller

Как скачать и установить Windows Server 2016?
Как скачать и установить Citrix Delivery Controller?
Как установить и настроить Citrix License Manager?
Как установить и настроить NVIDIA License Manager?

Windows server 2016

Так как виртуальной машине (ВМ) с Windows Server не нужны GPU, мы будем использовать в качестве гипервизора сервер без GPU.

Скачаем Windows Server 2016 с сайта Microsoft. Лучше пройти по ссылке с помощью Internet Explorer.

Удаленный доступ к ВМ с GPU с помощью Citrix

С помощью XenCenter создадим виртуальную машину. В вкладке «VM» нажмем «New VM».

Удаленный доступ к ВМ с GPU с помощью Citrix

Выбираем необходимые параметры:

VM template — Windows Server 2016 (64-bit)
Name — ws-dc
Install from ISO library — WindowsServer2016.iso, выбираем из примонтированного хранилища NFS ISO.
Number of vCPUs — 4
Topology — 1 socket with 4 cores per socket
Memory — 20 Gb
GPU type — none
Use this virtual disk — 100 Gb
Network

После создания, виртуальная машина появится в вертикальном списке слева. Нажмём на нее и перейдём во вкладку «Console». Дождемся загрузки инсталятора Windows Server и выполним необходимые шаги для установки ОС.

Установим в ВМ XenTools. Правой кнопкой по ВМ, далее «Install Citrix VM Tools…». После этого будет примонтиван образ, который нужно запустить и установить XenTools. По окончанию установки потребуется перезагрузка ВМ.

Настроим сетевой адаптер:

IP адрес — 192.168.1.111
Маска — 255.255.255.0
Шлюз — 192.168.1.1
DNS1 — 8.8.8.8
DNS2 — 8.8.4.4

Если Windows Server не активирован, то выполним активацию. Ключ можно взять там же, откуда скачивали образ.

[PowerShell]$ slmgr -ipk xxxxx-xxxxx-xxxxx-xxxxx-xxxxx

Настроим имя компьютера. В моем случае это ws-dc.

Добавим ВМ в домен domen.ru, перезагрузим и авторизуемся под доменной учетной записью администратора DOMENAdministrator.

Citrix delivery controller

Скачаем Citrix Virtual Apps and Desktops 1811 на ws-dc.domain.ru. Ссылка для скачивания Citrix Virtual Apps and Desktops доступна, после авторизации на сайте Citrix.

Удаленный доступ к ВМ с GPU с помощью Citrix

Смонтируем скаченный iso и запустим. Выберем «Citrix Virtual Apps and Desktops 7». Далее нажмем «Get started». Возможно потребуется перезагрузка.

Удаленный доступ к ВМ с GPU с помощью Citrix

В моем случае достаточно выбрать для установки следующие компоненты:

Delivery Controller
Studio
License Server
StoreFront

Больше ничего не меняем и жмем «Установить». Не однократно потребуется перезагрузка, после чего установка будет продолжена.

Как только установка будет завершена запустится Citrix Studio — среда управления всем хозяйством Citrix.

Удаленный доступ к ВМ с GPU с помощью Citrix

Настройка Citrix Site

Выберем первый раздел из трёх — Site setup. При настройке укажем Site Name — domain.

В разделе «Connection» укажем данные для подключения гипервизора с GPU:

Connection address — 192.168.1.100
User name — root
Password — yourpassword
Connection Name — m60

Store management — Use storage local to the hypervisor.

Name for these resources — m60.

Select networks.

Select a GPU type and group — GRID M60-4Q.

Настройка Citrix Machine Catalogs

При настройке второго раздела — Machine Catalogs, выберем Single-session OS (Desktop OS).

Master Image — выберем подготовленный образ виртуальной машины и версию Citrix Virtual Apps and Desktops — 1811.

Выберем количество виртуальных машин каталоге, например 4.

Укажем схему, по которой виртуальным машинам будут присваиваться имена, в моем случае это desktop##. В этом случае будут созданы 4 ВМ с именами desktop01-04.

Machine Catalog name — m60.

Machine Catalog description — m60.

После создания Machine Catalog-а с четыремя ВМ, их можно будет найти в вертикальном списке XenCenter, слева.

Citrix Delivery Group

Третий раздел начинается с выбора количества ВМ, к которым следует предоставить доступ. Я укажу все четыре.

В разделе «Desktops» нажмем «Add», чтобы добавить группу ВМ, к которым мы предоставим доступ. Display name — m60.

Delivery group name — m60.

После настройки трех основных разделов, главное окно Citrix Studio будет выглядеть примерно так

Удаленный доступ к ВМ с GPU с помощью Citrix

Citrix license manager

Скачаем файл лицензии через личный кабинет на сайте Citrix.

В вертикальном списке слева выберем All Licensing Tools (Legacy). Перейдем на вкладку «Activate and Allocate Licenses». Выберем лицензии Citrix VDA и нажмем «Continue». Укажем имя нашего Delivery Controllera — ws-dc.domain.ru и количество лицензий — 4. Жмем «Continue». Скачаем сгенерированный файл лицензии на ws-dc.domain.ru.

Удаленный доступ к ВМ с GPU с помощью Citrix

В левом вертикальном списке Citrix Studio выберем раздел «Licensing». В правом вертикальном списке нажмем «License Management Console». В открывшимся окне браузера введем данные для авторизации доменного пользователя DOMENAdministrator.

В Citrix Licensing Manager перейдем на вкладку «Install License». Для добавления файла лицензии нужно выбрать «Use downloaded license file».

Удаленный доступ к ВМ с GPU с помощью Citrix

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

Если после перезагрузки ws-dc возникают проблемы различного характера, то рекомендую первым делом проверить запущенные сервисы. Привожу список сервисов Citrix, которые должны автоматически запускаться, после перезагрузки ВМ:

SQL Server (SQLEXPRESS)
Citrix Configuration Service
Citrix Delegated Administration Service
Citrix Analytics
Citrix Broker Service
Citrix Configuration Logging Service
Citrix AD Identity Service
Citrix Host Service
Citrix App Library
Citrix Machine Creation Service
Citrix Monitor Service
Citrix Storefront Service
Citrix Trust Service
Citrix Environment Test Service
Citrix Orchestration Service
FlexNet License Server -nvidia

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

HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControl
Name : ServicesPipeTimeout
Value :240000

Name : WaitToKillServiceTimeout
Value : 20000

Nvidia licence manager

Скачаем менеджер лицензий NVIDIA для Windows, через личный кабинет на сайте nvid.nvidia.com. Лучше заходить через Internet Explorer.

Удаленный доступ к ВМ с GPU с помощью Citrix

Установим его на ws-dc. Для этого сначала потребуется установить JAVA и добавить переменную окружения JAVA_HOME. После этого можно запустить setup.exe для установки NVIDIA License Manager.

Удаленный доступ к ВМ с GPU с помощью Citrix

Создадим сервер, сгенерируем и скачаем файл лицензии в личном кабинете на сайте nvid.nvidia.com. Перекинем файл лицензии на ws-dc.

Удаленный доступ к ВМ с GPU с помощью Citrix

Используя браузер, авторизуемся в веб-интерфейсе менеджера лицензий NVIDIA, доступном по адресу localhost:8080/licserver и добавим файл лицензии.

Удаленный доступ к ВМ с GPU с помощью Citrix

Активные сессии, использующие vGPU, можно посмотреть в разделе «Licensed Clients».

Удаленный доступ к Citrix machine catalog

Как установить Citrix Receiver?
Как подключиться к виртуальному рабочему столу?

На рабочем компьютере откроем браузер, в моем случае это Chrome, и перейдем по адресу веб интерфейса Citrix StoreWeb

http://192.168.1.111/Citrix/StoreWeb

Если Citrix Recever еще не установлен, то нажмем «Обнаружить Receiver»

Удаленный доступ к ВМ с GPU с помощью Citrix

Внимательно прочитаем лицензионное соглашение, загрузим и установим Citrix Receiver

Удаленный доступ к ВМ с GPU с помощью Citrix

После установки, вернемся в браузер и нажмем «Продолжить»

Удаленный доступ к ВМ с GPU с помощью Citrix

Далее, в браузере Chrome открывается уведомление, нажмите «Открыть приложение Citrix Receiver Launcher», а затем «Обнаружить снова» или «Уже установлено»

Удаленный доступ к ВМ с GPU с помощью Citrix

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

Удаленный доступ к ВМ с GPU с помощью Citrix

После авторизации перейдем на вкладку «Приложения» и выберем каталог «M60»

Удаленный доступ к ВМ с GPU с помощью Citrix

Скачаем предлагаемый файл с расширением .ica. После двойного нажатия по нему, откроется окно в Desktop Veiwer с рабочим столом Centos 7

Удаленный доступ к ВМ с GPU с помощью Citrix

Источник: habr.com