Удаленный доступ к ВМ с 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.
Выполним установку 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.
В XenCenter, после нажатия по имени добавленного гипервизора, будет доступна вкладка «Console». В меню выберем «Remote Service Configuration» и включим авторизацию по SSH — «Enable/Disable Remote Shell».
Установка дравера NVIDIA
Дам волю эмоциям и скажу, что за всё время работы с vGPU я ни разу не зашел на сайт nvid.nvidia.com с первой попытки. Если авторизация не будет работать, то рекомендую Internet Explorer.
Скачаем zip c vGPU, а так же GPUMode Change Utility:
Следим за версиями. В названии скаченного архива указана версия подходящих драйверов 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
Настройка общей директории
Настроим общую директорию с помощью 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.
Подготовка Master Image на основе Centos 7
Как создать виртуальную машину с Centos 7?
Как подготовить виртуальную машину для создания каталога?
Образ Centos 7
С помощью XenCenter создадим виртуальную машину с GPU. В вкладке «VM» нажмем «New VM».
Выбираем необходимые параметры:
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-d...
$ 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.
С помощью XenCenter создадим виртуальную машину. В вкладке «VM» нажмем «New VM».
Выбираем необходимые параметры:
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. Отметим галочку «Перезагрузить автоматически».
Настройка Active Directoy
После перезагрузки ВМ, жмем «Поднять этот сервер до уровня контроллера домена» и добавим новый лес domain.ru.
Настройка DHCP сервера
На верхней панели диспетчера серверов нажмем на восклицательный знак, чтобы сохранить изменения при установки DHCP сервера.
Перейдем к настройкам DHCP сервера.
Создадим новую область 192.168.1.120-130. Остальное не меняем. Выберем «Настроить параметры DHCP сейчас» и введем IP адрес ws-ad (192.168.1.110) в качестве шлюза и DNS, которые будут указываться в настройках сетевых адаптеров виртуальных машин из каталога.
Настройка DNS сервера
Перейдем к настройкам DNS сервер.
Создадим новую зону прямого просмотра — primary zone, для всех DNS серверов в домене domain.ru. Больше ничего не меняем.
Создадим новую зону обратного просмотра, выбрав аналогичные параметры.
В свойствах DNS сервера, во вкладке «Дополнительно», установим галочку «Отключить рекурсию».
Создание тестового пользователя
Перейдем в «Центр администрирования Active Directory»
В разделе «Users» справа нажмем «Создать». Введем имя, например test, и внизу нажмем «ОК».
Выберем созданного пользователя и в вертикальном меню справа выберем «Сбросить пароль». Оставим галочку «Требовать смены пароля при следующем входе в систем».
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.
С помощью XenCenter создадим виртуальную машину. В вкладке «VM» нажмем «New VM».
Выбираем необходимые параметры:
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, перезагрузим и авторизуемся под доменной учетной записью администратора DOMEN\Administrator.
Citrix delivery controller
Скачаем Citrix Virtual Apps and Desktops 1811 на ws-dc.domain.ru. Ссылка для скачивания Citrix Virtual Apps and Desktops доступна, после авторизации на сайте Citrix.
Смонтируем скаченный iso и запустим. Выберем «Citrix Virtual Apps and Desktops 7». Далее нажмем «Get started». Возможно потребуется перезагрузка.
В моем случае достаточно выбрать для установки следующие компоненты:
Delivery Controller
Studio
License Server
StoreFront
Больше ничего не меняем и жмем «Установить». Не однократно потребуется перезагрузка, после чего установка будет продолжена.
Как только установка будет завершена запустится Citrix Studio — среда управления всем хозяйством 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 будет выглядеть примерно так
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.
В левом вертикальном списке Citrix Studio выберем раздел «Licensing». В правом вертикальном списке нажмем «License Management Console». В открывшимся окне браузера введем данные для авторизации доменного пользователя DOMEN\Administrator.
В Citrix Licensing Manager перейдем на вкладку «Install License». Для добавления файла лицензии нужно выбрать «Use downloaded license file».
Установка компонентов 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_MACHINE\SYSTEM\CurrentControlSet\Control
Name : ServicesPipeTimeout
Value :240000
Name : WaitToKillServiceTimeout
Value : 20000
Nvidia licence manager
Скачаем менеджер лицензий NVIDIA для Windows, через личный кабинет на сайте nvid.nvidia.com. Лучше заходить через Internet Explorer.
Установим его на ws-dc. Для этого сначала потребуется установить JAVA и добавить переменную окружения JAVA_HOME. После этого можно запустить setup.exe для установки NVIDIA License Manager.
Создадим сервер, сгенерируем и скачаем файл лицензии в личном кабинете на сайте nvid.nvidia.com. Перекинем файл лицензии на ws-dc.
Используя браузер, авторизуемся в веб-интерфейсе менеджера лицензий NVIDIA, доступном по адресу http://localhost:8080/licserver и добавим файл лицензии.
Активные сессии, использующие vGPU, можно посмотреть в разделе «Licensed Clients».
Удаленный доступ к Citrix Machine Catalog
Как установить Citrix Receiver?
Как подключиться к виртуальному рабочему столу?
Ограничения pikabu не позволяют мне добавить больше информации в один пост. Продолжение следует.