幻影控制器可能是实时控制器虚拟机 (VM) 或不存在的虚拟机,它们可能会加入群集,也可能不会加入群集。NSX Manager 同步 vCenter Server 清单中的所有虚拟机的列表。如果 vCenter Server 或主机删除控制器虚拟机而没有来自 NSX Manager 的请求,或者 vCenter Server 清单更改控制器虚拟机的引用 MOID,则会创建一个幻影控制器。

如果从 NSX 中创建控制器,配置信息将存储在 NSX Manager 中。NSX Manager 通过 vCenter Server 部署新的控制器虚拟机。

NSX 管理员为 NSX Manager 提供配置(包括 IP 地址池)以创建一个控制器。NSX Manager 从池中移除一个 IP 地址,并将该 IP 以及其余控制器配置作为虚拟机创建请求推送到 vCenter ServerNSX Manager 等待 vCenter Server 确认该请求的状态。

  • The controller creation process was successful:如果成功创建控制器虚拟机,vCenter Server 将启动控制器虚拟机。NSX Manager 存储虚拟机的受管对象 ID (MOID) 以及其余控制器配置信息。MOID(或 MO-REF)是 vCenter 为其清单中的每个对象分配的唯一标识符。如果虚拟机仍然是 vCenter Server 清单的一部分,vCenter Server 还使用该 MOID 跟踪虚拟机。
  • The controller creation process was not successful:如果 IP 和网络连接配置不正确,则 NSX Manager 可能无法连接到 vCenter ServerNSX Manager 等待预设的时间以创建一个单节点控制器群集(对于第一个群集),或者将新控制器加入活动群集。如果定时器到期,NSX Manager 将请求 vCenter Server 删除虚拟机。IP 地址将返回到池中,并且 NSX 声明控制器创建失败。

幻影控制器如何生成

NSX Manager 请求删除控制器时,vCenter Server 使用 MOID 查找要删除的控制器虚拟机。

不过,如果任何 vCenter 活动导致从 vCenter Server 清单中移除控制器虚拟机,vCenter 将从其数据库中移除该 MOID。请注意,即使从 vCenter 清单中移除后,控制器虚拟机可能仍会在 NSX Manager 上处于活动状态。但对于 vCenter Server 来说,控制器虚拟机不再存在。即使 vCenter Server 已从其清单中移除虚拟机,可能也不会删除该虚拟机。如果虚拟机仍处于活动状态,则它仍在加入或尝试加入 NSX 控制器群集。

下面是幻影控制器如何生成的最常见示例:

  • vCenter Server 管理员从清单中移除包含控制器虚拟机的主机。然后,重新添加主机。在移除主机时,vCenter Server 删除与主机以及其中的虚拟机关联的所有 MOID。在随后重新添加主机时,vCenter Server 为主机和虚拟机分配全新的 MOID。对于 NSX 用户来说,主机和虚拟机仍然是相同的,但从 vCenter Server 的角度看,主机和虚拟机是全新的对象。但实际上,主机和虚拟机仍然是相同的。在主机和虚拟机中运行的应用程序不会发生变化。
  • vCenter Server 管理员通过 vCenter Server 或使用主机管理删除控制器虚拟机。这种删除不是由 NSX Manager 发起的请求。
  • 此处的“删除”还包括导致虚拟机丢失的任何主机/存储故障。在这种情况下,虚拟机对于 vCenter Server 以及群集和 NSX Manager 为缺失状态。但由于删除不是由 NSX Manager 发起的请求,因此,NSX Manager 和控制器群集认为控制器仍然有效。返回到 NSX Manager 的控制器状态指示该控制器节点已关闭并且不属于群集,而不会显示在 UI 上。NSX Manager 还具有一些日志以指示无法再访问控制器。

发现幻影控制器时执行的操作

  1. 按照NSX Controller 已断开连接中所述,同步控制器。
  2. 请参见日志条目。如果控制器虚拟机已意外删除或损坏,您必须使用强制删除 (Forcefully Delete)选项从 NSX Manager 数据库中清除该条目。有关详细信息,请参阅删除 NSX Controller
  3. 在删除控制器后,请确认:
  • 实际删除了控制器虚拟机。
  • show control-cluster startup-nodes 命令仅显示有效的控制器。
  • NSX Manager 的 syslog 条目不再显示额外的控制器。

从 NSX 6.2.7 或更高版本开始,NSX Manager 根据原始 MOID 验证 vCenter 清单,以确保控制器虚拟机在清单中仍然存在。如果 NSX Manager 在清单中找不到控制器虚拟机,则 NSX Manager 使用虚拟机的实例 UUID 搜索虚拟机。实例 UUID 存储在虚拟机中,因此,即使将虚拟机重新添加到 vCenter 清单,该 ID 也不会发生变化。如果 NSX Manager 可以使用实例 UUID 找到虚拟机,则 NSX Manager 使用新的 MOID 更新其数据库。

不过,如果您克隆控制器虚拟机,则克隆的虚拟机具有与原始虚拟机相同的属性以及新的实例 UUID。NSX Manager 无法检测克隆的虚拟机的 MOID。

幻影控制器的日志条目

在检测到幻影控制器时,将显示以下错误级别日志条目:

  • 2017-07-31 22:15:05.844 UTC ERROR NVPStatusCheck ControllerServiceImpl:2146 - Controller <#> does not exist, might be deleted already. Skip saving its connectivity info.
  • 2017-07-31 22:15:05.769 UTC ERROR NVPStatusCheck ControllerServiceImpl:2580 - the node is created by this NSX Manager <#>, but database has no record and delete might be in progress.