vSphere 集群服务 (vCLS) 默认处于激活状态,并在所有 vSphere 集群中运行。vCLS 可确保在 vCenter Server 变得不可用时,集群服务仍可用于维护在集群中运行的工作负载的资源和运行状况。配置和运行 DRS 和 HA 仍需要 vCenter Server

在 vSphere 8.0 U3 中,引入了嵌入式 vCLS,新增了特性和功能。最初,vCLS 组件是运行 Photon OS 的完整虚拟机。对于 vSphere 8.0 U3,vCLS 现在基于 vSphere Pod 技术,有时也称为 PodCRX。在本文档中,PodCRX 称为 vCLS 虚拟机。vCLS 的 API 接口未更改,但这些 vCLS 组件的部署和管理已更改。这就需要进行名称更改。继平台服务控制器从外部变为嵌入式的先例之后,对于 vSphere 8.0 U3 之前的版本,vCLS 现在称为外部 vCLS。从 vSphere 8.0 U3 及更高版本开始的 vCLS 现在称为嵌入式 vCLS。

vCLS 会在升级 vCenter Server 过程中进行升级。对于嵌入式 vCLS,vCLS 升级与集群中 ESXi 主机的升级相关联。VC 为 8.0 U3 后,且在具有一个或多个 8.0 U3 ESXi 主机的集群中,将激活嵌入式 vCLS。8.0 U3 VC 可以根据集群构成运行外部 vCLS 和嵌入式 vCLS。

vCenter 在运行 ESX 8.0 U3 或更高版本的受支持主机的集群上部署嵌入式 vCLS。对于使用早期版本的主机集群,vCenter 将部署外部 vCLS。vCenter 清单允许多个版本的 ESX 共存,在滚动 ESX 升级期间会发生这种情况。对于混合版本的集群,只要集群中的任何可用主机支持嵌入式 vCLS,vCenter 就会使用嵌入式 vCLS。这将创建一个点,当主机在升级到受支持的版本后退出维护模式时,将集群从外部 vCLS 升级到嵌入式 vCLS。vCenter 会等待第一个嵌入式 vCLS 虚拟机可用,然后停用外部 vCLS 并销毁这些虚拟机,从而无缝进行该升级。此外,如果所有受支持的主机都变得不可用,并且仅保留不受支持的主机,vCenter 可以恢复为外部 vCLS。但是,由于此步骤基于主机变得不可用,因此可能会导致嵌入式 vCLS 卸载和外部 vCLS 部署之间发生 DRS 不可用。

vCLS 使用代理虚拟机维护集群服务的运行状况。将主机添加到集群时,将创建 vCLS 代理虚拟机(vCLS 虚拟机)。在外部 vCLS 中,每个 vSphere 集群中最多需要运行 3 个 vCLS 虚拟机,并在集群内进行分发。此外,也可在仅包含一个或两个主机的集群上激活外部 vCLS。在这些集群中,vCLS 虚拟机数量分别是 1 和 2。在嵌入式 vCLS 中,每个 vSphere 集群中最多需要运行两个 vCLS 虚拟机。

将自动应用新的反关联性规则。在外部 vCLS 中,每三分钟执行一次检查,如果多个 vCLS 虚拟机位于一个主机上,则这些虚拟机将自动重新分配到不同的主机。在嵌入式 vCLS 中,每分钟执行一次检查。

vCLS 虚拟机会在每个集群中运行,即使在集群上未激活 vSphere DRS 或 vSphere HA 等集群服务也无妨。vCLS 虚拟机的生命周期操作由 ESX Agent Manager 和工作负载控制平面等 vCenter Server 服务进行管理。vCLS 虚拟机不支持网卡。

如果 ESXi 版本与 vCenter Server 兼容,则激活了 vCLS 的集群可以包含不同版本的 ESXi 主机。vCLS 可与 vSphere Lifecycle Manager 集群配合使用。

嵌入式 vCLS

