Acesso remoto a VMs com GPU usando Citrix

Neste guia, são descritos detalhadamente os passos necessários para preparar o acesso remoto a áreas de trabalho virtuais usando a tecnologia oferecida pela Citrix.

Ele será útil para aqueles que recentemente conheceram a tecnologia de virtualização de áreas de trabalho, pois é uma coleção de comandos úteis reunidos de ~10 manuais, muitos dos quais estão disponíveis nos sites da Citrix, Nvidia, Microsoft, após autenticação.

Esta implementação contém as etapas de preparação do acesso remoto às máquinas virtuais (VMs) com aceleradores gráficos Nvidia Tesla M60 e o sistema operacional CentOS 7.

Então, vamos começar.

Preparação do hipervisor para hospedar máquinas virtuais

Como baixar e instalar o XenServer 7.4?
Como adicionar o XenServer ao Citrix XenCenter?
Como baixar e instalar o driver Nvidia?
Como mudar o modo da Nvidia Tesla M60?
Como montar o armazenamento?

XenServer 7.4

Link para download XenServer 7.4 disponível após autenticação no site Citrix.

Acesso remoto a VMs com GPU usando Citrix

Vamos instalar o XenServer.iso no servidor com 4x NVIDIA Tesla M60 de forma padrão. No meu caso, o iso é montado através do IPMI. Para servidores Dell, o gerenciamento do controlador BMC é feito através do IDRAC. As etapas de instalação são praticamente iguais à instalação de sistemas operacionais Linux semelhantes.

Meu endereço do XenServer com GPU é 192.168.1.100

Instalaremos o XenCenter.msi no computador local, de onde gerenciaremos os hipervisores e máquinas virtuais. Adicionaremos lá o servidor com GPU e XenServer clicando na guia 'Server' e depois em 'Add'. Inserimos o login e a senha root fornecidos durante a instalação do XenServer.

Acesso remoto a VMs com GPU usando Citrix

No XenCenter, após clicar no nome do hipervisor adicionado, a guia 'Console' estará disponível. No menu, selecionamos 'Remote Service Configuration' e habilitamos a autenticação por SSH — 'Enable/Disable Remote Shell'.

Driver Nvidia

Vou me deixar levar e dizer que durante todo o tempo que trabalhei com vGPU, nunca consegui acessar o site nvid.nvidia.com na primeira tentativa. Se a autenticação não funcionar, recomendo o Internet Explorer.

Baixaremos o zip com vGPU, bem como o GPUMode Change Utility:

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

Acesso remoto a VMs com GPU usando Citrix

Fique atento às versões. No nome do arquivo zip baixado, está indicada a versão dos drivers NVIDIA compatíveis que podem ser instalados posteriormente nas máquinas virtuais. No meu caso, é 390.72.

Transferimos os zips para o XenServer e extraímos.

Mudaremos o modo da GPU e instalaremos o driver 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

Acesso remoto a VMs com GPU usando Citrix

Montar armazenamento

Vamos configurar um diretório compartilhado usando NFS em qualquer computador na rede.

$ 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

No XenCenter, selecione o XenServer e na aba "Storage" escolha "New SR". Indique o tipo de armazenamento – NFS ISO. O caminho deve apontar para o diretório compartilhado NFS.

Imagem Mestre Citrix baseada em Centos 7

Como criar uma máquina virtual com Centos 7?

Como preparar a máquina virtual para a criação do diretório?

Imagem Centos 7

Usando o XenCenter, criaremos uma máquina virtual com GPU. Na aba "VM", clique em "New VM".

Acesso remoto a VMs com GPU usando Citrix

Escolha as opções necessárias:

Modelo de VM — Outros meios de instalação
Nome — template
Instalar a partir da biblioteca ISO — Centos 7 (baixar), selecione do armazenamento NFS ISO montado.
Número de vCPUs — 4
Topologia — 1 soquete com 4 núcleos por soquete
Memória — 30 Gb
Tipo de GPU — GRID M60-4Q
Usar este disco virtual — 80 Gb
Rede

