Linux Virtual Delivery Agent

VDA 升级(预览版)

简介

  • 以前,升级 VDA 需要完全手动干预。版本 2503 通过引入 VDA 升级代理简化了 DaaS 部署的 VDA 升级。从版本 2503 开始,后续升级可以直接从共享或本地文件路径执行。

  • VDA 升级代理 ctxvua 负责与 VDA 升级服务通信并执行以下功能:

  • 计划检查:VDA 升级代理每 15 分钟查询 VDA 升级服务以获取计划升级信息。
  • 自动升级:收到升级指令后,VDA 升级代理会自动升级 VDA。
  • 状态报告:VDA 升级代理将升级结果(成功或失败)报告回 VDA 升级服务。

要了解有关 VDA 升级服务的更多信息,请参阅 技术简报:Citrix VDA 升级服务。您可以在其中找到该服务的概述、其工作原理的详细信息以及其他有用的资源。

注意事项

  • Linux VDA 使用底层包管理命令(如 rpm 或 apt)进行升级,这与手动升级过程类似,配置文件在命令行升级期间会自动处理。

  • 与 Windows 不同,Linux VDA 包含内置的 VDA 升级代理。这简化了升级过程,因为代理已存在。VDA 升级代理的版本与 VDA 版本绑定。

  • 默认情况下,VDA 升级代理处于禁用状态。要启用代理,请运行以下命令:

    /opt/Citrix/VDA/bin/ctxreg create -k "HKLM\Software\Citrix\UpdateServices\UpdateAgent" -t "REG_DWORD" -v "fEnabled" -d "0x00000001" --force
    
    systemctl start ctxvua.service
    
    <!--NeedCopy-->
    
  • VDA 升级代理服务 (ctxvua) 默认处于禁用状态。您可以使用 systemctl 启用并启动此服务。

  • 作为最佳实践,我们建议您在投入生产之前彻底测试 VDA 升级。

  • 与 Windows 不同,Linux VDA 升级仅支持从文件路径进行。这意味着您不能直接使用 Azure CDN URL 或其他在线存储库。您必须自行管理 VDA 包。这适用于主要版本和次要版本升级。

  • 忽略 VDA 升级服务中的“最新 VDA 版本”和“升级状态”。对于 Linux,只有“VDA 升级状态”是相关的。

  • VDA 包的文件路径可以是 VDA 计算机的本地路径,也可以是共享位置(例如,挂载在 VDA 上的网络共享)。系统并非设计为自动下载包。您必须提供完整的包文件。

  • 使用 Studio 或 Citrix DaaS 远程 PowerShell SDK 时,请以 Windows UNC 路径格式(以 \\ 开头)指定路径,以通过路径验证。例如,/mnt/pkg\/`<package-name> 必须输入为 \\mnt\pkg\<package-name\>

  • “服务器”和“工作站”VDA 之间的区别不适用于 Linux。您可以在 Studio 或 PowerShell 中使用任一选项,而不会影响升级。

  • 不支持降级 VDA。

先决条件

  • 控制平面:Citrix DaaS™
  • VDA 版本:2503 或更高版本

    注意:

    我们建议使用最新的 CR VDA。

  • VDA 必须安装 VDA 升级代理,并且服务必须正在运行。
  • 您拥有升级 VDA 的权限。
  • VDA 升级在 Studio 中配置了正确的 CR 或 LTSR 轨道。
    • VDA 未在使用中。(用户必须从其中注销。)
    • VDA 未处于维护模式。(管理员可以将 VDA 置于维护模式。如果 VDA 超出了最大允许注册尝试次数,也可以自动置于维护模式。)
  • VDA 必须属于交付组并已向 DaaS 注册。
  • 目标 VDA 支持当前 VDA 的操作系统。

  • 使用 Studio 升级 VDA

  • 一般工作流程

使用 Studio 升级 VDA 的一般工作流程如下:

  1. 为目录启用 VDA 升级。

  2. 按目录升级 VDA。目前不支持按计算机升级 VDA。有关更多信息,请参阅 配置 VDA 自动升级

    注意:

    计划对目录进行 VDA 升级时,目录中的所有计算机都包含在升级范围内。因此,我们建议在启动升级之前备份这些计算机。

  3. VDA 升级过程不支持升级附加组件或使用恢复等功能。跳过这两个步骤。

    1. 配置计划选项,包括升级时间和升级失败阈值。失败阈值可能决定在停止进程或触发警报之前可以容忍多少次失败升级。
  1. 为 VDA 安装程序位置选择“使用本地文件共享”。以 Windows UNC 格式(例如,\\server\share\path)提供路径。

  2. “强制注销会话”选项控制 VDA 升级期间用户会话的处理方式。虽然 Studio UI 仅允许注销断开连接的会话,但 PowerShell 可以注销所有会话(已连接和断开连接)。注销不是即时的。VDA 升级代理尝试查询升级计划并发现断开连接的会话后,VDA 升级服务会启动注销。然后代理等待 15 分钟,再重试查询。

使用 PowerShell 升级 VDA

您可以使用 Windows 上的远程 PowerShell SDK 配置 VDA 升级。有关远程 PowerShell SDK 的更多信息,请参阅 Citrix DaaS 远程 PowerShell SDK

-  以下是 PowerShell cmdlet:

-  Get-VusCatalog

-  使用此 cmdlet 获取目录的详细信息,例如 **Name**、**Uid**、**Uuid**、**UpgradeState**(**Available**、**UpToDate**、**Scheduled**、**Unknown**)、**Upgrade scheduled** 和 **StateId**(**Upgrade scheduled** 的状态)。
  • Get-VusMachine

    使用此 cmdlet 获取计算机的详细信息,例如 MachineNameUidUuidUpgradeState(可用、最新、已计划、未知)和 StateId升级已计划的状态)。

  • Get-VusComponentVersion

    使用此 cmdlet 检查 VDA 是否已报告组件版本。使用 MachineId 筛选 VDA。MachineId 是来自 Get-BrokerMachine 的 UUID。

  • New-VusMachineUpgrade

使用此 cmdlet 在计算机级别配置 VDA 升级。

  • New-VusCatalogSchedule

    使用此 cmdlet 在计算机目录级别计划 VDA 升级。

示例:

Get-BrokerMachine -DNSName 'u22-test*'

New-VusCatalogSchedule -CatalogName "test-catalog" -UpgradeNow -DurationInHours 2 -LogoffOption ActiveAndDisconnectedSessions -VdaServerPackageUri "\\root\xendesktopvda_24.11.0.1-1.ubuntu22.04_amd64.deb"

Get-VusComponent -CatalogName 'test-catalog'

Get-VusCatalog -Name 'test-catalog'
<!--NeedCopy-->

故障排除

升级过程的核心围绕 VDA 升级代理服务 (ctxvua) 展开。它充当中间人,与 VDA 升级服务通信并执行 /opt/Citrix/VDA/sbin/update_helper.sh 脚本以进行与操作系统相关的操作。在升级过程中,有关此过程的信息存储在注册表中。

注册表

使用命令 **/opt/Citrix/VDA/bin/ctxreg dump grep -i UpdateAgent** 检查与 VDA 升级代理相关的注册表设置。这可以揭示配置问题或升级过程本身的问题。
  1. 检查配置: ctxvua 服务的配置文件位于 /etc/xdl/updateagent.conf。审查此文件有助于识别配置错误。

日志

以下日志文件对于故障排除至关重要:

  • /var/log/xdl/vua.logctxvua 服务的日志文件。这是检查与升级代理操作相关问题的主要日志。ctxvua 服务的配置文件位于 /etc/xdl/updateagent.conf。审查此文件有助于识别配置错误。

  • /var/log/xdl/update_helper.logupdate_helper.sh 脚本的日志文件。此日志对于诊断升级期间与操作系统级别任务相关的问题至关重要。

常见问题

本节介绍 VDA 升级期间遇到的常见问题,特别是 Studio 中禁用的选项和“升级未知”状态。

常见问题 1:升级选项已禁用

症状:在 Studio 中,给定目录的“设置升级类型”和“升级 VDA”选项已禁用(灰显)。

解决方案:检查您正在使用的目录类型是否支持 VDA 升级服务。如果不支持,则无法使用这些自动化升级功能,需要手动管理升级。

常见问题 2:“升级未知”状态

症状:为计算机目录启用 VDA 升级服务后,“升级状态”仍为“未知”,而不是按预期更改为“可用”或“最新”。“升级未知”是一种瞬态。它最终应更新为“可用”或“最新”。

“升级未知”的故障排除步骤

  1. 验证 VDA 升级代理是否正在报告版本。

    • 步骤 1a:获取计算机的 UUID:

         Get-BrokerMachine -DNSName '<hostname>'
       <!--NeedCopy-->
      
    • 步骤 1b:检查代理报告的组件版本:

       Get-VusComponentVersion -MachineId "<UUID>"
       <!--NeedCopy-->
      

      如果 Get-VusComponentVersion 命令返回空白,则表示 VDA 升级代理尚未报告其版本。这可能表明 VDA 已“硬注册”(检查计算机目录和交付组设置)。这还表明 VDA 升级代理可能未安装或未在目标 VDA 上运行。

  2. 验证 VDA 升级服务同步。

    步骤 2a:检查 VDA 升级服务是否已从 Broker 数据库同步计算机:

    ```    
    Get-VusEntityUnit -EntityUUID ""
    <!--NeedCopy--> ```
    

    如果已知,请将 "" 替换为实际的 EntityUUID,或者不带参数运行以获取所有。如果您发现此项为空白,则可能表示计算机尚未与 VDA 升级服务服务器同步。

    步骤 2b:如果计算机尚未同步,请留出一些时间让 VDA 升级服务进行同步。然后,确认已设置“升级类型”。

参考

VDA 升级(预览版)