23.3. 工作流和执行故障排除
OpenStack Workflow(mistral)服务将多项 OpenStack 任务组合成工作流。Red Hat OpenStack Platform 使用一组这样的工作流在 director 上执行常见功能,包括裸机节点控制、验证、计划管理和 overcloud 部署。
例如,在运行 openstack overcloud deploy
命令时,OpenStack Workflow 服务执行两个工作流。第一个工作流上传部署计划:
Removing the current plan files Uploading new plan files Started Mistral Workflow. Execution ID: aef1e8c6-a862-42de-8bce-073744ed5e6b Plan updated
第二个工作流启动 overcloud 部署:
Deploying templates in the directory /tmp/tripleoclient-LhRlHX/tripleo-heat-templates Started Mistral Workflow. Execution ID: 97b64abe-d8fc-414a-837a-1380631c764d 2016-11-28 06:29:26Z [overcloud]: CREATE_IN_PROGRESS Stack CREATE started 2016-11-28 06:29:26Z [overcloud.Networks]: CREATE_IN_PROGRESS state changed 2016-11-28 06:29:26Z [overcloud.HeatAuthEncryptionKey]: CREATE_IN_PROGRESS state changed 2016-11-28 06:29:26Z [overcloud.ServiceNetMap]: CREATE_IN_PROGRESS state changed ...
OpenStack Workflow 服务使用以下对象跟踪工作流:
- Actions
- 相关的任务运行时,OpenStack 会执行特定的指令。例如,运行 shell 脚本或执行 HTTP 请求。一些 OpenStack 组件内置有可供 OpenStack Workflow 使用的操作。
- 任务
- 定义要运行的操作以及运行该操作的结果。这些任务通常关联有操作或其他工作流。完成一项任务时,工作流会定向到另一任务,这通常取决于前一任务的成败状况。
- 工作流
- 分组在一起并以特定顺序执行的一组任务。
- 执行
- 定义特定操作、任务或工作流的运行。
OpenStack Workflow 可以提供可靠的执行日志,这有助于识别某些命令失败的问题。例如,如果某一工作流执行失败,您可以确定其故障点。
步骤
查找
stackrc
文件:$ source ~/stackrc
列出具有已失败状态
ERROR
的工作流执行记录:(undercloud) $ openstack workflow execution list | grep "ERROR"
获取失败工作流执行的 UUID(例如
dffa96b0-f679-4cd2-a490-4769a3825262
)并查看该执行及其输出:(undercloud) $ openstack workflow execution show dffa96b0-f679-4cd2-a490-4769a3825262 (undercloud) $ openstack workflow execution output show dffa96b0-f679-4cd2-a490-4769a3825262
这些命令返回有关执行中已失败任务的信息。
openstack workflow execution show
命令还会显示用于执行的工作流(例如tripleo.plan_management.v1.publish_ui_logs_to_swift
)。您可以使用以下命令查看完整的工作流定义:(undercloud) $ openstack workflow definition show tripleo.plan_management.v1.publish_ui_logs_to_swift
这可用于辨别特定任务在工作流中的位置。
使用类似命令语法查看操作执行及其结果:
(undercloud) $ openstack action execution list (undercloud) $ openstack action execution show 8a68eba3-0fec-4b2a-adc9-5561b007e886 (undercloud) $ openstack action execution output show 8a68eba3-0fec-4b2a-adc9-5561b007e886
这对于识别导致问题的具体操作非常有用。