Após a criação, a máquina virtual aparecerá na lista vertical à esquerda. Clique nela e vá para a aba "Console". Aguarde o carregamento do instalador do Centos 7 e siga os passos necessários para instalar o sistema operacional com a interface GNOME.

Preparação da imagem

A preparação da imagem com Centos 7 levou muito tempo. Posteriormente, resultou em um conjunto de scripts que facilitam a configuração inicial do Linux e permitem a criação de um diretório de máquinas virtuais usando os Serviços de Criação de Máquinas Citrix (MCS).

O servidor DHCP, instalado no ws-ad, atribuiu o endereço IP 192.168.1.129 à nova máquina virtual.

A seguir, apresentarei as principais configurações.

$ 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

No XenCenter, na aba "Console", montamos o guest-tools.iso na unidade de DVD da máquina virtual e executamos a instalação do XenTools para Linux.

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

Ao configurar o XenServer, usamos o arquivo NVIDIA-GRID-XenServer-7.4-390.72-390.75-391.81.zip, baixado do site da NVIDIA, que contém não apenas o driver NVIDIA para XenServer, mas também o driver NVIDIA necessário para os clientes vGPU. Vamos baixá-lo e instalá-lo na VM.

$ 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

Baixaremos o Linux Virtual Delivery Agent 1811 (VDA) para o CentOS 7. Link para download: Linux VDA disponível após autenticação no site 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

No Citrix Studio, criaremos um Catálogo de Máquinas e um Grupo de Entrega. Antes disso, é necessário instalar e configurar o Windows Server.

Windows Server com Controlador de Domínio

Como baixar e instalar o Windows Server 2016?
Como instalar componentes do Windows Server?
Como configurar o Active Directory, DHCP e DNS?

Windows Server 2016

Como a máquina virtual (VM) com Windows Server não precisa de GPU, usaremos como hipervisor um servidor sem GPU. Seguindo a descrição acima, instalaremos mais um XenServer para hospedar as máquinas virtuais do sistema.

Depois disso, criaremos uma máquina virtual para o Windows Server com Active Directory.

Baixaremos o Windows Server 2016 do site. MicrosoftÉ melhor abrir o link usando o Internet Explorer.

Acesso remoto a VMs com GPU usando Citrix

Usando o XenCenter, criaremos uma máquina virtual. Na aba 'VM', clique em 'Nova VM'.

Acesso remoto a VMs com GPU usando Citrix

Escolha as opções necessárias:

Modelo de VM — Windows Server 2016 (64 bits)
Nome — ws-ad.domain.ru
Instalar a partir da biblioteca ISO — WindowsServer2016.iso, escolhendo do repositório NFS ISO montado.
Número de vCPUs — 4
Topologia — 1 soquete com 4 núcleos por soquete
Memória — 20 Gb
Tipo de GPU — nenhum
Usar este disco virtual — 100 Gb
Rede

Após a criação, a máquina virtual aparecerá na lista vertical à esquerda. Clique nela e vá para a aba 'Console'. Aguarde o carregamento do instalador do Windows Server e siga os passos necessários para instalar o sistema operacional.

Instalaremos o XenTools na VM. Clique com o botão direito na VM, depois em 'Instalar Citrix VM Tools...'. Após isso, uma imagem será montada, que você precisa iniciar e instalar o XenTools. Após a instalação, será necessário reiniciar a VM.

Vamos configurar o adaptador de rede:

Endereço IP — 192.168.1.110
Máscara — 255.255.255.0
Gateway — 192.168.1.1
DNS1 — 8.8.8.8
DNS2 — 8.8.4.4

Se o Windows Server não estiver ativado, vamos fazer a ativação. Você pode pegar a chave de onde baixou a imagem.

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

Vamos configurar o nome do computador. No meu caso, é ws-ad.

Instalação de componentes

