9.3. 对创建 Overcloud 进行故障排除

实施的过程可能会在 3 个层面出现问题:
  • 编配(Heat 和 Nova 服务)
  • 裸机部署(Ironic 服务)
  • 实施后的配置(Puppet)
如果 Overcloud 的实施在以上 3 个层面中出现问题,使用 OpenStack 客户端和服务日志文件来诊断相关的错误。

9.3.1. 编配

在多数情况下,Heat 会在 Overcloud 创建失败后显示出现问题的 overcloud 堆栈:
$ heat stack-list

+-----------------------+------------+--------------------+----------------------+
| id                    | stack_name | stack_status       | creation_time        |
+-----------------------+------------+--------------------+----------------------+
| 7e88af95-535c-4a55... | overcloud  | CREATE_FAILED      | 2015-04-06T17:57:16Z |
+-----------------------+------------+--------------------+----------------------+
如果堆栈列表为空,这意味着出现的问题与初始的编配设置相关。检查您的 Heat 模板和配置选项,并在运行 openstack overcloud deploy 后的错误信息。

9.3.2. 裸机部署

使用 ironic 查看所有注册的节点和它们当前的状态:
$ ironic node-list

+----------+------+---------------+-------------+-----------------+-------------+
| UUID     | Name | Instance UUID | Power State | Provision State | Maintenance |
+----------+------+---------------+-------------+-----------------+-------------+
| f1e261...| None | None          | power off   | available       | False       |
| f0b8c1...| None | None          | power off   | available       | False       |
+----------+------+---------------+-------------+-----------------+-------------+
以下是一些在部署过程中造成的常见问题。
  • 在结果列表中检查 Provision StateMaintenance 栏中的数据。检查以下情况:
    • 表为空,或比期望的节点数要少
    • Maintenance 被设置为 True
    • Provision State 被设置为 manageable
    这通常意味着问题是由注册或发现过程造成的。例如,如果 Maintenance 被自动设置为 True,这通常是因为节点使用了错误的电源管理凭证。
  • 如果 Provision State 的值是 available,这意味着问题发生在裸机部署开始前。
  • 如果 Provision State 的值是 activePower State 的值是 power on,这意味着裸机部署已成功完成,所出现的问题发生在实施后的配置阶段。
  • 如果一个节点的 Provision State 值是 wait call-back,这意味着对这个节点的裸机部署还没有完成。等待这个状态改变;或连接到出现问题的节点的虚拟控制台上检查相关的输出。
  • 如果 Provision State 的值是 errordeploy failed,则意味着对这个节点的裸机部署失败。检查裸机节点的详情:
    $ ironic node-show [NODE UUID]
    
    查看包括错误描述信息的 last_error 项。如果错误信息不明确,您可以查看相应的日志:
    $ sudo journalctl -u openstack-ironic-conductor -u openstack-ironic-api
    
  • 如果您看到 wait timeout error 信息,节点的 Power State 值是 power on,连接到出现问题的节点的虚拟控制台上检查相关的输出。

9.3.3. 实施后的配置

在配置阶段会发生许多事情。例如,特定的 Puppet 模块可能会因为设置的问题出错。本小节提供了诊断相关问题的方法。

过程 9.4. 诊断实施后的配置问题

  1. 列出 Overcloud 堆栈中的所有资源来找出哪个出现了问题:
    $ heat resource-list overcloud
    
    这会显示一个包括所有资源以及它们的状态的列表。查看带有 CREATE_FAILED 的资源。
  2. 显示出问题的资源:
    $ heat resource-show overcloud [FAILED RESOURCE]
    
    查看 resource_status_reason 项中的内容来帮助您进行诊断。
  3. 使用 nova 命令查看 Overcloud 节点的 IP 地址。
    $ nova list
    
    heat-admin 用户身份登录到一个实施的节点上。例如,堆栈资源列表显示一个 Controller 节点出现问题,您可以登录到那个 Controller 节点。heat-admin 用户有 sudo 访问权限。
    $ ssh heat-admin@192.0.2.14
    
  4. 检查 os-collect-config 日志找出可能造成故障的原因。
    $ sudo journalctl -u os-collect-config
    
  5. 在某些情况下,Nova 的整个节点实施过程都失败。在这种情况下,一个 Overcloud 角色类型的 OS::Heat::ResourceGroup 会出错。使用 nova 来查看问题。
    $ nova list
    $ nova show [SERVER ID]
    
    多数常见错误会显示 No valid host was found 错误信息,请参阅 第 9.4 节 “对 "No Valid Host Found" 错误进行故障排除” 来获得更多与排除这类错误相关的信息。在其它情况下,查看以下日志文件来进行进一步的故障排除:
    • /var/log/nova/*
    • /var/log/heat/*
    • /var/log/ironic/*
  6. 使用 SOS 工具包来收集系统硬件和配置的信息。这些信息可被用于进行故障诊断和故障排除。技术支持和开发人员也可以通过 SOS 获得有用的信息。SOS 在 Undercloud 和 Overcloud 中都有用。运行以下命令安装 sos 软件包:
    $ sudo yum install sos
    
    产生一个报告
    $ sudo sosreport --all-logs