Product Documentation

安装 Linux Virtual Delivery Agent for RHEL/CentOS

Jun 04, 2018

可以选择按照本文中的步骤进行手动安装,也可以使用轻松安装进行自动安装和配置。轻松安装省时又省力,与手动安装相比,可能出现的错误更少。 

注意:请仅对全新安装使用轻松安装功能。请勿使用轻松安装更新现有安装。

步骤 1:为 VDA 安装准备 RHEL 7/CentOS 7、RHEL 6/CentOS 6

步骤 1a:验证网络配置

Citrix 建议先连接并正确配置网络,然后再继续操作。

步骤 1b:设置主机名

为确保正确报告计算机的主机名,请更改 /etc/hostname 文件,使其仅包含计算机的主机名。

HOSTNAME=hostname

步骤 1c:为主机名分配环回地址

为确保正确报告计算机的 DNS 域名和 FQDN,请更改 /etc/hosts 文件中的以下行,使其前两个条目为 FQDN 和主机名:

127.0.0.1  hostname-fqdn hostname localhost localhost.localdomain localhost4 localhost4.localdomain4

例如:

127.0.0.1  vda01.example.com vda01 localhost localhost.localdomain localhost4 localhost4.localdomain4

从文件中的其他条目中删除对 hostname-fqdnhostname 的任何其他引用。

注意

Linux VDA 当前不支持 NetBIOS 名称截断。因此,主机名不得超过 15 个字符。

提示

只能使用字符 a-z、A-Z、0-9 和连字符 (-)。请避免使用下划线 (_)、空格和其他符号。主机名不得以数字开头和以连字符结尾。此规则也适用于 Delivery Controller 主机名。

步骤 1d:检查主机名

验证主机名设置是否正确无误:

命令 复制

hostname

此命令仅返回计算机的主机名,而不返回计算机的完全限定的域名 (FQDN)。

验证 FQDN 设置是否正确无误:

命令 复制

hostname -f

此命令返回计算机的 FQDN。

步骤 1e:检查名称解析和服务可访问性

验证能否解析 FQDN 并 Ping 通域控制器和 XenDesktop Delivery Controller:

命令 复制

nslookup domain-controller-fqdn

ping domain-controller-fqdn

nslookup delivery-controller-fqdn

ping delivery-controller-fqdn

如果无法解析 FQDN 或 Ping 不通上述任一计算机,请先检查相关步骤,然后再继续。

步骤 1f:配置时钟同步 (chrony)

确保 VDA、Delivery Controller 和域控制器之间的时钟始终精确同步至关重要。将 Linux VDA 托管为虚拟机可能会导致时钟偏差问题。出于此原因,最好使用远程时间服务来同步时间。

RHEL 6.x 及早期版本使用 NTP 守护程序 (ntpd) 同步时钟,而 RHEL 7.x 默认环境则转而使用较新的 Chrony 守护程序 (chronyd)。两个服务的配置和操作过程十分类似。

配置 NTP 服务(仅限 RHEL 6/CentOS 6)

以 root 用户身份,编辑 /etc/ntp.conf 并为每个远程时间服务器添加一个服务器条目:

配置 复制

server peer1-fqdn-or-ip-address iburst

server peer2-fqdn-or-ip-address iburst

在典型部署中,时间从本地域控制器同步,而不是直接从公共 NTP 池服务器同步。为域中的每个 Active Directory 域控制器添加一个服务器条目。

删除列出的任何其他 server 条目,包括环回 IP 地址、本地主机和公共服务器 *.pool.ntp.org 条目。

保存更改并重新启动 NTP 守护程序:

命令 复制

sudo /sbin/service ntpd restart

配置 Chrony 服务(仅限 RHEL 7/CentOS 7)

以 root 用户身份,编辑 /etc/chrony.conf 并为每个远程时间服务器添加一个服务器条目:

server peer1-fqdn-or-ip-address iburst

server peer2-fqdn-or-ip-address iburst

在典型部署中,时间从本地域控制器同步,而不是直接从公共 NTP 池服务器同步。为域中的每个 Active Directory 域控制器添加一个服务器条目。

删除列出的任何其他 server 条目,包括环回 IP 地址、本地主机和公共服务器 *.pool.ntp.org 条目。

保存更改并重新启动 Chrony 守护程序:

命令 复制

sudo /sbin/service chronyd restart

步骤 1g:安装 OpenJDK

Linux VDA 依赖于 OpenJDK。通常,运行时环境作为操作系统安装的一部分进行安装。

确认版本是否正确:

  • RHEL 7/CentOS 7:
命令 复制

sudo yum info java-1.8.0-openjdk

  • RHEL 6/CentOS 6:
命令 复制

sudo yum info java-1.7.0-openjdk

预先封装的 OpenJDK 可能为早期版本。请根据需要更新为最新版本:

  • RHEL 7/CentOS 7:
命令 复制

sudo yum -y update java-1.8.0-openjdk

  • RHEL 6/CentOS 6:
命令 复制

sudo yum -y update java-1.7.0-openjdk

将以下行添加到 ~/.bashrc 文件,从而设置 JAVA_HOME 环境变量:

export JAVA_HOME=/usr/lib/jvm/java

打开新的 shell,然后确认 Java 版本:

命令 复制

java –version

提示

为避免出现问题,请务必在操作系统为 RHEL 6/CentOS 6 时仅安装 OpenJDK 1.7.0 或 1.8.0 版,或者在操作系统为 RHEL 7/CentOS 7 时仅安装 OpenJDK 1.8.0 版。删除系统上的所有其他版本 Java。

步骤 1h:安装 PostgreSQL

