使用本地主机缓存进行无中断数据库升级
本地主机缓存 (LHC) 功能允许在发生中断时继续执行 Citrix Virtual Apps and Desktops 站点中的连接代理操作。
以下过程演示了在没有辅助区域的情况下如何使用 LHC 执行站点的无中断升级。
在继续操作之前,建议先查看本地主机缓存功能、其要求和限制: https://docs.citrix.com/en-us/citrix-virtual-apps-desktops/manage-deployment/local-host-cache.html
还有关于本地主机缓存大小和扩展的 Tech Zone 指南,可在此处找到: https://docs.citrix.com/en-us/tech-zone/design/design-decisions/local-host-cache-sizing-scaling.html
免责声明: 在实际生产环境中实施这些步骤之前,请先在测试环境中执行这些步骤,以确保您熟悉该过程并为出现的任何环境特定问题或问题做好准备。还建议使用最新的 LTSR 累积更新 (CU),因为有一些与 LHC 相关的修复程序可以使您的环境受益。
概述
- 为此过程配置环境。
- 确定主要代理。
- 强制中断以触发本地主机缓存功能。
- 允许 VDA 向选定的二级代理重新注册。
- 在未选择的二级 Broker 上执行产品升级。
- 执行强制性站点升级,包括数据库升级。
- 对任何剩余的未选定二级 Broker 进行产品升级。
- 退出中断和本地主机缓存模式。
- 允许 VDA 在新升级的交付控制器中重新注册。
- 在最后剩余的 Delivery Controller(之前选定的二级代理商)上执行产品升级。
- 将环境恢复为默认配置。
过程
-
检查以确定是否使用以下 PowerShell cmdlet 启用了本地主机缓存。
Get-BrokerSite
查找
LocalHostCacheEnabled : True
如果为 false,则启用本地主机缓存。
Set-BrokerSite -LocalHostCacheEnabled $true -ConnectionLeasingEnabled $false
此 cmdlet 还禁用连接租用功能。请勿启用本地主机缓存和连接租用。
-
默认情况下,发生中断时,启用了“ShutdownDesktopsAfterUse”属性的池交付组中进行电源管理的桌面 VDA 被置于维护模式。要覆盖默认行为,必须在站点范围内并针对受影响的每个交付组启用它。运行以下 PowerShell cmdlet。
Set-BrokerSite -ReuseMachinesWithoutShutdownInOutageAllowed $true
Set-BrokerDesktopGroup -Name "<Delivery Group Name>"- ReuseMachinesWithoutShutdownInOutage $true
- 如果 Broker Service 已配置为使用自定义 VDA、StoreFront 或 StoreFront TLS 端口,请执行以下步骤以确保高可用性 (HA) 服务也配置了正确的自定义端口。
-
通过发出以下命令验证每个代理的当前代理服务端口设置:
%programfiles%\Citrix\Broker\Service\BrokerService.exe -show
-
通过发出以下命令验证每个 Broker 上的当前 HA 服务端口设置:
%programfiles%\Citrix\Broker\Service\HighAvailabilityService.exe -show
-
如果为 HA 服务列出的 VDA、StoreFront 或 StoreFront TLS 端口与代理服务不匹配,请使用列出的相应命令行开关将 HA 服务端口设置设置为相应匹配:
%programfiles%\Citrix\Broker\Service\HighAvailabilityService.exe -VdaPort <port> %programfiles%\Citrix\Broker\Service\HighAvailabilityService.exe -StoreFrontPort <port> %programfiles%\Citrix\Broker\Service\HighAvailabilityService.exe -StoreFrontTlsPort <port> <!--NeedCopy-->
注意:
预计代理服务和 HA 服务的 SDK 端口是不同的。
更改代理服务的 StoreFront 端口时,HA 服务的 StoreFront 端口将更新为自动匹配。但是,接收自动更新的服务仍需要手动重启才能开始使用新端口。
-
-
在中断期间,选定的二级代理处理所有连接。中断开始时,辅助代理没有当前的 VDA 注册数据,但是当 VDA 与其通信时,会触发重新注册过程。在该过程中,辅助 Broker 还获取有关该 VDA 的当前会话信息。要将 VDA 的重新注册从默认 5 分钟间隔加快到 1 分钟间隔,此设置必须应用于站点中的所有控制器。
New-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer -Name HeartbeatPeriodMs -PropertyType DWORD -Value 60000
-
要监视 VDA 的重新注册,请启动 Citrix Studio,然后单击 配置 > 控制器 节点,然后查看向主代理注册的 VDA 数量。让 Citrix Studio 保持打开状态,以便在 VDA 在中断期间向选定的辅助代理重新注册时,计数降至零。请注意,您不能使用 Citrix Studio 查看向二级代理注册的 VDA 数量。
-
要强制中断并进入 LHC 模式,请编辑每个Delivery Controller 器的注册表。
New-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name OutageModeForced -PropertyType DWORD -Value 1
-
要确定是否已触发中断以及每个主代理是否已进入 LHC 模式,请转到每个 Controller 上事件日志的“应用程序”节点,然后从 Citrix 高可用性服务中查找以下事件。
3502:Citrix 高可用性服务已激活,它将代理用户的会话请求,直到发现的正常代理活动问题得到解决。
-
通过刷新 Citrix Studio 中的控制器节点,确认所有 VDA 已向选定的辅助代理重新注册。当主要代理显示已注册的 VDA 为零时,所有 VDA 都可能已重新注册。
-
二级 Broker 使用其运行计算机的按字母顺序排列的FQDN列表来确定(选择)如果发生中断,哪个二级 Broker 将负责该区域的 Broker 业务。要确认选择了哪个辅助代理,请在 Windows 事件应用程序日志中查找 Citrix 高可用性服务中的以下事件。
3504:Citrix 高可用性服务“选定控制器的 FQDN”已成为其对等控制器中的选定实例(对等控制器 FQDN 列表)。
-
选择一个未选择的对等控制器,然后在未选择的控制器上执行产品升级。
-
从新升级的控制器启动 Citrix Studio 并执行强制性站点升级,包括数据库升级。
-
在其余未选择的对等控制器上执行产品升级。确保不要中断仍在管理环境中所有新连接和活动连接的选定控制器。
-
升级所有未选定的 Controller 后,是时候让站点摆脱停机状态并过渡到 LHC 模式了。要删除强制中断触发器,请编辑每个 Controller 的注册表。如果愿意,也可以删除该密钥。
Set-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer\LHC -Name OutageModeForced -Value 0
-
要确认站点是否退出中断模式,请在每个控制器上,在应用程序事件日志中查找来自 Citrix Broker 服务的以下事件。
3004:Citrix Broker 服务成功连接到 XenDesktop 数据库。
3500:Citrix Broker 服务已检测到与数据库的通信问题已得到解决,并将使用主站点数据库中的配置恢复正常的代理活动。
-
从 Citrix Studio 刷新控制器节点,观看 VDA 在升级后的控制器中重新注册。确认所有 VDA 都已成功重新注册。
-
在最后剩下的 Controller 上执行产品升级,该控制器在中断期间充当选的辅助代理。
-
(此步骤是可选的。)通过修改每个 Controller 上的注册表,将 VDA 注册间隔设置回默认值 5 分钟(如果愿意,也可以删除该项)。
Set-ItemProperty -Path HKLM:\SOFTWARE\Citrix\DesktopServer -Name HeartbeatPeriodMs -PropertyType DWORD -Value 300000
-
(此步骤是可选的。)如果要更改回电源管理的交付组的默认行为,请使用以下 cmdlet。
Set-BrokerSite -ReuseMachinesWithoutShutdownInOutageAllowed $false Set-BrokerDesktopGroup -Name "<Delievery Group Name>" -ReuseMachinesWithoutShutdownInOutage $false <!--NeedCopy-->
使用本地主机缓存的无中断升级现在应该已经完成。