安装和配置¶
本节描述了如何在控制器节点上安装和配置 Workflow Service,代号为 mistral。
注意
Mistral 可以以独立模式使用,也可以与 OpenStack 协同工作。
如果 Mistral 与 OpenStack 一起使用,您必须已经拥有一个可用的 OpenStack 环境,并且至少安装了以下组件
支持 API v3 的 Keystone
请注意,安装和配置可能因发行版而异。
概述¶
Workflow service 由以下组件组成
Mistral API服务提供一个 REST API,用于操作和监控工作流执行。
Mistral Engine服务控制工作流执行并处理其数据流,将完成的任务放入队列,将数据从任务转移到任务,处理条件转换等。
Mistral Executor服务执行任务操作,从队列中获取任务,运行操作并将结果发送回引擎。
Mistral Notifier服务根据工作流和任务执行的状态发送通知。 此服务是可选的.
Mistral Event Engine服务基于外部事件(如 RabbitMQ、HTTP、kafka 等)创建工作流执行。 此服务是可选的.
mistral 项目还提供以下 python 库
mistral-dashboardMistral Dashboard 是 Horizon (OpenSack dashboard) 的插件。
python-mistralclientPython 客户端 API 和命令行界面。
mistral-lib一个由 mistral 内部使用的库。
mistral-extra一个额外的动作集合,可以安装以使用 openstack 动作扩展 mistral 标准动作(默认情况下 mistral 没有 OpenStack 相关的动作)。
先决条件¶
安装以下依赖项
在基于 apt 的发行版上
$ apt-get update
$ apt-get install python3 python3-venv python3-pip git
在基于 dnf 的发行版上
$ dnf update
$ dnf install python3 python3-venv python3-pip git
注意
您可能需要根据您的发行版调整之前的命令。
安装¶
注意
有关如何使用 devstack 安装 Mistral 的说明,请参阅 Mistral Devstack 安装
克隆仓库并进入仓库目录
$ git clone https://opendev.org/openstack/mistral
$ cd mistral
创建一个 venv
$ python3 -m venv venv
$ source venv/bin/activate
现在安装 mistral
$ pip install \
-c https://releases.openstack.org/constraints/upper/master \
-r requirements.txt \
.
注意
您可能需要根据您正在安装的 mistral 版本调整约束文件
生成配置文件
$ pip install tox
$ tox -egenconfig
创建 mistral 目录并复制示例配置文件
$ mkdir /etc/mistral
$ cp etc/mistral.conf.sample /etc/mistral/mistral.conf
编辑配置文件
$ vi /etc/mistral/mistral.conf
您可能还想安装 mistral-extra 包,以便可以使用 opentack 动作(但这并非强制性的)
$ pip install mistral-extra
配置 Mistral¶
参阅 配置和策略指南 以查找有关如何配置 Mistral 服务器的一般信息。
首次运行之前¶
安装后,您将在虚拟环境中看到 mistral-server 和 mistral-db-manage 命令。
可以使用 mistral-db-manage 命令进行数据库迁移。
将数据库更新到最新版本
# For MySQL / MariaDB / PostgreSQL
$ mistral-db-manage upgrade head
# For SQLite - do not use sqlite in production!
# e.g. connection = 'sqlite:////var/lib/mistral.sqlite'
$ python tools/sync_db.py
在启动 Mistral 服务器之前,运行 mistral-db-manage populate 命令。它使用 Mistral 为所有 Mistral 用户提供的所有标准动作和标准工作流创建 DB。
$ mistral-db-manage populate
有关 mistral-db-manage 脚本的更多详细信息,请参阅 Mistral 升级指南。
运行 Mistral 服务器¶
要运行 Mistral 组件,请在 shell 中执行以下命令
$ mistral-server --server all
注意
在这种情况下,API 将仅启动一个 worker! 如果您需要 API 的更多 worker,则应使用 uWSGI 启动 API(如下所示)
单独运行 Mistral 组件¶
您可以选择在多个服务器上拆分 Mistral 组件的执行,例如仅启动引擎
$ mistral-server --server engine
–server 命令行选项可以是一个逗号分隔的列表,因此您可以构建组件的组合,如下所示
$ mistral-server --server engine,executor
有效选项是
all(如果未指定,则默认)
api
engine
executor
event-engine
notifier
使用 uWSGI 运行 Mistral API¶
WSGI 应用程序¶
直接运行 mistral-server --server api 的缺点是它将仅启动一个进程(worker)来处理 HTTP 请求。
虽然这对于小型/开发部署可能足够,但对于生产环境可能不够。
在这种情况下,Mistral 在 mistral.wsgi:application 处提供了一个 WSGI 应用程序,可与任何 WSGI 服务器一起使用。
以下示例使用 uWSGI
使用 uWSGI¶
安装 uWSGI
$ pip install uwsgi
创建一个 uWSGI 配置文件(例如,/etc/uwsgi/mistral.ini)
[uwsgi]
# Listen on port 8989 and start as a full web server
http-socket = 0.0.0.0:8989
# Stats on port 9191
stats = 0.0.0.0:9191
# App to start
virtualenv = /opt/openstack/mistral/
module = mistral.wsgi:application
# load apps in each worker instead of the master
lazy-apps = true
# Number of processes
processes = 4
# Will kill processes that run more that 60s
harakiri = 60
# Enable threads
enable-threads = true
# Gracefully manage processes
master = true
# Thunder-lock - serialize accept() usage (if possible)
thunder-lock = true
启动 uWSGI
$ uwsgi --ini /etc/uwsgi/mistral.ini
传递配置选项¶
默认情况下,Mistral 将使用其标准配置文件搜索路径
/etc/mistral/mistral.conf/etc/mistral/mistral.conf.d//etc/mistral.conf.d/更多,请参见:https://docs.openstack.org/oslo.config/2025.2/configuration/options.html
您还可以提供 config-dir 或 config-file 选项给 mistral-server 命令行,以提供自定义文件/文件夹
$ mistral-server --config-dir /etc/mycustomdir/
请注意,在使用 uwsgi 时,您将无法提供这些参数。在这种情况下,可以使用 MISTRAL_CONFIG_DIR 和/或 MISTRAL_CONFIG_FILE 环境变量代替
[uwsgi]
...
env = MISTRAL_CONFIG_DIR=/etc/mycustomdir/
使用 OpenStack-Ansible 部署¶
您还可以使用 OpenStack-Ansible 部署和设置 Mistral,方法是遵循 Mistral role for OpenStack-Ansible,它将 Mistral 安装和配置为您的 OpenStack 部署的一部分。