Linux VDA 要求在 RHEL 6 上使用 PostgreSQL 8.4 或更高版本,或者在 RHEL 7 上使用 PostgreSQL 9.2 或更高版本。

安装以下软件包:

命令 复制

sudo yum -y install postgresql-server

sudo yum -y install postgresql-jdbc

此时需要执行一些安装后步骤,以便初始化数据库,并确保服务在计算机启动时启动。此操作会在 /var/lib/pgsql/data 下创建数据库文件。此命令在 PostgreSQL 8 和 9 上有所差别。

  • 仅限 RHEL 7:PostgreSQL 9
命令 复制

sudo postgresql-setup initdb

  • 仅限 RHEL 6:PostgreSQL 8
命令 复制

sudo /sbin/service postgresql initdb

步骤 1i:启动 PostgreSQL

在计算机启动时启动服务和立即启动服务:

  • 仅限 RHEL 7:PostgreSQL 9
命令 复制

sudo systemctl enable postgresql

sudo systemctl start postgresql

  • 仅限 RHEL 6:PostgreSQL 8
命令 复制

sudo /sbin/chkconfig postgresql on

sudo /sbin/service postgresql start

使用以下命令检查 PostgreSQL 版本:

命令 复制

psql --version

使用 psql 命令行实用程序确认数据目录已设置:

命令 复制

sudo -u postgres psql -c 'show data_directory'

Important

在此版本中,为 gperftools-libs 添加了一个新的依赖项,但它在原始存储库中并不存在。可使用以下命令添加新存储库:

sudo rpm -ivh https://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm

仅 RHEL 6/CentOS 6 受影响。应在安装 Linux VDA 软件包之前运行该命令。

步骤 2:准备虚拟机管理程序

在支持的虚拟机管理程序上将 Linux VDA 当作虚拟机运行时,需要作出一些更改。根据使用的虚拟机管理程序平台作出以下更改。如果正在裸机硬件上运行 Linux 计算机,则无需作出任何更改。

修复 Citrix XenServer 上的时间同步问题

启用了 XenServer 时间同步功能时,在每个半虚拟化 Linux VM 中,您会发现 NTP 和 XenServer 都尝试管理系统时钟。为避免时钟与其他服务器不同步,请确保每个 Linux 客户机中的系统时钟都与 NTP 同步。这种情况要求禁用主机时间同步。无需在 HVM 模式下进行任何更改。

在某些 Linux 发行版中,如果正在运行半虚拟化 Linux 内核,并安装了 XenServer Tools,您可以检查 XenServer 时间同步功能是否存在,以及是否已在 Linux VM 中启用:

命令 复制

su -

cat /proc/sys/xen/independent_wallclock

此命令返回 0 或 1:

  • 0 - 时间同步功能已启用,且必须禁用。
  • 1 - 时间同步功能已禁用,无需采取任何操作。

如果 /proc/sys/xen/indepent_wallclock 文件不存在,则无需执行以下步骤。

如果已启用,请向该文件写入 1 以禁用时间同步功能:

命令 复制

sudo echo 1 > /proc/sys/xen/independent_wallclock

要使此更改成为永久更改,并在重新启动后仍然有效,请编辑 /etc/sysctl.conf 文件并添加以下行:

配置 复制

xen.independent_wallclock = 1

要验证这些更改,请重新启动系统:

命令 复制

su -

cat /proc/sys/xen/independent_wallclock

此命令返回值 1。

在 Microsoft Hyper-V 上修复时间同步问题

安装了 Hyper-V Linux 集成服务的 Linux VM 可应用 Hyper-V 时间同步功能来使用主机操作系统的时间。为确保系统时钟始终精确可靠,必须一同启用此功能与 NTP 服务。

从管理操作系统中:

  1. 打开 Hyper-V 管理器控制台。 
  2. 对于 Linux VM 的设置,请选择 Integration Services(集成服务)。 
  3. 确保已选择 Time synchronization(时间同步)。 

注意

此方法与 VMware 和 XenServer 不同,这两种产品会禁用主机时间同步功能,以免与 NTP 发生冲突。Hyper-V 时间同步可以与 NTP 时间同步共存并互补。

修复 ESX 和 ESXi 上的时间同步问题

启用了 VMware 时间同步功能时,在每个半虚拟化 Linux VM 中,您会发现 NTP 和虚拟机管理程序都尝试同步系统时钟。为避免时钟与其他服务器不同步,请确保每个 Linux 客户机中的系统时钟都与 NTP 同步。这种情况要求禁用主机时间同步。

如果正在运行安装了 VMware Tools 的半虚拟化 Linux 内核:

  1. 打开 vSphere Client。
  2. 编辑 Linux VM 设置。
  3. Virtual Machine Properties(虚拟机属性)对话框中,打开 Options(选项)选项卡。
  4. 选择 VMware Tools
  5. 在“Advanced”(高级)框中,清除 Synchronize guest time with host(与主机同步客户机时间)。

步骤 3:向 Windows 域中添加 Linux 虚拟机 (VM)

Linux VDA 支持多种向 Active Directory (AD) 域添加 Linux 计算机的方法:

  • Samba Winbind
  • Quest Authentication Service
  • Centrify DirectControl
  • SSSD

根据所选的方法,按说明执行操作。

注意

为 Linux VDA 中的本地帐户和 AD 中的帐户使用相同的用户名时,会话启动可能会失败。

Samba Winbind

安装或更新所需软件包:

命令 复制

sudo yum -y install samba-winbind samba-winbind-clients krb5-workstation authconfig oddjob-mkhomedir

启用 Winbind 守护程序以在计算机启动时启动

Winbind 守护程序必须配置为在计算机启动时启动:

命令 复制

