9.4. 对 "No Valid Host Found" 错误进行故障排除

在一些情况下,/var/log/nova/nova-conductor.log 包括了以下错误:
NoValidHost: No valid host was found. There are not enough hosts available.
这意味着 Nova Scheduler 无法找到合适的裸机节点来引导新的实例。造成这个问题的原因通常是 Nova 所期望的资源和 Ironic 通知给 Nova 的资源不匹配。检查以下内容:
  1. 确保內省可以成功完成。否则,检查每个节点都包括了需要的 Ironic 节点属性。对于每个节点:
    $ ironic node-show [NODE UUID]
    
    检查 properties JSON 项中的 cpuscpu_archmemory_mblocal_gb 都有有效的值。
  2. 根据 Ironic 节点属性检查使用的 Nova flavor 没有超过特定数量:
    $ nova flavor-show [FLAVOR NAME]
    
  3. 根据 ironic node-list 检查有足够状态为 available 的节点。节点的状态为 manageable 通常意味着內省操作失败。
  4. 使用 ironic node-list 检查没有处于维护模式的节点。当一个节点被自动变为维护模式时,通常意味着不正确的电源管理凭证。检查它们并删除维护模式:
    $ ironic node-set-maintenance [NODE UUID] off
    
  5. 如果您使用 AHC 工具程序来自动标记节点,请根据每个 flavor 和档案来检查是否有足够的相关节点。检查 ironic node-show 输出中的 properties 项的 capabilities 值。例如,一个标记为 Compute 角色的节点应该包括 profile:compute
  6. 在进行完內省操作后,从 Ironic 为 Nova 生成节点信息可能会需要一些时间来完成。director 的工具程序通常会把这个时间考虑进去。但是,如果您手工进行了一些操作,节点可能会在一个短时间内对 Nova 无效。使用以下命令检查您的系统中的总资源:
    $ nova hypervisor-stats