在 vSphere 8.0 U3 中,引入了嵌入式 vCLS,它具有新功能和改进。

外部 vCLS 与嵌入式 vCLS 之间的差异

在外部 vCLS 中,术语“仲裁数”表示 DRS 正常运行所需的已打开电源的 vCLS 虚拟机的最小数量,即 1。在嵌入式 vCLS 中,我们使用术语“最小 vCLS 虚拟机计数”,其用途和值 1 保持不变。为了提高 DRS 的可用性,这两种类型的 vCLS 都为虚拟机提供了冗余。如果具有一个 vCLS 虚拟机的主机出现故障,则其他 vCLS 虚拟机可用于保留 DRS 的功能。集群中部署的 vCLS 虚拟机总数(假设有足够的可用主机和资源来部署冗余 vCLS 虚拟机)称为所需冗余计数。对于外部 vCLS,所需冗余计数为 3。对于嵌入式 vCLS,此计数减少到 2。

什么是 vCLS 虚拟机?

vSphere 8.0 Update 3 中引入的 vCLS 虚拟机基于 vSphere Pod 技术。vCLS 服务作为 ESXi 主机上的虚拟机部署在主机或集群上。但是,这是一个特殊的虚拟机,其操作系统非常小,并且使用容器运行时,这使得 vCLS 虚拟机可以在 vSphere 上运行。新的 vCLS 虚拟机可提供安全且高性能的运行时。

vCLS 虚拟机关闭电源

可以关闭嵌入式 vCLS 虚拟机的电源。当此类虚拟机的电源关闭时,vSphere 会将此状况解释为故障,并继续重新启动虚拟机并向 hostd 重新注册 vCLS 虚拟机。

当 vCLS 虚拟机的电源关闭时,它会等待 vSphere 重新启动该虚拟机。如果 vSphere 超时后未重新启动该虚拟机,则 vCLS 虚拟机重新配置会启动。

每当系统撤出嵌入式 vCLS 虚拟机时(如,对于进入维护模式的主机),该虚拟机将在其他主机上销毁并替换,而不是使用 vMotion。

注: 此行为与外部 vCLS 行为不同,即 vCLS 检测到虚拟机关闭电源并立即继续打开该虚拟机的电源。

vCLS 虚拟机

嵌入式 vCLS 中的 vCLS 虚拟机的可见性和访问权限与外部 vCLS 相当。

  • vCLS 虚拟机在 VC 中可见。
  • 在 VC 清单层次结构中,vCLS 虚拟机位于名为 vCLS 的专用虚拟机文件夹中。
  • vCLS 虚拟机上的某些操作不可用。
  • vCLS 虚拟机的查询请求可用。
  • 嵌入式 vCLS 虚拟机的命名方式与外部 vCLS 虚拟机相同:vCLS-{UUID},其中 UUID 是 ESX 主机的 UUID (summary.hardware.uuid)。

虚拟机 ExtraConfig

为了识别 vCLS 虚拟机,嵌入式 vCLS 继续使用虚拟机 ExtraConfig 中的特定选项。

标识嵌入式 vCLS 虚拟机的额外配置选项为 vCLSCRX.agent,值为 true

注: 除了外部 vCLS 虚拟机额外配置选项 ( HDCS.agent) 之外,还设置此额外配置选项。嵌入式和外部 vCLS 虚拟机非常相似,应使用 HDCS.agent 的存在检测出它们以排除在大多数操作之外,但不同之处是,某些操作仍然需要使用 vCLSCRX.agent 的存在加以区分。

嵌入式 vCLS 将管理这些虚拟机的扩展更改为内部/系统 vpxd 扩展。

  • 嵌入式 vCLS 虚拟机的虚拟机配置中的 managedBy 属性设置为该 VC 扩展的键。具有此属性有助于识别嵌入式 vCLS 虚拟机并将其与外部 vCLS 虚拟机区分开来,因为此属性显示在 vSphere 中。
  • 属性 config.managedBy.extensionKey 设置为 VirtualCenter
  • 属性 config.managedBy.type 设置为 vcls-entity

