23.7. “No Valid Host Found”错误故障排除

在一些情况下,/var/log/nova/nova-conductor.log 包括了以下错误:

NoValidHost: No valid host was found. There are not enough hosts available.

当计算调度程序找不到适合启动新实例的裸机节点时,会发生此错误。这通常意味着,Compute 服务期望找到的资源与裸机恢复服务向 Compute 建议的资源之间存在不匹配。使用以下步骤来检查是否是这种情况。

步骤

  1. 查找 stackrc 文件:

    $ source ~/stackrc
  2. 检查是否在节点上成功执行内省。如果内省失败,则检查每个节点是否包含所需的 ironic 节点属性:

    (undercloud) $ openstack baremetal node show [NODE UUID]

    检查 properties JSON 项中的 cpuscpu_archmemory_mblocal_gb 都有有效的值。

  3. 检查映射到该节点的 Compute 类别:

    (undercloud) $ openstack flavor show [FLAVOR NAME]

    确保不超过所需节点数的节点属性。

  4. 运行 openstack baremetal node list 命令以确保有足够的节点处于可用状态。处于 manageable 状态的节点通常表示内省失败。
  5. 运行 openstack baremetal node list 命令以检查节点是否不处于维护模式。如果节点自动更改为维护模式,则可能的原因是电源管理凭据不正确。检查电源管理凭据,然后移除维护模式:

    (undercloud) $ openstack baremetal node maintenance unset [NODE UUID]
  6. 如果您使用的是自动配置集标记,则检查是否有足够的节点对应于每个类别和配置集。在节点上运行 openstack baremetal node show 命令并检查 properties 字段中的 capabilities 密钥。例如,标记为 Compute 角色的节点应包含 profile:compute 这样的信息。
  7. 内省后,节点信息从 Bare Metal 传播到 Compute 需要一段时间。但是,如果您手工进行了一些操作,节点可能会短时间内对 nova 不可用。使用以下命令检查系统中的总体资源:

    (undercloud) $ openstack hypervisor stats show