No Gerenciador do Servidor, selecionaremos 'Adicionar funções e recursos'. Marcaremos para instalar o servidor DHCP, o servidor DNC e os Serviços de Domínio Active Directory. Marcaremos a opção 'Reiniciar automaticamente'.

Acesso remoto a VMs com GPU usando Citrix

Configuração do Active Directory

Após reiniciar a VM, clicamos em 'Atualizar este servidor para o nível de controlador de domínio' e adicionamos uma nova floresta domain.ru.

Configuração do servidor DHCP

Na parte superior do Gerenciador do Servidor, clique no sinal de exclamação para salvar as alterações ao instalar o servidor DHCP.

Vamos para as configurações do servidor DHCP.

Acesso remoto a VMs com GPU usando Citrix

Vamos criar um novo intervalo 192.168.1.120-130. Não mudamos mais nada. Escolha 'Configurar opções DHCP agora' e insira o endereço IP ws-ad (192.168.1.110) como gateway e DNS, que serão indicados nas configurações dos adaptadores de rede das máquinas virtuais do diretório.

Configuração do servidor DNS

Vamos para as configurações do servidor DNS.

Acesso remoto a VMs com GPU usando Citrix

Vamos criar uma nova zona de pesquisa direta — zona primária, para todos os servidores DNS no domínio domain.ru. Não mudamos mais nada.

Vamos criar uma nova zona de pesquisa reversa, escolhendo parâmetros semelhantes.

Nas propriedades do servidor DNS, na aba 'Avançado', marque a opção 'Desativar recursão'.

Criação de um usuário de teste

Vamos para o 'Centro de Administração do Active Directory'

Acesso remoto a VMs com GPU usando Citrix

Na seção 'Usuarios', à direita, clique em 'Criar'. Digite o nome, por exemplo, test, e embaixo clique em 'OK'.

Acesso remoto a VMs com GPU usando Citrix

Selecionamos o usuário criado e, no menu vertical à direita, escolhemos «Redefinir senha». Mantemos marcada a opção «Exigir troca de senha no próximo login no sistema».

Windows Server com Citrix Delivery Controller

Como baixar e instalar o Windows Server 2016?
Como baixar e instalar o Citrix Delivery Controller?
Como instalar e configurar o Citrix License Manager?
Como instalar e configurar o NVIDIA License Manager?

Windows Server 2016

Como a máquina virtual (VM) com Windows Server não precisa de GPU, usaremos como hiperconvergente um servidor sem GPU.

Baixaremos o Windows Server 2016 do site. MicrosoftÉ melhor abrir o link usando o Internet Explorer.

Acesso remoto a VMs com GPU usando Citrix

Usando o XenCenter, criaremos uma máquina virtual. Na aba 'VM', clique em 'Nova VM'.

Acesso remoto a VMs com GPU usando Citrix

Escolha as opções necessárias:

Modelo de VM — Windows Server 2016 (64 bits)
Nome — ws-dc
Instalar a partir da biblioteca ISO — WindowsServer2016.iso, escolhendo do repositório NFS ISO montado.
Número de vCPUs — 4
Topologia — 1 soquete com 4 núcleos por soquete
Memória — 20 Gb
Tipo de GPU — nenhum
Usar este disco virtual — 100 Gb
Rede

Após a criação, a máquina virtual aparecerá na lista vertical à esquerda. Vamos clicar nela e acessar a aba «Console». Aguardaremos o carregamento do instalador do Windows Server e seguiremos os passos necessários para a instalação do SO.

Instalaremos o XenTools na VM. Clique com o botão direito na VM, depois em 'Instalar Citrix VM Tools...'. Após isso, uma imagem será montada, que você precisa iniciar e instalar o XenTools. Após a instalação, será necessário reiniciar a VM.

Vamos configurar o adaptador de rede:

Endereço IP — 192.168.1.111
Máscara — 255.255.255.0
Gateway — 192.168.1.1
DNS1 — 8.8.8.8
DNS2 — 8.8.4.4