断开连接的 vCLS 虚拟机

vCLS 虚拟机在 VC 中可能会断开连接。下面的各种情形都会发生此问题。

  • 具有运行 vCLS 虚拟机的 ESX 主机
  • 通过停止主机上的 vpxa 来模拟连接问题;连接状态转换为 notResponding
  • 停止主机上的 vCLS 虚拟机。
  • 在主机上重新启动 vpxa;连接状态转换为 connected

执行上述步骤后,vCLS 虚拟机位于 VC 清单中,但不在 ESX 主机上。因此,此虚拟机被标记为 orphaned。HdcsManager 负责检测和删除断开连接的 vCLS 虚拟机。在外部 vCLS 中,vCLS 检测并删除断开连接的 vCLS 虚拟机。

集群虚拟属性 vclsVmType

vSphere 提供了有关集群是运行由外部 vCLS 管理的 vCLS 虚拟机还是由 vSphere 管理的嵌入式 vCLS 虚拟机的信息。对于嵌入式 vCLS 虚拟机集群,此属性的值为 Embedded,对于外部 vCLS 虚拟机集群,值为 external

清理 vCLS 虚拟机

如果运行 vCLS 虚拟机的集群 ESX 主机失去与 VC 的连接并从 VC 清单中移除,则 vCLS 虚拟机将继续在该 ESX 主机上运行。换句话说,非受管 ESX 主机可能最终会运行 vCLS 虚拟机。

将运行 vCLS 虚拟机的非受管 ESX 主机添加为独立主机时,vpxd 会检测到意外存在 vCLS 虚拟机并停止该虚拟机。

将运行 vCLS 虚拟机的非受管 ESX 主机添加到 VC 集群时,vCLS 不会在将主机添加到集群之前停止 vCLS 虚拟机。添加主机将触发 vCLS 重新配置工作流。该工作流会停止无关的 vCLS 虚拟机。

停用 vCLS

注: 在外部 vCLS 中,停用 vCLS(全局或按集群)的功能称为 撤回模式

外部 vCLS 实现的功能允许按集群停用 vCLS 虚拟机部署。从某种意义上说,此功能是在不可预见的情况下停用外部 vCLS 功能的停止开关。此功能非常有用的几个示例场景:

  • 集群已停用 DRS 和 HA。在这种情况下,vCLS 虚拟机没有任何用,并且您不希望 VC 清单中存在系统虚拟机。
  • 集群已停用 DRS,并且已激活 HA。在这种情况下,vCLS 虚拟机确实为以最佳方式对虚拟机进行故障转移提供了一些帮助,但为了获得边际效益,您可能不希望 VC 清单中存在系统虚拟机。
  • 集群已激活 DRS。在这种情况下,您可能希望暂时停用外部 vCLS 部署,以解决一些暂时性配置或暂时性运行时问题。例如,您可能希望停用外部 vCLS 直到 VSAN 数据存储可用,以确保 vCLS 虚拟机部署在该 VSAN 数据存储上。

嵌入式 vCLS 保留了为集群激活或停用 vCLS 的相同功能。

vSphere DRS 和 vCLS 虚拟机

vSphere DRS 是 vSphere 的一项重要功能,要保证 vSphere 集群内运行的工作负载正常运行,必须使用此功能。DRS 取决于 vCLS 虚拟机的可用性。

注: 如果尝试在 vCLS 虚拟机出现问题的集群上激活 DRS,则会在 集群摘要页面上显示一条警告消息。
注: 如果 DRS 已启用但 vCLS 虚拟机出现问题,必须解决这些问题,DRS 才能正常运行。将在 集群摘要页面上显示一条警告消息。