sudo /sbin/chkconfig winbind on

配置 Winbind 身份验证

将计算机配置为使用 Winbind 执行 Kerberos 身份验证:

命令 复制

sudo authconfig --disablecache --disablesssd --disablesssdauth --enablewinbind --enablewinbindauth --disablewinbindoffline --smbsecurity=ads --smbworkgroup=domain --smbrealm=REALM --krb5realm=REALM --krb5kdc=fqdn-of-domain-controller --winbindtemplateshell=/bin/bash --enablemkhomedir --updateall

其中,REALM 是大写的 Kerberos 领域名称,而 domain 是域的 NetBIOS 名称。

如果需要通过 DNS 查找 KDC 服务器和领域名称,请将以下两个选项添加至前面的命令:

命令 复制

--enablekrb5kdcdns --enablekrb5realmdns

忽略 authconfig 命令返回的有关 winbind 服务无法启动的任何错误。authconfig 尝试在计算机尚未加入域的情况下启动 winbind 服务时,可能会出现这些错误。

打开 /etc/samba/smb.conf 并将以下条目添加到 [Global] 部分下方,但要放在 authconfig 工具生成的部分后面:

配置 复制

kerberos method = secrets and keytab

winbind refresh tickets = true

Linux VDA 需要使用系统 keytab 文件 /etc/krb5.keytab 以执行身份验证并向 Delivery Controller 注册。计算机首次加入域后,前面的 kerberos method 设置将强制 Winbind 创建系统 keytab 文件。

加入 Windows 域

您的域控制器必须可访问,而且您必须具有有权将计算机添加到域的 Active Directory 用户帐户。

命令 复制

sudo net ads join REALM -U user

REALM 是大写的 Kerberos 领域名称,user 是有权将计算机添加到域的域用户。

为 Winbind 配置 PAM

默认情况下,Winbind PAM 模块 (pam_winbind) 的配置不启用 Kerberos 票据缓存和主目录的创建。打开 /etc/security/pam_winbind.conf,并在 [Global] 部分下添加或更改以下条目:

配置 复制

krb5_auth = yes

krb5_ccache_type = FILE

mkhomedir = yes

确保删除每个设置中的任何前置分号。这些更改要求重新启动 Winbind 守护程序:

命令 复制

sudo /sbin/service winbind restart

提示

仅当计算机加入域后,winbind 守护程序才会一直运行。

打开 /etc/krb5.conf 并将 [libdefaults] 部分下方的以下设置从 KEYRING 更改为 FILE 类型:

配置 复制

default_ccache_name = FILE:/tmp/krb5cc_%{uid}

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(Windows 和 Linux)都要在 Active Directory 中有一个计算机对象。

运行 Samba 的 net ads 命令验证计算机是否已加入域:

命令 复制

sudo net ads testjoin

运行以下命令验证额外的域和计算机对象信息:

命令 复制

sudo net ads info

验证 Kerberos 配置

为了确保 Kerberos 已正确配置为可与 Linux VDA 配合使用,请检查系统 keytab 文件是否已创建并包含有效密钥:

命令 复制

sudo klist -ke

此命令显示各种主体名称与密码套件组合可用的密钥列表。运行 Kerberos kinit 命令,使用这些密钥向域控制器验证计算机的身份:

命令 复制

sudo kinit -k MACHINE\$@REALM

计算机和领域名称必须指定为大写。美元符号 ($) 必须使用反斜杠 (\) 进行转义,以免发生 shell 替换。在某些环境中,DNS 域名与 Kerberos 领域名称不同。请确保使用领域名称。如果此命令成功运行,则不会显示任何输出。

使用以下命令验证计算机帐户的 TGT 票据已缓存:

Code 复制

sudo klist

使用以下命令检查计算机的帐户详细信息:

命令 复制

sudo net ads status

验证用户身份验证

使用 wbinfo 工具验证是否可向域验证域用户的身份:

命令 复制

wbinfo --krb5auth=domain\\username%password

这里指定的域为 AD 域名,而不是 Kerberos 领域名称。对于 bash shell,必须使用另一个反斜杠对反斜杠 (\) 字符进行转义。此命令返回一条成功或失败消息。

要验证 Winbind PAM 模块是否已正确配置,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

ssh localhost -l domain\\username

id -u

检查 Kerberos 凭据缓存中的票据是否有效且未过期:

命令 复制

klist

退出会话:

命令 复制

exit

直接登录 Gnome 或 KDE 控制台也可以执行类似的测试。

Quest Authentication Service

在域控制器上配置 Quest

假定您已在 Active Directory 域控制器上安装并配置了 Quest 软件,而且已获得管理权限,有权在 Active Directory 中创建计算机对象。

允许域用户登录 Linux VDA 计算机

为了让域用户能够在 Linux VDA 计算机上建立 HDX 会话:

  1. 在 Active Directory 用户和计算机管理控制台中,为该用户帐户打开 Active Directory 用户属性。
  2. 选择 Unix Account(Unix 帐户)选项卡。
  3. 选中 Unix-enabled(已启用 Unix)。
  4. Primary GID Number(首选 GID 编号)设置为实际域用户组的组 ID。

注意

这些说明相当于设置域用户,以便他们可以使用控制台、RDP、SSH 或任何其他远程协议进行登录。

在 Linux VDA 上配置 Quest

SELinux 策略强制实施解决方法

默认 RHEL 环境会强制实施 SELinux。此强制功能会影响 Quest 使用的 Unix 域套接字 IPC 机制,并阻止域用户登录。

提示

解决此问题的方法有多种,如此处所述。

最方便的方法是禁用 SELinux。以 root 用户身份,编辑 /etc/selinux/config 并更改 SELinux 设置:

