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 可以提供可靠的执行日志,这有助于识别某些命令失败的问题。例如,如果某一工作流执行失败,您可以确定其故障点。

步骤

  1. 查找 stackrc 文件:

    $ source ~/stackrc
  2. 列出具有已失败状态 ERROR 的工作流执行记录:

    (undercloud) $ openstack workflow execution list | grep "ERROR"
  3. 获取失败工作流执行的 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
  4. 这些命令返回有关执行中已失败任务的信息。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

    这可用于辨别特定任务在工作流中的位置。

  5. 使用类似命令语法查看操作执行及其结果:

    (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

    这对于识别导致问题的具体操作非常有用。