如果 DRS 不起作用,这并不意味着 DRS 已停用。当 vCLS 虚拟机未运行并因此跳过第一个 DRS 实例时,vCLS 运行状况仅在已激活 DRS 的集群中变为不正常。当至少一个 vCLS 虚拟机未运行时,vCLS 运行状况将在未激活 DRS 的集群上保持已降级状态。vCenter 具有避免意外进入降级状态的措施。例如,集群维护模式建议不包括一次将所有支持 vCLS 的主机置于维护模式的选项。

外部 vCLS 的数据存储选择

将根据连接到集群内主机的所有数据存储的排名,自动为 vCLS 虚拟机选择数据存储。

如果集群中的主机具有连接到数据存储的闲置预留 DRS 插槽,则选择该数据存储的几率更大。在选择本地数据存储之前,如有可能,算法会尝试将 vCLS 虚拟机置于共享数据存储中。首选具有更多可用空间的数据存储,并且算法尽量不将多个 vCLS 虚拟机放置在同一个数据存储上。只有在部署和打开 vCLS 虚拟机电源后,才能更改这些虚拟机的数据存储。

如果要将 vCLS 虚拟机的 VMDK 移至其他数据存储或附加不同的存储策略,可以重新配置 vCLS 虚拟机。执行此操作时,将显示一条警告消息。

可以通过执行 Storage vMotion 将 vCLS 虚拟机迁移到其他数据存储。如果要将 vCLS 虚拟机与工作负载虚拟机分开进行分组,例如,如果对在数据中心中运行的所有虚拟机使用特定的元数据策略,则可以标记 vCLS 虚拟机或附加自定义属性。

注: 将数据存储置于维护模式时,如果数据存储托管 vCLS 虚拟机,则必须手动对 vCLS 虚拟机应用 Storage vMotion 以将其移至新位置或将集群置于撤回模式。将显示一条警告消息。
进入维护模式任务将开始但无法完成,因为有 1 个虚拟机驻留在数据存储上。如果决定继续,可以始终在“近期任务”中取消该任务 (The enter maintenance mode task will start but cannot finish because there is 1 virtual machine residing on the datastore. You can always cancel the task in your Recent Tasks if you decide to continue)。
所选数据存储可能存储无法关闭电源的 vSphere 集群服务虚拟机。为确保 vSphere 集群服务正常运行,必须在将此数据存储关闭进行维护之前,手动将这些虚拟机通过 vMotion 迁移到集群中的其他数据存储。请参阅以下知识库文章: KB 79892 (The selected datastore might be storing vSphere Cluster Services VMs which cannot be powered off. To ensure the health of vSphere Cluster Services, these VMs have to be manually vMotioned to a different datastore within the cluster prior to taking this datastore down for maintenance. Refer to this KB article: KB 79892)。
选中复选框 让我迁移所有虚拟机的存储,并在迁移之后继续进入维护模式。以继续。
注: 嵌入式 vCLS 不使用数据存储并忽略放置设置。

外部 vCLS 数据存储放置

可以替代默认 vCLS 虚拟机数据存储放置。

vSphere 集群服务 (vCLS) 虚拟机数据存储位置是按默认数据存储选择逻辑选择的。要替代集群的默认 vCLS 虚拟机数据存储放置,可以通过浏览到集群并单击配置 > vSphere 集群服务 > 数据存储下的添加来指定一组允许的数据存储。无法为 vCLS 选择某些数据存储,因为 SRM 或 vSAN 等无法配置 vCLS 的解决方案会阻止这些数据存储。用户无法为 vCLS 虚拟机添加或移除解决方案阻止的数据存储。

监控 vSphere 集群服务

可以监控 vCLS 虚拟机消耗的资源及其运行状况。

vCLS 虚拟机不会显示在主机和集群选项卡的清单树中。数据中心内所有集群中的 vCLS 虚拟机都放在一个名为 vCLS 的单独虚拟机和模板文件夹中。仅可在 vSphere Client虚拟机和模板选项卡中查看此文件夹和 vCLS 虚拟机。这些虚拟机通过与常规工作负载虚拟机不同的图标进行标识。可以在 vCLS 虚拟机的摘要选项卡中查看有关 vCLS 虚拟机用途的信息。

