Openstack

OpenStack Mistral이란? (Workflow Service)

Somaz 2025. 3. 14. 12:03
728x90
반응형

Overview

오늘은 OpenStack Mistral에 대해 알아보겠다.
OpenStack Mistral은 OpenStack 서비스와 외부 시스템을 대상으로 다양한 작업을 자동화할 수 있는 Workflow 서비스이다.
여러 개의 작업(Task)을 조합해 하나의 흐름(Workflow)으로 정의하고, 이를 실행 및 모니터링할 수 있다.

출처 : https://wiki.openstack.org/wiki/Mistral/Design

 
 
 
 

📅 관련 글

2022.05.11 - [Openstack] - Openstack이란?
2022.07.29 - [Openstack] - Openstack Nova란?
2022.08.08 - [Openstack] - Openstack Neutron이란? (network)
2022.08.08 - [Openstack] - Openstack 배치 서비스 Placement란?
2022.08.08 - [Openstack] - Openstack Glance란? (image)
2022.08.08 - [Openstack] - Openstack Keystone이란? (identity)
2022.08.08 - [Openstack] - Openstack horizon이란? (dashboard)
2022.08.09 - [Openstack] - Openstack Cinder/Swift란? (block storage/object storage)
2025.02.27 - [Openstack] - OpenStack Heat란? (Orchestration)
2025.02.27 - [Openstack] - OpenStack Ceilometer란? (Telemetry & Monitoring)
 
 
 


 
 

Mistral이란?

Mistral은 OpenStack 환경에서 자동화 작업(Workflow)을 정의하고 실행하는 서비스다. VM 생성, 네트워크 설정, 이미지 업로드 등 OpenStack 내 작업뿐만 아니라, 외부 API 호출, 서버 스크립트 실행 같은 비-OpenStack 작업도 함께 처리할 수 있다.

 
 


 
 
 

Mistral의 주요 특징

 

1️⃣ Task & Workflow 기반의 구조

  • Task: 개별 작업 단위 (VM 생성, 이미지 등록 등)
  • Workflow: 여러 Task를 묶어서 정의한 전체 작업 흐름

 

2️⃣ 다양한 실행 방식 지원

  • 단순 직렬 실행 (Sequential)
  • 병렬 실행 (Parallel)
  • 조건부 실행 (Conditional)

 

3️⃣ OpenStack 및 외부 시스템 연동 가능

  • Nova, Neutron, Cinder 등 OpenStack 서비스와 직접 연동
  • REST API 호출 및 Shell 스크립트 실행 가능

 

4️⃣ 상태 관리 및 모니터링 제공

  • 각 Workflow 및 Task의 상태 조회 가능
  • 성공/실패 이력 관리 및 재시도 지원

 

5️⃣ YAML 기반 정의

  • 간단한 YAML 파일로 Workflow 정의
  • 사람이 읽기 쉽고, Git 등으로 형상 관리 가능

 
 
 


 
 
 

Mistral의 아키텍처 구성

 

주요 컴포넌트

구성 요소 설명
Mistral API Workflow 등록, 실행 및 상태 조회 API 제공
Mistral Engine Workflow의 실제 실행 담당
Mistral Executor 개별 Task 실행 담당
Mistral DB Workflow 정의, 실행 이력 저장

 
 
 
 


 
 
 

Mistral 설정 및 사용 예시

 

1️⃣ Workflow 정의 예시

아래는 인스턴스를 생성하고, Floating IP를 연결하는 Workflow 예시다.

version: '2.0'

create_vm_workflow:
  type: direct
  input:
    - instance_name
    - image
    - flavor
    - network
  tasks:
    create_instance:
      action: nova.servers_create
      input:
        name: <% $.instance_name %>
        image: <% $.image %>
        flavor: <% $.flavor %>
        network: <% $.network %>
      publish:
        instance_id: <% $.create_instance.id %>
      on-success:
        - attach_floating_ip

    attach_floating_ip:
      action: neutron.floatingip_associate
      input:
        server_id: <% $.instance_id %>
        floatingip_id: <FIP_ID>

 

2️⃣ Workflow 등록

openstack workflow create create_vm_workflow.yaml

 

3️⃣ Workflow 실행

openstack workflow execution create create_vm_workflow \\
  -f value -c id \\
  -i instance_name="my-vm" \\
  -i image="ubuntu-20.04" \\
  -i flavor="m1.small" \\
  -i network="public"

 

4️⃣ 실행 결과 확인

openstack workflow execution show <execution_id>

 
 
 


 
 
 

Mistral vs. Heat 비교

비교 항목 Mistral (Workflow) Heat (Orchestration)
주요 목적 작업 자동화 및 연동 인프라 배포
정의 포맷 YAML (Workflow DSL) YAML (HOT Template)
실행 대상 OpenStack + 외부 시스템 OpenStack 리소스
상태 관리 Task별 상세 상태 관리 리소스 상태 관리
복잡한 로직 처리 지원 (조건/반복 등) 제한적

 
 

Mistral 활용 사례

시나리오 설명
신규 서비스 프로비저닝 VM 생성 → 네트워크 구성 → 보안그룹 설정 → 모니터링 설정까지 Full 자동화
장애 대응 자동화 특정 알람 발생 시, 원인 진단 후 자동 복구 (Self Healing)
외부 시스템 연동 OpenStack 리소스 생성 후, CMDB 업데이트 및 외부 API 호출까지 연계

 
 
 

⚠️ Mistral 주의점 및 한계

항목 내용
성능 Task 수가 매우 많거나, Workflow 체인이 길면 실행 속도 저하 가능
복잡도 너무 복잡한 로직은 관리 어려움 (Workflow 분할 추천)
장기 실행 작업 몇 시간 이상 걸리는 작업은 실패할 가능성 증가 (Timeout 설정 필요)
Operator 경험 필요 단순 GUI 기반 자동화 도구와 달리, YAML 작성 및 디버깅 경험 필요

 
 
 


 
 
 

결론

  • Mistral은 OpenStack 환경에서 자동화 및 작업 연동을 담당하는 강력한 Workflow 서비스이다.
  • 특히 OpenStack 서비스 간 연동은 물론, 외부 API나 서버 작업까지 통합 관리할 수 있어
  • 운영 자동화CI/CD 파이프라인 구성 등 다양한 활용이 가능하다.
  • 주요 활용 사례:
    • 반복적인 운영 작업 자동화
    • OpenStack 리소스 생성 후 추가 설정 자동화
    • OpenStack 외부 시스템과 연계 작업 구성
    • 장애 대응 자동화 시나리오 구성

 
 


Reference

  • https://docs.openstack.org/mistral/latest/
  • https://github.com/openstack/mistral
  • https://docs.openstack.org/api-ref/workflow/
  • https://wiki.openstack.org/wiki/Mistral/Design
728x90
반응형