配置 复制

SELINUX=permissive

此更改要求重新启动计算机:

命令 复制

reboot

Important

请谨慎使用此设置。禁用后重新启用 SELinux 策略强制实施会导致完全锁定,即便是对 root 用户和其他本地用户也是如此。 

配置 VAS 守护程序

必须启用并断开自动续订 Kerberos 票据功能。必须禁用身份验证(脱机登录)功能。

命令 复制

sudo /opt/quest/bin/vastool configure vas vasd auto-ticket-renew-interval 32400

sudo /opt/quest/bin/vastool configure vas vas_auth allow-disconnected-auth false

此命令将续订间隔设为 9 小时(32,400 秒),即比默认的 10 小时票据生命周期短 1 小时。请在票据生命周期较短的系统上设置较低的值。

配置 PAM 和 NSS

要允许域用户通过 HDX 和其他服务(例如 su、ssh 和 RDP)进行登录,请运行以下命令以手动配置 PAM 和 NSS:

命令 复制

sudo /opt/quest/bin/vastool configure pam

sudo /opt/quest/bin/vastool configure nss

加入 Windows 域

使用 Quest vastool 命令将 Linux 计算机加入 Active Directory 域:

命令 复制

sudo /opt/quest/bin/vastool -u user join domain-name

user 是有权将计算机加入 Active Directory 域的任何域用户。domain-name 是域的 DNS 名称,例如 example.com。

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(Windows 和 Linux)都要在 Active Directory 中有一个计算机对象。验证 Quest 加入的 Linux 计算机是否位于域中:

命令 复制

sudo /opt/quest/bin/vastool info domain

如果计算机已加入域,此命令会返回域名。如果计算机未加入任何域,则会显示以下错误:

错误 复制

ERROR: No domain could be found.

ERROR: VAS_ERR_CONFIG: at ctx.c:414 in _ctx_init_default_realm

default_realm not configured in vas.conf. Computer may not be joined to domain

验证用户身份验证

要验证 Quest 是否可以通过 PAM 对域用户进行身份验证,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

ssh localhost -l domain\\username

id -u

检查是否为 id -u 命令返回的 UID 创建了对应的 Kerberos 凭据缓存文件:

命令 复制

ls /tmp/krb5cc_uid

检查 Kerberos 凭据缓存中的票据是否有效且未过期:

命令 复制

/opt/quest/bin/vastool klist

退出会话:

命令 复制

exit

直接登录 Gnome 或 KDE 控制台也可以执行类似的测试。

Centrify DirectControl

加入 Windows 域

安装 Centrify DirectControl Agent 后,请使用 Centrify adjoin 命令将 Linux 计算机加入 Active Directory 域:

命令 复制

su – 

adjoin -w -V -u user domain-name

user 参数是有权将计算机加入 Active Directory 域的任何 Active Directory 域用户。domain-name 是将 Linux 计算机加入到的域的名称。

验证域成员身份

Delivery Controller 要求所有 VDA 计算机(Windows 和 Linux)都要在 Active Directory 中有一个计算机对象。验证 Centrify 加入的 Linux 计算机是否位于域中:

命令 复制

su –

adinfo

检查 Joined to domain 值是否有效以及 CentrifyDC mode 是否返回了 connected。如果模式仍然卡在启动状态,则表明 Centrify 客户端遇到了服务器连接或身份验证问题。

使用以下命令可获得更全面的系统和诊断信息:

命令 复制

adinfo --sysinfo all

adinfo –diag

测试与各种 Active Directory 和 Kerberos 服务的连接:

命令 复制

adinfo --test

SSSD

请按照以下信息设置 SSSD。此部分包含有关如何将 Linux VDA 计算机加入 Windows 域的说明以及如何配置 Kerberos 身份验证的指导。

注意

如果您使用的是 SSSD,请按照此部分中的说明进行操作。请勿按照将 Linux 计算机添加至 Windows 域部分中的信息进行操作。

SSSD 是什么?

SSSD 是系统守护程序。其主要功能是为了实现通过可以为系统提供缓存和脱机支持的通用框架来识别远程资源并对其进行身份验证。它提供 PAM 和 NSS 两种模块,将来可以为扩展用户信息支持基于 D-BUS 的接口。此外它还提供更好的数据库来存储本地用户和扩展用户数据。

要在 RHEL 和 CentOS 上设置 SSSD,请执行以下操作:

  1. 使用 Samba 加入域并创建主机 keytab
  2. 设置 SSSD
  3. 配置 NSS/PAM
  4. 验证 Kerberos 配置
  5. 验证用户身份验证

必备软件

Active Directory 提供程序最初是在 SSSD 版本 1.9.0 中引入的。如果您使用的是较早版本,请按照为 LDAP 提供程序配置 Active Directory 中的说明操作。

已按照本文中的说明测试和验证了以下环境。

  • RHEL 7.3 或更高版本
  • CentOS 7.3 或更高版本

使用 Samba 加入域并创建主机 keytab

SSSD 并不提供用于加入域和管理系统 keytab 文件的 Active Directory 客户端功能。实现这些功能可以采用几种方法,包括:

  • adcli
  • realmd
  • Winbind
  • Samba

本节信息只介绍 Samba 方法。对于 realmd,请参阅 RHEL 或 CentOS 文档。必须在配置 SSSD 之前执行这些步骤。

在正确配置了以下文件的 Linux 客户端上:

  • /etc/krb5.conf
  • /etc/samba/smb.conf:

为计算机配置 Samba 和 Kerberos 身份验证:

命令 复制

sudo authconfig --smbsecurity=ads --smbworkgroup=domain --smbrealm=REALM --krb5realm=REALM --krb5kdc=fqdn-of-domain-controller --update

