Linux Virtual Delivery Agent

通过 Azure 进行 Linux VDA 自助更新

此功能有助于立即或在计划的时间自动更新 Linux VDA 软件。当您在 Citrix DaaS Standard for Azure(以前称为“适用于 Azure 的 Citrix Virtual Apps and Desktops Standard”)中创建 Linux VDA 时非常有用。您在 Azure 中不需要 VM 的任何管理员权限。有关详细信息,请参阅在 Citrix DaaS Standard for Azure 中创建 Linux VDA

配置

要使用此功能,请完成以下步骤:

步骤 1:将更新信息和新 VDA 包上载到 Azure 容器

步骤 1a:在 Azure 存储帐户下创建一个容器并将容器访问级别设置为 Blob (Anonymous read access for blobs only)(Blob (仅限 blob 的匿名读取访问权限))。

注意:

Azure 容器和 blob 专门由客户持有和管理。Citrix 对其任何安全问题不承担责任。为了确保数据安全性和成本效益,请在每次自助更新后将容器访问级别设置为 Private (no anonymous access)(私密(无匿名访问权限))。

Step1b:将 VDA 更新信息合并到名为 UpdateInfo.json 的 JSON 文件中。有关文件格式的示例,请参阅以下块:

{
 "Version": "21.04.200.4",
"Distributions":[
{
"TargetOS": "RHEL7_9",
"PackageName": "",
"PackageHash": ""
},
{
"TargetOS": "RHEL8_3",
"PackageName": "XenDesktopVDA-21.04.200.4-1.el8_x.x86_64.rpm",
"PackageHash": "a6f2aba23b84bbc3a4640294a8bb92474e0cacbab1e5ae33416c0a4473a28d73"
},
{
"TargetOS": "UBUNTU18_04",
"PackageName": "xendesktopvda_21.04.200.4-1.ubuntu18.04_amd64.deb",
"PackageHash": "4148cc3f25d3717e3cbc19bd953b42c72bd38ee3fcd7f7034c2cd6f2b15b3c5a"
},
{
"TargetOS": "UBUNTU20_04",
"PackageName": "",
"PackageHash": ""
}
]
}
<!--NeedCopy-->

其中,“Version” 表示新的 VDA 版本,“Distributions” 是一组更新对象。每个对象包含三个项目:

  • “TargetOS”:必须是 “RHEL7_9”(适用于 RHEL 7、CentOS 7 和 Amazon Linux 2)、”RHEL8_3”、”UBUNTU18_04” 或 “UBUNTU20_04”。ctxmonitorservice 无法识别任何其他发行版。
  • “PackageName”:指定版本的 VDA 软件包的全名。
  • “PackageHash”:使用 shasum -a 256 <pkgname> 命令计算的 SHA-256 值。

Step1c:将 JSON 文件和 Linux VDA 软件包的新版本上载到您的 Azure 容器。

步骤 2: 在主映像或每个 VDA 上启用自助更新功能

默认情况下,自我更新处于禁用状态。如果在 Citrix DaaS Standard for Azure 中创建 Linux VDA,必须在主映像上执行功能启用。否则,请直接在每个目标 VDA 上启用该功能。

要启用自我更新,请运行类似于以下内容的命令,以编辑 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Citrix\SelfUpdate 下的注册表项。

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_DWORD" -v "fEnabled" -d "0x00000001" --force

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "ScheduledTime" -d "Immediately" --force

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "Url" -d "<Your-Azure-Container-Url>" --force

/opt/Citrix/VDA/bin/ctxreg create -k "HKLM\System\CurrentControlSet\Control\Citrix\SelfUpdate" -t "REG_SZ" -v "CaCertificate" -d "<Local-Certificate-Path-of-PortalAzureCom>" --force
<!--NeedCopy-->

下表介绍了注册表设置。

注册表设置 说明
fEnabled 此设置为必填项。默认情况下,该值为 0,表示自我更新已禁用。可以将其设置为 1 以启用自我更新。
Url 此设置为必填项。它设置 Azure 容器的 URL 以获取更新信息和新的 VDA 软件包。
ScheduledTime 此设置为必填项。可以将其设置为 ImmediatelyNextStartImmediately 意味着下载 VDA 软件包后立即运行更新。当下载速度很高且您的更新非常紧急时,此选项适用。但是,如果下载软件包时有任何实时会话,则可能会中断用户体验。NextStart 意味着在下次启动 ctxmonitorservice 时执行更新。当下载速度不高且您的更新不紧急时,此选项适用。
CaCertificate 此设置为可选设置。它设置 PEM 证书的完整路径以验证 Azure 容器的 URL。对于 Azure blob,它可以是从浏览器中检索并转换为 PEM 的 portal.azure.com 的证书。为了安全起见,我们建议您添加此注册表设置,但仅在 Ubuntu 上受支持。在 RHEL 上,它没有链接 curl 命令的一些 NSS 库。确保设置证书的最低权限。

重新启动 ctxmonitorservice 时,它首先查询 Url 以获取 UpdateInfo.json 文件,然后从 JSON 文件中检索更新版本。然后 ctxmonitorservice 会将更新版本与当前版本进行比较。如果当前版本较早,该服务将从 Azure 下载新版本的 VDA 软件包并将其保存在本地。之后,它根据 ScheduledTime 的设置运行更新。对于本地部署,您可以直接重新启动 ctxmonitorservice 以触发更新。但是,在 Citrix DaaS Standard for Azure 中,您对 VM 没有管理员权限,只能在重新启动 VDA 计算机后重新启动 ctxmonitorservice。如果更新失败,您的 VDA 将回滚到现有版本。

注意:

  • 无法更改在主映像上配置的注册表设置。
  • 如果环境中的所有 VM 同时下载软件包,本地网络可能会拥塞。
  • 如果更新和回滚均失败,用户数据将丢失。
  • 如果更新失败但回滚成功,同一网络中的用户可能拥有不同版本的 Linux VDA。这种情况不是最佳情况。
  • 更新通常需要几分钟时间才能完成。Citrix Studio 中没有状态指示器。
通过 Azure 进行 Linux VDA 自助更新