Linux Virtual Delivery Agent

通过 Azure 进行 Linux VDA 自动更新

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

配置

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

步骤 1:将更新信息和新的 VDA 软件包上传到您的 Azure 容器

步骤 1a:在您的 Azure 存储帐户下创建一个容器,并将您的容器访问级别设置为 Blob(仅限 Blob 的匿名读取访问)。

注意:

Azure 容器和 Blob 由客户独家持有和管理。Citrix® 对其任何安全问题概不负责。为确保数据安全和成本效率,请在每次自我更新后将容器访问级别设置为专用(无匿名访问)。

步骤 1b:将您的 VDA 更新信息整合到名为 UpdateInfo.json 的 JSON 文件中。有关文件格式示例,请参阅以下代码块:

{
 "Version": "21.04.200.4",
"Distributions":[
{
"TargetOS": "RHEL7_9",
"PackageName": "",
"PackageHash": ""
},
{
-  "TargetOS": "UBUNTU20_04",
-  "PackageName": "",
-  "PackageHash": ""
}
]
}
<!--NeedCopy-->

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

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

步骤 1c:将 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 此设置为必填项。您可以将其设置为立即或下次启动。立即表示在下载 VDA 软件包后立即运行更新。当下载速度快且更新紧急时,此选项适用。但是,如果在下载软件包时有任何活动会话,它可能会中断用户体验。下次启动表示在 ctxmonitord 下次启动时运行更新。当下载速度不快且更新不紧急时,此选项适用。
CaCertificate 此设置为可选。它设置 PEM 证书的完整路径,以验证 Azure 容器的 URL。对于 Azure Blob,它可以是从浏览器检索然后转换为 PEM 的 portal.azure.com 证书。为了安全起见,我们建议您添加此注册表设置,但 Ubuntu 或 Debian 不支持此设置,因为在 Ubuntu 或 Debian 上使用指定的证书文件验证对等方时,curl 命令无法按预期工作。请确保设置证书的最低权限。

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

注意:

  • 在主映像上配置的注册表设置无法更改。
  • 如果环境中所有虚拟机同时下载软件包,则本地网络可能会拥堵。
  • 要从提供的 URL 下载,您必须在目标虚拟机上安装 curl。
  • 如果更新和回滚都失败,则用户数据将丢失。
  • 如果更新失败但回滚成功,则同一网络上的用户可能具有不同版本的 Linux VDA。这种情况并非最佳。
  • 更新通常需要几分钟才能完成。Citrix Studio 中没有状态指示器。
通过 Azure 进行 Linux VDA 自动更新