其中,REALM 是大写的 Kerberos 领域名称,domain 是 Active Directory 域的简短 NetBIOS 名称。

如果需要通过 DNS 查找 KDC 服务器和领域名称,请将以下两个选项添加至前面的命令:

命令 复制

--enablekrb5kdcdns --enablekrb5realmdns

打开 /etc/samba/smb.conf 并将以下条目添加到 [Global] 部分下方,但要放在 authconfig 工具生成的部分后面:

配置 复制

kerberos method = secrets and  keytab

加入 Windows 域。请确保域控制器可访问,而且您具有有权将计算机添加到域的 Active Directory 用户帐户。

命令 复制

sudo net ads join REALM -U user

REALM 是大写的 Kerberos 领域名称,user 是有权将计算机添加到域的域用户。

设置 SSSD

设置 SSSD 的步骤如下:

  • 在 Linux VDA 上安装 sssd-ad 软件包。
  • 对各种文件(例如 sssd.conf)进行配置更改。
  • 启动 sssd 服务。

sssd.conf 配置示例(可以根据需要添加额外的选项):

配置 复制

[sssd]

config_file_version = 2

domains = ad.example.com

services = nss, pam

 

[domain/ad.example.com]

# Uncomment if you need offline logins

# cache_credentials = true

 

id_provider = ad

auth_provider = ad

access_provider = ad

ldap_id_mapping = true

ldap_schema = ad

 

# Should be specified as the lower-case version of the long version of the Active Directory domain.

ad_domain = ad.example.com

 

# Kerberos settings

krb5_ccachedir = /tmp

krb5_ccname_template = FILE:%d/krb5cc_%U

 

# Uncomment if service discovery is not working

# ad_server = server.ad.example.com

 

# Comment out if the users have the shell and home dir set on the AD side

default_shell = /bin/bash

fallback_homedir = /home/%d/%u

 

# Uncomment and adjust if the default principal SHORTNAME$@REALM is not available

# ldap_sasl_authid = host/client.ad.example.com@AD.EXAMPLE.COM

ad.example.comserver.ad.example.com 替换为相应的值。有关详细信息,请参阅 sssd-ad(5) - Linux 手册页

对 sssd.conf 设置文件所有权和权限:

命令 复制

chown root:root /etc/sssd/sssd.conf

chmod 0600 /etc/sssd/sssd.conf

restorecon /etc/sssd/sssd.conf

配置 NSS/PAM

RHEL/CentOS

使用 authconfig 启用 SSSD。安装 oddjob-mkhomedir 以确保主目录创建与 SELinux 兼容:

命令 复制

authconfig --enablesssd --enablesssdauth --enablemkhomedir –-update

sudo service sssd start

sudo chkconfig sssd on

验证 Kerberos 配置

检查系统 keytab 文件是否已创建并包含有效密钥:

命令 复制

sudo klist -ke

此命令显示各种主体名称与密码套件组合可用的密钥列表。运行 Kerberos kinit 命令,使用这些密钥向域控制器验证计算机的身份:

命令 复制

sudo kinit –k MACHINE\$@REALM

计算机和领域名称必须指定为大写。美元符号 ($) 必须使用反斜杠 (\) 进行转义,以免发生 shell 替换。在某些环境中,DNS 域名与 Kerberos 领域名称不同。请确保使用领域名称。如果此命令成功运行,则不会显示任何输出。

使用以下命令验证计算机帐户的 TGT 票据已缓存:

命令 复制

sudo klist

验证用户身份验证

使用 getent 命令确认支持的登录格式以及 NSS 是否工作:

命令 复制

sudo getent passwd DOMAIN\\username

DOMAIN 参数指示简短形式的域名。如果需要来自 Citrix Receiver 的另一种登录格式,请先使用 getent 命令验证。

支持的登录格式如下:

  • 低级别登录名称:DOMAIN\username
  • UPN:username@domain.com
  • NetBIOS 后缀格式:username@DOMAIN

要验证 SSSD PAM 模块是否已正确配置,请使用域用户帐户登录 Linux VDA。该域用户帐户以前未曾使用过。

命令 复制

sudo ssh localhost –l DOMAIN\\username

id -u

检查是否为以下命令返回的 uid 创建了对应的 Kerberos 凭据缓存文件:

命令 复制

ls /tmp/krb5cc_{uid}

检查用户 Kerberos 凭据缓存中的票据是否有效且未过期:

命令 复制

klist

安装 NVIDIA GRID 驱动程序

启用 HDX 3D Pro 需要执行额外的安装步骤,以在虚拟机管理程序和 VDA 计算机上安装必备的图形驱动程序。

配置以下设置:

  1. Citrix XenServer 
  2. VMware ESX

根据所选的虚拟机管理程序,按以下说明执行操作。

Citrix XenServer

本节详细说明了如何在 Citrix XenServer 上逐步安装和配置 NVIDIA GRID 驱动程序。 

VMware ESX

按照本指南中的信息操作来为 VMware ESX 安装和配置 NVIDIA GRID 驱动程序。

VDA 计算机

按照这些步骤为每个 Linux VM 客户机安装和配置驱动程序:

  1. 开始前,请确保 Linux VM 已关闭。
  2. 在 XenCenter 中,将处于 GPU 直通模式的 GPU 添加至 VM。
  3. 启动 RHEL VM。

要准备计算机以使用 NVIDIA GRID 驱动程序,请运行以下命令:

命令 复制

yum install gcc

yum install "kernel-devel-$(uname -r)"

systemctl set-default multi-user.target

按照 Red Hat Enterprise Linux 文档中的步骤安装 NVIDIA GRID 驱动程序。

