症状或错误
Desktop Studio或Desktop Director中的机器显示一个未知的力量状态.
CDS_EVENT_HOSTING_FAILED_POWER_ACTION
Citrix Broker服务检测到虚拟机“%2”上的电源操作“%1”失败。
这个问题很可能是由主机问题引起的。检查主机上虚拟机的配置是否禁止所请求的电源操作。检查主机存储是否存在问题。检查主机连接信息是否正确。
错误的细节:
类型为“%4”的异常“%3”。
背景
桌面交付控制器(DDC)代理日志包含与相关机器相关的Citrix池管理异常,例如:
23/08/11 15:18:41.7081: HostingManagement:PollForPowerStateUpdates:在为02e0d308- c9fc - 4fbac -9fb2-aaaaaaaaaa获取状态时出现问题:Citrix.ManagedMachineAPI. nosuchmanagedmachineexception:类型为'Citrix.ManagedMachineAPI. nosuchmanagedmachineexception:异常。抛出了NoSuchManagedMachineException'。在Citrix.PoolManagement.VMManager.VmmImplementation.MicrosoftScvmmProvider.Connection。在Citrix.PoolManagement.VMManager.VmmImplementation.MicrosoftScvmmProvider.Connection执行(Runspace Runspace, Action ' 1 Action)GetVM(String id, Runspace Runspace) at Citrix.PoolManagement.VMManager.VmmImplementation.MicrosoftScvmmProvider.SCVMMConnector.<>c__DisplayClass44 'b__42(Runspace Runspace)在Citrix.PoolManagement.VMManager.VmmImplementation.MicrosoftScvmmProvider.SCVMMConnector。在Citrix.PoolManagement.VMManager.VmmImplementation.MicrosoftScvmmProvider.SCVMMConnector调用[T](Func ' 2 worker)CallAndRetry [T] (Func 3工人)
解决方案
要在DDC上更新正确的主机ID,请完成一个以下解决方案的其中之一(解决方案1或解决方案2).
此问题也可以使用其他方法解决。其中一些记录在这里:
移除受影响的虚拟机,然后重新添加
确保SCVMM热修复版本匹配
使用维护模式修复Hypervisor连接状态。
重启FMA服务
解决方案1
这可能是由虚拟机管理程序对虚拟机元数据的更改引起的。如果虚拟机的唯一ID已更改,则XenDesktop数据库可能不知道此UID不匹配。该进程将验证XenDesktop已知的虚拟机UID,并与hypervisor提供的UID进行比较。
解决方案1步骤图概述
警告!在完成这些操作之前,请备份XenDesktop数据库。
使用PowerShell控制台打开DDC并运行t执行以下命令显示虚拟机管理程序中的所有虚拟机id。
asnp Citrix* $ErrorActionPreference=Continue Get-ChildItem -Path XdHyp:\ -force -recurse | ?{$_。IsMachine} | Out-File -Filepath c:\xdhyp.txt
的xdhyp.txt输出文件包含来自hypervisor的正确机器id。打开文件,按一下Ctrl+F或编辑>找到.2 .搜索虚拟机的名称,在此例中虚拟机的名称为PVS0003。
示例输出
PSPath: Citrix.Host.Admin.V1\Citrix.Hypervisor::XDHyp:\Connections\XenServer\PVS0003vm PSParentPath:“Citrix. host . admin . v1 \Citrix. v1”Hypervisor:: xdhp:\Connections\XenServer PSChildName: PVS0003。\Citrix. host . admin . v1 \Citrix. XDHypHypervisor piscontainer: True Name: PVS0003 FullName: PVS0003。vm对象类型:虚拟机Id: 7d1d6004-5319-7a7e-59cb-2662e212a3e5 IsContainer: True IsMachine: True IsSnapshotable: True ObjectPath: /PVS0003。vm FullPath: XDHyp:\Connections\XenServer\PVS0003。vm IsSymLink: False AdditionalData: {}
请注意:机器ID如下:
Id: 7d1d6004-5319-7a7e-59cb-2662e212a3e5。
你的结果会有所不同。执行如下命令:
powerstate未知
这将标识具有未知电源状态的机器。
+注意输出中的“HostedMachineId”。
现在比较步骤1中的“ID”和这一步中的“HostedMachineId”,你会发现ID是不同的。
+正确的“Id”是从步骤1和错误的值存在于数据库(从步骤3)
+我们也可以通过在SQL站点数据库中浏览以下表格并确认值来验证。
Chb_Config。工人>> hoststedmachineid >>
DesktopUpdateManagerSchema。ProvisionedVirtualMachine>>虚拟机id >>3 .执行以下命令,修改XenDesktop数据库中机器ID的记录,使其与Hypervisor的机器ID匹配。
Set-BrokerMachine -MachineName 'MyDomain\MyMachine' - hostdmachineid[前面输出的机器ID]
这就纠正了HostedMachineId用于使用从中检索的ID的问题机器xdhyp.txt.检查桌面工作室或桌面导演并刷新结果列表。
电源状态现在必须与管理程序中指示的状态匹配。
请注意:可能需要重新启动思杰经纪服务并/或重新启动虚拟机。
解决方案2
方案2示意图概述
Broker > Hypervisor通信的理解:
- Broker服务运行在站点(DDC)中的每个交付控制器上。它有许多子组件,其中之一是托管管理子组件。
- 代理服务必须使用VM/Machine ID与Hypervisor通信
- 虚拟机的UUID/Machine ID可通过运行命令获取“Get-BrokerMachine”cmdlet从站点中的任何DDC。
- 需要与虚拟化环境上虚拟机的BIOS文件相匹配,才能被站点上的DDC正常管理。
- 如果在VSphere服务器上更新了证书,则需要在站点上的所有DDC上更新相同的证书。证书不匹配还会导致代理将电源状态更改为“未知”,Hypervisor连接状态更改为“不可用”。
- 如果有主机/VSphere服务器处于维护状态或由于任何原因关闭,代理将更改电源状态为“未知”,Hypervisor连接状态为“不可用”。
- 如果一个控制器上的代理服务出现问题,来自另一个控制器的代理服务将作为首选控制器来控制站点的Power和pool。
- 如果网络或VMware主机问题已自行纠正,如果中断持续较长时间,代理服务将无法自行重新建立通信。在这种情况下,需要在站点中的所有DDC上重新启动代理服务。
- 或者,您可以使用Power Shell在任何DDC上运行cmdlet下面的命令。
- Update-HypHypervisorconnection - LiteralPath“hypervisor连接的实际路径”
- - Hypervisor连接的literalpath可以通过在任意DDC的PowerShell上运行下面的cmdlet来获取。
cd Xdhyp: cd ./连接
- 例如:Update-HypHypervisorConnection -LiteralPath "XDHyp:\connections\Connection"
- 或者,您可以使用Studio执行以下操作来更新连接:
在Studio上单击主机选项卡->右键单击连接->单击编辑连接->不做任何更改,单击确定。
解决方案3
从Desktop Studio中的Catalog & Delivery组中删除受影响的虚拟机,然后重新添加它们。
请注意:不能从MCS目录中删除机器。一旦虚拟机被删除,您将只能将该机器添加到“手动”类型的目录中。(该目录类型在XenDesktop 5.x中称为“现有”类型。它在XenApp和XenDesktop 7.x中被称为“Manual”。)
解决方案4
确保安装在ddc上的SCVMM控制台版本和热修复程序级别与SCVMM服务器的版本和热修复程序级别相同。
例如:在两个控制器上安装SCVMM控制台的升级版本,版本8,KB3097539,它与SCVMM服务器的热修复程序级别匹配。
解决方案5
- 执行“Get-BrokerHypervisorConnection”,检查输出的Hypervisor状态,
- 如果任何管理程序连接的状态是ON或OFF,
- 然后尝试将该连接置于维护模式几秒钟,然后再次关闭维护模式。
解决方案6
- 重新启动所有ddc上的Citrix Site服务。
注意:这可能会导致新连接的短暂中断,但当前会话不受影响。
- 以管理员身份打开PowerShell,执行以下命令:
- Stop-Service -Force
- Get-Service Citrix* |启动服务
问题原因
DDC必须使用虚拟机ID与管理程序通信。如果DDC的虚拟机机器ID不正确,则无法读取机器电源状态,并在代理日志中抛出异常。如果电源状态为未知的, DDC将无法管理虚拟机上的任何电源功能。
请注意:虚拟机在不同主机之间被强制移动时,会出现此情况。
其他可能原因
- 将在DDC上注册的事件id将提供关于问题类型的更多信息。
- 如果代理和Hypervisor之间出现短时间的网络中断,代理将虚拟机的电源状态更改为“未知”,Hypervisor连接状态更改为“不可用”。