Se o Windows Server não estiver ativado, vamos fazer a ativação. Você pode pegar a chave de onde baixou a imagem.

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

Vamos configurar o nome do computador. No meu caso, este é ws-dc.

Adicionaremos a VM ao domínio domen.ru, reiniciaremos e nos autenticaremos com a conta de administrador do domínio DOMENAdministrator.

Citrix Delivery Controller

Baixaremos o Citrix Virtual Apps and Desktops 1811 em ws-dc.domain.ru. Link para download Citrix Virtual Apps and Desktops disponível após autenticação no site Citrix.

Acesso remoto a VMs com GPU usando Citrix

Vamos montar o ISO baixado e iniciá-lo. Escolheremos «Citrix Virtual Apps and Desktops 7». Em seguida, clicaremos em «Começar». Pode ser necessária uma reinicialização.

Acesso remoto a VMs com GPU usando Citrix

No meu caso, é suficiente escolher para a instalação os seguintes componentes:

Delivery Controller
Studio
License Server
StoreFront

Não mudamos mais nada e clicamos em «Instalar». Pode ser necessária a reinicialização várias vezes, após o que a instalação continuará.

Assim que a instalação for concluída, o Citrix Studio será iniciado — ambiente de gerenciamento de toda a infraestrutura Citrix.

Acesso remoto a VMs com GPU usando Citrix

Configuração do Citrix Site

Escolhemos a primeira seção de três — Configuração do site. Ao configurar, indicaremos o nome do site — domain.

Na seção «Conexão», forneceremos os dados para conectar o hiperconvergente com GPU:

Endereço da conexão — 192.168.1.100
Nome de usuário — root
Senha — yourpassword
Nome da conexão — m60

Gerenciamento de armazenamento — Usar armazenamento local ao hiperconvergente.

Nome para esses recursos — m60.

Selecionar redes.

Selecionar um tipo de GPU e grupo — GRID M60-4Q.

Configuração dos Catálogos de Máquinas Citrix

Ao configurar a segunda seção — Catálogos de Máquinas, escolheremos SO de sessão única (Desktop OS).

Imagem Mestre — escolheremos a imagem virtual preparada e a versão Citrix Virtual Apps and Desktops — 1811.

Escolheremos a quantidade de máquinas virtuais no catálogo, por exemplo, 4.

Indicaremos o esquema pelo qual as máquinas virtuais receberão nomes, no meu caso é desktop##. Assim, serão criadas 4 VMs com os nomes desktop01-04.

Nome do Catálogo de Máquinas — m60.

Descrição do Catálogo de Máquinas — m60.

Após a criação do Catálogo de Máquinas com quatro VMs, elas poderão ser encontradas na lista vertical XenCenter, à esquerda.

Citrix Delivery Group

A terceira seção começa com a escolha do número de VMs às quais deve ser concedido acesso. Vou indicar todas as quatro.

Na seção "Desktops", clique em "Add" para adicionar um grupo de VMs ao qual concederemos acesso. O nome de exibição é m60.

O nome do grupo de entrega é m60.

Após configurar as três seções principais, a janela principal do Citrix Studio ficará assim.

Acesso remoto a VMs com GPU usando Citrix

Gerenciador de Licenças Citrix

Faremos o download do arquivo de licença através do portal pessoal no site. Citrix.

Na lista vertical à esquerda, selecione All Licensing Tools (Legacy). Vamos para a guia "Activate and Allocate Licenses". Selecionaremos as licenças Citrix VDA e clicaremos em "Continue". Indique o nome do nosso Delivery Controller — ws-dc.domain.ru e a quantidade de licenças — 4. Clicamos em "Continue". Baixaremos o arquivo de licença gerado em ws-dc.domain.ru.

Acesso remoto a VMs com GPU usando Citrix

Na lista vertical à esquerda do Citrix Studio, selecione a seção "Licensing". Na lista vertical à direita, clique em "License Management Console". Na janela do navegador que se abre, insira os dados de autenticação do usuário de domínio DOMENAdministrator.