注意

安装 GPU 驱动程序期间,为每个问题选择默认答案 (no)。

Important

在启用 GPU 直通后,无法再通过 XenCenter 访问 Linux VM。使用 SSH 进行连接。

localized image

为图形卡设置正确的配置:

命令 复制

etc/X11/ctx-nvidia.sh

要利用高分辨率和多监视器功能,您需要有效的 NVIDIA 许可证。要申请许可证,请按照“GRID Licensing Guide.pdf - DU-07757-001 September 2015”产品文档执行操作。

步骤 4:安装 Linux VDA

步骤 4a:卸载旧版本

如果之前安装的 Linux VDA 版本低于 v1.0,则应先卸载该版本,然后再安装新版本。

(a) 停止 Linux VDA 服务:

命令 复制

sudo /sbin/service ctxvda stop

sudo /sbin/service ctxhdx stop

(b) 卸载软件包:

命令 复制

sudo rpm -e XenDesktopVDA

注意

支持从最新的两个版本进行升级。

注意

从 1.3 版起,安装路径已更改。在早期版本中,安装组件位于 /usr/local/。在新版本中,安装组件位于 /opt/Citrix/VDA/

要执行命令,需要提供完整路径;或者,也可以将 /opt/Citrix/VDA/sbin/opt/Citrix/VDA/bin 添加到系统路径中。

步骤 4b:下载 Linux VDA 软件包

转至 Citrix Web 站点并根据您的 Linux 发行版下载相应的 Linux VDA 软件包。

步骤 4c:安装 Linux VDA

使用 Yum 安装 Linux VDA 软件:

对于 RHEL 7/CentOS 7:

命令 复制

sudo yum install -y XenDesktopVDA-7.18.0.430-1.el7_x.x86_64.rpm

对于 RHEL 6/CentOS 6:

命令 复制

sudo yum install -y XenDesktopVDA-7.18.0.430-1.el6_x.x86_64.rpm

使用 RPM 软件包管理器安装 Linux VDA 软件。在此之前,您必须解决以下依赖项:

对于 RHEL 7/CentOS 7:

命令 复制

sudo rpm -i XenDesktopVDA-7.18.0.430-1.el7_x.x86_64.rpm

对于 RHEL 6/CentOS 6:

命令 复制

sudo rpm -i XenDesktopVDA-7.18.0.430-1.el6_x.x86_64.rpm

RHEL 7/CentOS 7 的 RPM 依赖项列表:

依赖项 复制

postgresql-server >= 9.2
postgresql-jdbc >= 9.2
java-1.8.0-openjdk >= 1.8.0
ImageMagick >= 6.7.8.9
firewalld >= 0.3.9
policycoreutils-python >= 2.0.83
dbus >= 1.6.12
dbus-x11 >= 1.6.12
xorg-x11-server-utils >= 7.7
xorg-x11-xinit >= 1.3.2
libXpm >= 3.5.10
libXrandr >= 1.4.1
libXtst >= 1.2.2
motif >= 2.3.4
pam >= 1.1.8
util-linux >= 2.23.2
bash >= 4.2
findutils >= 4.5
gawk >= 4.0
sed >= 4.2
cups >= 1.6.0
foomatic-filters >= 4.0.9
openldap >= 2.4
cyrus-sasl >= 2.1
cyrus-sasl-gssapi >= 2.1
libxml2 >= 2.9
python-requests >= 2.6.0
gperftools-libs >= 2.4
xorg-x11-server-Xorg >= 1.17
xorg-x11-server-Xorg < 1.18
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

注意

有关 Linux VDA 支持的 Xorg 版本和 Linux 发行版的信息,请参阅 Citrix 文章 CTX221802 中的列表。

RHEL 6/CentOS 6 的 RPM 依赖项列表:

依赖项 复制

postgresql-jdbc >= 8.4
postgresql-server >= 8.4
java-1.7.0-openjdk >= 1.7.0
ImageMagick >= 6.5.4.7
GConf2 >= 2.28.0
system-config-firewall-base >= 1.2.27
policycoreutils-python >= 2.0.83
xorg-x11-server-utils >= 7.7
xorg-x11-xinit >= 1.0.9
ConsoleKit >= 0.4.1
dbus >= 1.2.24
dbus-x11 >= 1.2.24
libXpm >= 3.5.10
libXrandr >= 1.4.1
libXtst >= 1.2.2
openmotif >= 2.3.3
pam >= 1.1.1
util-linux-ng >= 2.17.2
bash >= 4.1
findutils >= 4.4
gawk >= 3.1
sed >= 4.2
cups >= 1.4.0
foomatic >= 4.0.0
openldap >= 2.4
cyrus-sasl >= 2.1
cyrus-sasl-gssapi >= 2.1
libxml2 >= 2.7
python-requests >= 2.6.0
gperftools-libs >= 2.0
xorg-x11-server-Xorg >= 1.17
xorg-x11-server-Xorg < 1.18
rpmlib(FileDigests) <= 4.6.0-1
rpmlib(PayloadFilesHavePrefix) <= 4.0-1
rpmlib(CompressedFileNames) <= 3.0.4-1
rpmlib(PayloadIsXz) <= 5.2-1

注意

在 RHEL 7.x 上安装 Linux VDA 后,运行 sudo yum install -y python-websockify x11vnc 命令。目的是手动安装 python-websockify 和 x11vnc 以使用会话重影功能。有关详细信息,请参阅重影会话

步骤 4d:升级 Linux VDA(可选)

可以使用 Yum 从前两个版本升级 Linux VDA 软件:

对于 RHEL 7/CentOS 7:

命令 复制