可以在监控选项卡中监控 vCLS 虚拟机消耗的资源。

可以在集群的摘要选项卡中显示的集群服务 portlet 中监控 vCLS 的运行状况。

表 1. vCLS 的运行状况
状态 颜色编码 摘要
正常 绿色 如果至少有一个 vCLS 虚拟机正在运行,则无论集群包含多少个主机,状态仍保持为正常。
已降级 黄色 如果 vCLS 虚拟机的运行时间长于 3 分钟(180 秒),则状态为已降级。
不正常 红色 如果在已启用 DRS 的集群中,vCLS 虚拟机的运行时间为 3 分钟或更短时间,则状态为不正常。

维护 vSphere 集群服务的运行状况

vCLS 虚拟机始终打开电源,因为 vSphere DRS 取决于这些虚拟机的可用性。应将这些虚拟机视为系统虚拟机。只有管理员才能对 vCLS 虚拟机执行选择性操作。为避免集群服务失败,请不要在 vCLS 虚拟机上执行任何配置或操作。

vCLS 虚拟机受到保护,以防被意外删除。集群虚拟机和文件夹受到保护,以防被用户(包括管理员)修改。

只有管理员 SSO 组的成员用户才能执行以下操作:

  • 对 vCLS 虚拟机进行只读访问
  • 为 vCLS 虚拟机使用标记和自定义属性

可能会破坏 vCLS 虚拟机正常运行的操作:

  • 更改 vCLS 虚拟机的电源状况
  • 对 vCLS 虚拟机进行资源重新配置,例如更改 CPU、内存、磁盘大小、磁盘放置
  • 虚拟机加密
  • 对 vCLS 虚拟机触发 vMotion
  • 更改 BIOS
  • 从清单中移除 vCLS 虚拟机
  • 从磁盘中删除 vCLS 虚拟机
  • 启用 vCLS 虚拟机的 FT
  • 克隆 vCLS 虚拟机
  • 配置 PMem
  • 将 vCLS 虚拟机移至其他文件夹
  • 重命名 vCLS 虚拟机
  • 重命名 vCLS 文件夹
  • 在 vCLS 虚拟机上启用 DRS 规则和替代
  • 在 vCLS 虚拟机上启用 HA 准入控制策略
  • 在 vCLS 虚拟机上启用 HA 替代
  • 将 vCLS 虚拟机移至资源池
  • 从快照恢复 vCLS 虚拟机

在 vCLS 虚拟机上执行任何破坏性操作时,都会显示警告对话框。

故障排除:

vCLS 虚拟机的运行状况(包括电源状态)由 VMware ESX Agent Manager 和工作负载控制平面服务管理。如果 vCLS 虚拟机打开电源失败,或者由于缺少 vCLS 虚拟机仲裁而跳过集群的第一个 DRS 实例,则会在集群摘要页面中显示一个横幅,以及一个指向知识库文章的链接,以帮助对错误状态进行故障排除。

由于 vCLS 虚拟机视为系统虚拟机,因此无需对这些虚拟机执行备份或生成快照。这些虚拟机的运行状况由 vCenter Server 服务管理。

将集群置于撤回模式

将数据存储置于维护模式时,如果数据存储托管 vCLS 虚拟机,则必须手动通过 Storage vMotion 将 vCLS 虚拟机迁移到新位置或将集群置于撤回模式。

此任务说明了如何将集群置于撤回模式。

过程

  1. 登录到 vSphere Client。
  2. 导航到必须停用 vCLS 的集群。
  3. 导航到 vCenter Server 配置选项卡。
  4. 配置下,选择常规
  5. 选择默认的系统管理选项或撤回模式(这会停用 vCLS)。
  6. 单击确定

结果