No Citrix Licensing Manager, vá para a guia "Install License". Para adicionar o arquivo de licença, selecione "Use downloaded license file".

Acesso remoto a VMs com GPU usando Citrix

A instalação dos componentes Citrix envolve o uso de várias máquinas virtuais, um componente por VM. No meu caso, todos os serviços do sistema Citrix funcionam dentro de uma única VM. Devido a isso, destacarei um bug que foi particularmente difícil de corrigir.

Se após reiniciar o ws-dc surgirem problemas de vários tipos, recomendo verificar primeiro os serviços em execução. Aqui está a lista dos serviços Citrix que devem iniciar automaticamente após a reinicialização da VM:

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

Enfrentei um problema que ocorre ao instalar vários serviços Citrix em uma única VM. Após a reinicialização, nem todos os serviços são iniciados. Lançá-los um a um era tedioso. A solução foi difícil de encontrar no Google, então eu a coloco aqui: é preciso mudar dois parâmetros no registro:

HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control
Name: ServicesPipeTimeout
Value: 240000

Name: WaitToKillServiceTimeout
Value: 20000

Gerenciador de Licenças Nvidia

Faremos o download do gerenciador de licenças NVIDIA para Windows através do portal pessoal no site. nvid.nvidia.com. É melhor acessar através do Internet Explorer.

Acesso remoto a VMs com GPU usando Citrix

Vamos instalá-lo no ws-dc. Para isso, primeiro será necessário instalar JAVA e adicionar a variável de ambiente JAVA_HOME. Depois disso, você pode iniciar o setup.exe para instalar o NVIDIA License Manager.

Acesso remoto a VMs com GPU usando Citrix

Vamos criar um servidor, gerar e baixar o arquivo de licença na área pessoal do site nvid.nvidia.com. Vamos transferir o arquivo de licença para o ws-dc.

Acesso remoto a VMs com GPU usando Citrix

Usando o navegador, iremos fazer login na interface web do gerenciador de licenças NVIDIA, disponível em localhost:8080/licserver e adicionaremos o arquivo de licença.

Acesso remoto a VMs com GPU usando Citrix

As sessões ativas que utilizam vGPU podem ser vistas na seção "Licensed Clients".

Acesso remoto ao catálogo de máquinas Citrix

Como instalar o Citrix Receiver?
Como conectar-se à área de trabalho virtual?

No computador de trabalho, abriremos o navegador, no meu caso é o Chrome, e iremos para o endereço da interface web Citrix StoreWeb

http://192.168.1.111/Citrix/StoreWeb

Se o Citrix Receiver ainda não estiver instalado, clique em "Detectar Receiver"

Acesso remoto a VMs com GPU usando Citrix

Leia atentamente o contrato de licença, baixe e instale o Citrix Receiver

Acesso remoto a VMs com GPU usando Citrix

Após a instalação, voltaremos ao navegador e clicaremos em "Continuar"

Acesso remoto a VMs com GPU usando Citrix

Em seguida, no navegador Chrome, abrirá uma notificação, clique em "Abrir aplicativo Citrix Receiver Launcher", e depois em "Detectar novamente" ou "Já instalado"

Acesso remoto a VMs com GPU usando Citrix

Na primeira conexão, usaremos os dados do usuário de teste test. Trocaremos a senha temporária por uma permanente.

Acesso remoto a VMs com GPU usando Citrix

Após o login, iremos para a aba "Aplicativos" e selecionaremos o catálogo "M60"

Acesso remoto a VMs com GPU usando Citrix

Baixaremos o arquivo proposto com a extensão .ica. Após clicar duas vezes nele, uma janela no Desktop Viewer com a área de trabalho CentOS 7 será aberta.

Acesso remoto a VMs com GPU usando Citrix

Fonte: habr.com

Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS 🔥 Compre hospedagem confiável para sites com proteção contra DDoS, servidores VPS VDS | ProHoster