sudo yum install -y XenDesktopVDA-7.18.0.430-1.el7_x.x86_64.rpm

对于 RHEL 6/CentOS 6:

命令 复制

sudo yum  install -y XenDesktopVDA-7.18.0.430-1.el6_x.x86_64.rpm

使用 RPM 软件包管理器升级 Linux VDA 软件:

对于 RHEL 7/CentOS 7:

命令 复制

sudo rpm -U XenDesktopVDA-7.18.0.430-1.el7_x.x86_64.rpm

对于 RHEL 6/CentOS 6:

命令 复制

sudo rpm -U XenDesktopVDA-7.18.0.430-1.el6_x.x86_64.rpm

Important

升级软件后重新启动 Linux VDA 计算机。

步骤 5:配置 Linux VDA

安装软件包后,必须运行 ctxsetup.sh 脚本来配置 Linux VDA。执行任何更改之前,该脚本都会验证环境,确保所有依赖项都已安装。如有必要,可以随时重新运行该脚本以更改设置。

可以按照提示手动运行脚本,也可以采用预配置的响应自动运行脚本。继续操作前,请查看该脚本的帮助信息:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxsetup.sh --help

提示配置

运行会提示各种问题的手动配置:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxsetup.sh

自动配置

自动安装时,通过环境变量提供设置脚本所需的选项。如果所需的所有变量都存在,脚本不会提示您提供任何信息。

支持的环境变量包括:

  • CTX_XDL_SUPPORT_DDC_AS_CNAME = Y | N - Linux VDA 支持使用 DNS CNAME 记录指定 Delivery Controller 名称。默认情况下设置为 N。
  • CTX_XDL_DDC_LIST = list-ddc-fqdns - Linux VDA 要求提供由空格分隔的 Delivery Controller 完全限定域名 (FQDN) 列表以用于向 Delivery Controller 注册。必须至少指定一个 FQDN 或 CNAME 别名。
  • CTX_XDL_VDA_PORT = port-number - Linux VDA 通过 TCP/IP 端口(默认为端口 80)与 Delivery Controller 通信。
  • CTX_XDL_REGISTER_SERVICE = Y | N - 在启动计算机后启动 Linux Virtual Desktop 服务。默认情况下,该值设置为 Y。
  • CTX_XDL_ADD_FIREWALL_RULES = Y | N - Linux Virtual Desktop 服务要求允许传入网络连接通过系统防火墙。您可以在系统防火墙中自动为 Linux Virtual Desktop 打开所需端口(默认为端口 80 和 1494)。默认情况下设置为 Y。
  • CTX_XDL_AD_INTEGRATION = 1 | 2 | 3 | 4 - Linux VDA 要求使用 Kerberos 配置设置向 Delivery Controller 进行身份验证。Kerberos 配置根据系统上已安装和已配置的 Active Directory 集成工具确定。指定要使用且受支持的 Active Directory 集成方法:
    • 1 - Samba Winbind
    • 2 - Quest Authentication Service
    • 3 - Centrify DirectControl
    • 4 - SSSD
  • CTX_XDL_HDX_3D_PRO = Y | N - Linux Virtual Desktop 支持 HDX 3D Pro,这是一系列图形加速技术,旨在优化富图形应用程序的虚拟化水平。HDX 3D Pro 要求安装兼容的 NVIDIA GRID 图形卡。如果选择了 HDX 3D Pro,则要为 VDI 桌面(单会话)模式配置 Virtual Delivery Agent -(即 CTX_XDL_VDI_MODE=Y)。SUSE 不支持 HDX 3D Pro。对于 SUSE 平台,务必将该值设置为 N。
  • CTX_XDL_VDI_MODE = Y | N - 将计算机配置为专用桌面交付模型 (VDI) 还是托管共享桌面交付模型。对于 HDX 3D Pro 环境,将此变量设置为 Y。默认情况下,此变量设置为 N。
  • CTX_XDL_SITE_NAME = dns-name - Linux VDA 通过 DNS 发现 LDAP 服务器。要将 DNS 搜索结果限制为本地站点,应指定 DNS 站点名称。默认情况下,此变量设置为 <无>
  • CTX_XDL_LDAP_LIST = list-ldap-servers - Linux VDA 查询 DNS 来发现 LDAP 服务器。如果 DNS 无法提供 LDAP 服务记录,您可以提供以空格分隔的 LDAP FQDN(带有 LDAP 端口)列表。例如 ad1.mycompany.com:389。默认情况下,此变量设置为 <无>
  • CTX_XDL_SEARCH_BASE = search-base-set - Linux VDA 通过设置为 Active Directory 域根的搜索基础(例如 DC=mycompany,DC=com)来查询 LDAP。为了提高搜索性能,可以指定搜索基础(例如 OU=VDI,DC=mycompany,DC=com)。默认情况下,此变量设置为 <无>
  • CTX_XDL_FAS_LIST = list-fas-servers - 联合身份验证服务 (FAS) 服务器是通过 AD 组策略配置的。由于 Linux VDA 不支持 AD 组策略,您可以改为提供以分号分隔的 FAS 服务器的列表。顺序必须与在 AD 组策略中配置的顺序相同。如果删除了任何服务器地址,则使用 <无> 文本字符串填充空白处,并使服务器地址的顺序保持不变。
  • CTX_XDL_START_SERVICE = Y | N - 在完成 Linux VDA 配置后,是否启动 Linux VDA 服务。默认情况下设置为 Y。

设置环境变量并运行配置脚本:

命令 复制

export CTX_XDL_SUPPORT_DDC_AS_CNAME=Y|N

export CTX_XDL_DDC_LIST=list-ddc-fqdns

export CTX_XDL_VDA_PORT=port-number

