如何排除OpenStack ironic introspection

时间:2020-01-09 10:39:47  来源:igfitidea点击:

"找不到有效主机。没有足够的可用主机",这是在overcloud部署期间最常见的问题之一。

发现和自省过程必须运行到完成。

但是,如果发现虚拟磁盘未提供任何响应,则Ironic的发现守护程序(被ironic发现)将在默认的1小时后超时。
在执行内省时,可能会遇到各种可能的问题,具体取决于环境和设置,因此我们必须知道要查找的文件,以解决与OpenStack具有讽刺意味的内省有关的问题。

理想情况下,根据节点关闭电源和重新启动所花费的时间,内省完成的时间不应超过10-15分钟,因此,如果看到"等待内省完成"的时间超过10-15分钟,则应该进行内省使用iLO IP登录到目标节点的控制台,并检查是否在屏幕上看到任何错误消息。

常见错误:对OpenStack具有讽刺意味的内省进行故障排除

错误:自省的无效供应状态

分析:

触发或者启动内省后,我们可能会收到此错误"内省的无效供应状态"。

Started Mistral Workflow. Execution ID: 7b9d7b9e-e1e5-4a80-92ce-d0b65471fcb9
Waiting for introspection to finish...
Introspection completed with errors:
Failed to run action [action_ex_id=bc6b453b-efb7-478c-afe9-67ff75bfb049, action_cls='<class 'mistral.actions.action_factory.BaremetalIntrospectionAction'>', attributes='{u'client_method_name': u'introspect'}', params='{u'uuid': u'83513ac9-f7bb-48d8-a360-25142e8b89e5', u'new_ipmi_username': None, u'new_ipmi_password': None}']
BaremetalIntrospectionAction.introspect failed: <class 'ironic_inspector_client.common.http.ClientError'>: Invalid provision state for introspection: "available", valid states are "['manageable', 'inspectfail', 'enroll', 'inspecting']"

解决方案:

仅当具有讽刺意味的节点处于"可管理"置备状态时,才可以进行自省。
因此,我们需要使用以下命令将相应讽刺节点的"配置状态"手动更改为"可管理"

# openstack baremetal node manage <node UUID>

每个自省节点必须具有:

  • 电源状态应关闭电源

  • 规定状态应可用

  • 维护应该是错误的

  • 实例UUID可能设置为"无"。

错误:查找错误:找不到属性的节点

分析:

如果我们输入的json文件与原始目标主机不匹配,或者我们必须为同一节点多次运行导入,则很可能会发生这种情况。
对于任何情况,如果导入部分失败,则应删除现有的讽刺节点,然后重新尝试导入。

例如,我错过了删除现有的讽刺节点并执行重新导入的操作,因此最终出现以下错误

2016-09-30 07:08:43.647 23412 ERROR ironic_inspector.utils [-] [node: MAC 52:54:00:f7:14:10] The following failures happened during running pre-processing hooks:
Look up error: Could not find a node for attributes {'bmc_address': u'', 'mac': [u'52:54:00:f7:14:10']}

解决方案:

要解决此类问题,请先从注册表中删除相应的讽刺节点

$openstack baremetal node delete <node UUID>

例如:

$openstack baremetal node delete 83513ac9-f7bb-48d8-a360-25142e8b89e5

然后通过更正json文件来重新执行导入

$ openstack baremetal import --json instackenv-controller.json

如何查看自检的当前进度状态?

我们可以从其他终端使用以下命令检查自省的进度

$sudo journalctl -l -u openstack-ironic-inspector -u openstack-ironic-inspector-dnsmasq -u openstack-ironic-conductor -f

要检查内省日志的日志文件?

内省日志(来自Ironic-inspector)位于/var/log/ironic-inspector中。
如果自省ramdisk运行期间出现故障,则讽刺检查器会将ramdisk日志作为gz压缩的tar文件存储在`/var/log/ironic-inspector/ramdisk /

# ls -l /var/log/ironic-inspector/
total 1012
-rw-r--r--. 1 ironic-inspector ironic-inspector 1027065 Sep 30 10:33 ironic-inspector.log
drwxr-x---. 2 ironic-inspector ironic-inspector 4096 Sep 30 07:08 ramdisk

这里的" ironic-inspector.log"将包含自省的当前进度状态,而ramdisk将包含从自省阶段收集的信息。

其中我提取了自省阶段创建的档案之一

# ls -l
total 216
-rw-r--r--. 1 root root 1814 Sep 30 06:48 df
-rw-r--r--. 1 root root 840 Sep 30 06:48 ip_addr
-rw-r--r--. 1 root root 275 Sep 30 06:48 iptables
-rw-r--r--. 1 root root 122681 Sep 30 06:48 journal
-rw-r--r--. 1 root root 172 Sep 30 06:48 ps
-rw-r--r--. 1 ironic-inspector ironic-inspector 19572 Sep 30 06:17 unknown_20160930-101719.297007.tar.gz

为了同样成功收集内省日志,请在/etc/ironic-inspector/inspector.conf中设置always_store_ramdisk_logs = true,重启openstack-ironic-inspector服务并重试introspection。