26.3. 워크플로우 및 실행 문제 해결

OpenStack Workflow(mistral) 서비스는 여러 OpenStack 작업을 워크플로우에 그룹화합니다. Red Hat OpenStack Platform은 이러한 워크플로우 세트를 사용하여 director를 통해 베어 메탈 노드 제어, 검증, 계획 관리, 오버클라우드 배포 등의 일반적인 기능을 수행합니다.

예를 들어 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

두 번째 워크플로우는 오버클라우드 배포를 시작합니다.

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 서비스는 다음 오브젝트를 사용하여 워크플로우를 추적합니다.

작업
관련 작업이 실행될 때 OpenStack에서 수행하는 특정한 명령입니다. 예를 들면 쉘 스크립트 실행 또는 HTTP 요청 수행이 있습니다. 일부 OpenStack 구성 요소에는 OpenStack 워크플로우에서 사용하는 기본 제공 동작이 있습니다.
작업
실행할 동작 및 해당 동작을 실행한 결과를 정의합니다. 이러한 작업에는 일반적으로 동작 및 해당 동작과 연관된 다른 워크플로우가 있습니다. 작업이 완료되면 작업의 성공 또는 실패 여부에 따라 워크플로우에서 다른 작업을 지시합니다.
워크플로우
함께 그룹화되고 특정 순서로 실행되는 작업 집합입니다.
실행
특정 동작, 작업 또는 워크플로우 실행을 정의합니다.

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

    이 명령은 문제의 원인이 되는 특정 작업을 식별하는 데 유용합니다.