如果集群激活了 DRS,则 DRS 将停止运行,并在 集群摘要中额外显示一条警告。DRS 即使激活也不起作用,直到通过将 vCLS 从撤回模式移除而对其进行重新配置。

在主机出现故障的情况下,vSphere HA 不会执行最佳位置放置。HA 依赖于 DRS 来提供放置建议。HA 仍会打开虚拟机的电源,但这些虚拟机可能不会在最佳主机上打开电源。

检索外部 vCLS 的密码

可以检索用于登录到 vCLS 虚拟机的密码。

要确保集群服务运行状况,请避免访问 vCLS 虚拟机。本文适用于 vCLS 虚拟机上的明确诊断。

过程

  1. 使用 SSH 登录到 vCenter Server Appliance。
  2. 运行以下 python 脚本。
    /usr/lib/vmware-wcp/decrypt_clustervm_pw.py
  3. 读取密码的输出。

    pwd-script-output

    Read key from file

    Connected to PSQL

    PWD: (password displayed here)

结果

使用检索到的密码,可以登录到 vCLS 虚拟机。

vCLS 虚拟机反关联性策略

vSphere 支持 vCLS 虚拟机与另一组工作负载虚拟机之间的反关联性。

计算策略提供了一种方法来指定 vSphere Distributed Resource Scheduler (DRS) 应如何将虚拟机放置在资源池中的主机上。使用 vSphere 计算策略编辑器创建和删除计算策略。您可以创建或删除计算策略,但不能修改该策略。如果删除策略定义中使用的类别标记,也会删除该策略。在 vSphere 中打开虚拟机摘要页面,以查看应用于虚拟机的计算策略及其与每个策略的合规性状态。您可以为一组反关联到 vCLS 虚拟机组的工作负载虚拟机创建计算策略。vCLS 反关联性策略可以包含用于一组工作负载虚拟机的单个用户可见标记,另一组 vCLS 虚拟机则通过内部进行识别。

创建或删除 vCLS 虚拟机反关联性策略

vCLS 虚拟机反关联性策略描述了某类虚拟机与 vCLS 系统虚拟机之间的关系。

vCLS 虚拟机反关联性策略不支持将 vCLS 虚拟机和应用程序虚拟机放置在同一主机上。如果您不希望 vCLS 虚拟机和运行关键工作负载的虚拟机在同一主机上运行,则这种策略会非常有用。运行关键工作负载(如 SAP HANA)的一些最佳做法需要专用主机。创建策略后,放置引擎会尝试将 vCLS 虚拟机放置在未运行策略虚拟机的主机上。

vCLS 虚拟机反关联性策略的实施可能会在多个方面受到影响:
  • 如果策略应用于不同主机上的多个虚拟机,并且无法提供足够的主机来分发 vCLS 虚拟机,则 vCLS 虚拟机将整合到没有策略虚拟机的主机中。
  • 如果置备操作指定目标主机,则即使违反策略,也会始终遵守该指定。DRS 会在后续修复周期中尝试将 vCLS 虚拟机移至合规主机。

过程

  1. 为要包含在 vCLS 虚拟机反关联性策略中的每个虚拟机组创建类别和标记。
  2. 标记要包含的虚拟机。
  3. 创建 vCLS 虚拟机反关联性策略。
    1. 从 vSphere 中,单击策略和配置文件 > 计算策略
    2. 单击添加以打开新建计算策略向导。
    3. 填写策略名称,然后从策略类型下拉控件中选择 vCLS 虚拟机反关联性
      策略 名称必须唯一。
    4. 提供策略的描述,然后使用虚拟机标记选择应用策略的类别标记
      除非有多个虚拟机标记与某个类别相关联,否则向导会在选择标记 类别后填入虚拟机标记。
    5. 单击创建以创建策略。
  4. (可选) 要删除计算策略,请打开 vSphere,单击策略和配置文件 > 计算策略,将每个策略显示为一个卡视图。单击“删除”以删除策略。