export CTX_XDL_REGISTER_SERVICE=Y|N

export CTX_XDL_ADD_FIREWALL_RULES=Y|N

export CTX_XDL_AD_INTEGRATION=1|2|3|4

export CTX_XDL_HDX_3D_PRO=Y|N

export CTX_XDL_VDI_MODE=Y|N

export CTX_XDL_SITE_NAME=dns-site-name | '<none>'

export CTX_XDL_LDAP_LIST=list-ldap-servers | '<none>'

export CTX_XDL_SEARCH_BASE=search-base-set | '<none>'

export CTX_XDL_FAS_LIST = list-fas-servers | '<none>'

export CTX_XDL_START_SERVICE=Y|N

sudo -E /opt/Citrix/VDA/sbin/ctxsetup.sh

运行 sudo 命令时,键入 -E 选项以将现有环境变量传递给它创建的新 shell。Citrix 建议使用前面的命令并加上 #!/bin/bash 作为第一行来创建 shell 脚本文件。

另外,您可以使用单个命令指定所有参数:

命令 复制

sudo CTX_XDL_SUPPORT_DDC_AS_CNAME=Y|N \

CTX_XDL_DDC_LIST=list-ddc-fqdns \

CTX_XDL_VDA_PORT=port-number \

CTX_XDL_REGISTER_SERVICE=Y|N \

CTX_XDL_ADD_FIREWALL_RULES=Y|N \

CTX_XDL_AD_INTEGRATION=1|2|3|4 \

CTX_XDL_HDX_3D_PRO=Y|N \

CTX_XDL_VDI_MODE=Y|N \

CTX_XDL_SITE_NAME=dns-name \

CTX_XDL_LDAP_LIST=list-ldap-servers \

CTX_XDL_SEARCH_BASE=search-base-set \

CTX_XDL_FAS_LIST = list-fas-servers \

CTX_XDL_START_SERVICE=Y|N \

/opt/Citrix/VDA/sbin/ctxsetup.sh

删除配置更改

在某些情形下,您可能需要删除 ctxsetup.sh 脚本对配置所做的更改,但不卸载 Linux VDA 软件包。

继续操作前,请查看此脚本的帮助信息:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxcleanup.sh --help

删除配置更改:

命令 复制

sudo /opt/Citrix/VDA/sbin/ctxcleanup.sh

Important

此脚本会从数据库删除所有配置数据,从而使 Linux VDA 无法使用。

配置日志

ctxsetup.shctxcleanup.sh 脚本会在控制台上显示错误,并将其他信息写入配置日志文件 /tmp/xdl.configure.log

重新启动 Linux VDA 服务,确保更改生效。

步骤 6:运行 Linux VDA

使用 ctxsetup.sh 脚本配置 Linux VDA 后,可以运行以下命令来控制 Linux VDA。

启动 Linux VDA

启动 Linux VDA 服务:

命令 复制

sudo /sbin/service ctxhdx start

sudo /sbin/service ctxvda start

停止 Linux VDA

停止 Linux VDA 服务:

命令 复制

sudo /sbin/service ctxvda stop

sudo /sbin/service ctxhdx stop

重新启动 Linux VDA

重新启动 Linux VDA 服务:

命令 复制

sudo /sbin/service ctxvda stop

sudo /sbin/service ctxhdx restart

sudo /sbin/service ctxvda start

检查 Linux VDA 的状态

要检查 Linux VDA 服务的运行状态,请执行以下操作:

命令 复制

sudo /sbin/service ctxvda status

sudo /sbin/service ctxhdx status

步骤 7:在 XenApp 或 XenDesktop 中创建计算机目录

创建计算机目录和添加 Linux VDA 计算机的过程与传统的 Windows VDA 方法类似。有关如何完成这些任务的更加详细的说明,请参阅创建计算机目录管理计算机目录

创建包含 Linux VDA 计算机的计算机目录时会面临一些限制,使得该过程不同于为 Windows VDA 计算机创建计算机目录:

  • 对于操作系统,请选择:
    • “服务器操作系统”选项(对于托管共享桌面交付模型)。 
    • “桌面操作系统”选项(对于 VDI 专用桌面交付模型)。
  • 确保计算机未执行电源管理设置。
  • 请勿在同一个计算机目录中混合使用 Linux 和 Windows VDA 计算机。

注意

早期版本的 Citrix Studio 不支持“Linux 操作系统”的概念。但是,选择 Windows 服务器操作系统或服务器操作系统选项等同于使用托管共享桌面交付模型。选择 Windows 桌面操作系统或桌面操作系统选项等同于使用 XenDesktop 每计算机一个用户交付模型。

提示

要在删除计算机后将其重新加入 Active Directory 域,必须在计算机目录中删除并重新添加该计算机。

步骤 8:在 XenApp 或 XenDesktop 中创建交付组

创建交付组和添加包含 Linux VDA 计算机的计算机目录的过程与 Windows VDA 计算机几乎相同。有关如何完成这些任务的更加详细的说明,请参阅创建交付组

创建含有 Linux VDA 计算机目录的交付组时会面临以下限制:

  • 对于交付类型,请选择“桌面”或“应用程序”。
  • 确保所选的 AD 用户和组已正确配置,可以登录到 Linux VDA 计算机。
  • 请勿允许未经身份验证的(匿名)用户登录。
  • 请勿在交付组中混入含有 Windows 计算机的计算机目录。

Important

Linux VDA 1.4 版及更高版本支持发布应用程序。但是,Linux VDA 不支持将桌面和应用程序交付给相同的计算机。

有关如何创建计算机目录和交付组的信息,请参阅 XenApp 和 XenDesktop 7.18