基本配置

zaqar.conf 配置文件是 INI 文件格式

该文件位于 /etc/zaqar。如果在 ~/.zaqar 目录下存在 zaqar.conf 文件,则会使用该文件,而不是 /etc/zaqar 目录中的文件。当您手动安装消息服务时,必须使用 Zaqar 安装目录中的配置示例生成器生成 zaqar.conf 文件,并根据您的偏好进行自定义。

要生成示例配置文件 zaqar/etc/zaqar.conf.sample

# pip install tox
$ cd zaqar
$ tox -e genconfig

其中 zaqar 是您的消息服务安装目录。

然后将消息服务配置示例复制到 /etc/zaqar 目录

# cp etc/zaqar.conf.sample /etc/zaqar/zaqar.conf

有关配置选项的列表,请参阅本指南中的表格。

重要提示

请勿在配置选项周围指定引号。

消息 API 配置

消息服务有两个 API:用于 WSGI 传输驱动程序的 HTTP REST API,以及用于 Websocket 传输驱动程序的 Websocket API。消息服务一次只能使用一个传输驱动程序。

API 的功能和行为由 API 版本定义。例如,Websocket API v2 与 HTTP REST API v2 相同。目前 HTTP REST API 有 v1、v1.1 和 v2 版本,Websocket API 只有 v2 版本。

每个 API 版本中的权限控制选项

  • v1 没有权限选项。

  • v1.1 只有 admin_mode 选项,该选项控制访问池和风味功能的全局权限。

  • v2 只有

    • RBAC 策略选项:policy_default_rulepolicy_dirspolicy_file,这些选项控制不同类型用户访问不同类型功能的权限。

      警告

      自 Zaqar 12.0.0 (Wallaby) 以来,JSON 格式的策略文件已被弃用。此 oslopolicy-convert-json-to-yaml 工具将以向后兼容的方式将现有的 JSON 格式策略文件迁移到 YAML。

    • secret_key 选项,用于定义用于对特殊 URL 进行签名的密钥。这些称为预签名 URL,为系统外部人员提供临时权限。

身份验证和授权

对 API 的所有请求只能由经过身份验证的代理执行。

首选的身份验证系统是 OpenStack Identity 服务,代号为 keystone。

Identity 服务身份验证

为了进行身份验证,代理向 Identity 服务端点发出身份验证请求。在收到有效的凭据后,Identity 服务会响应一个身份验证令牌和一个服务目录,其中包含为给定令牌可用的所有服务和端点的列表。

可以根据物理位置以及不同部署的性能/可用性特征,为消息服务返回多个端点。

通常,Identity 服务中间件会根据消息服务客户端提交的身份验证令牌提供 X-Project-Id 头。

为此,客户端必须在向消息服务 API 发出的每个请求中指定有效的身份验证令牌 X-Auth-Token 头。API 在服务每个请求之前,会针对 Identity 服务验证身份验证令牌。

无身份验证

如果未启用身份验证,则客户端必须自行提供 X-Project-Id 头。

通知选项

可以通过将 zaqar.notification.notifier 阶段添加到消息存储层管道来启用消息服务中的通知功能。为此,请确保将 zaqar.notification.notifier 添加到 [storage] 部分的 message_pipeline 选项中 zaqar.conf

[storage]
message_pipeline = zaqar.notification.notifier

池化选项

消息服务支持池化。

池化的目的是在不损失任何灵活性情况下,使消息服务具有高度可扩展性,允许用户使用多个后端。

存储驱动程序选项

存储后端

消息服务支持多种不同的存储后端(存储驱动程序),用于存储管理信息、消息及其元数据。推荐的存储后端是 MongoDB。有关如何指定存储后端的信息。

当选择存储后端时,相应的后端选项将变为活动状态。例如,如果 Redis 被选为管理存储后端,则 [drivers:management_store:redis] 部分中的选项将变为活动状态。

存储层管道

管道是处理请求所需的一组阶段。当新的请求到达消息服务时,它首先通过传输层管道,然后通过一个存储层管道,具体取决于每个特定请求的操作类型。例如,如果消息服务收到与队列相关的操作请求,则存储层管道将是 queue pipeline。消息服务始终将实际的存储控制器作为最终的存储层管道阶段。

通过设置 [storage] 部分的选项 zaqar.conf,您可以将其他阶段添加到这些存储层管道

  • 声明管道

  • 消息管道带有内置阶段可供使用

    • zaqar.notification.notifier - 在每个传入队列的消息上向队列订阅者发送通知,换句话说,启用通知功能。

  • 队列管道

  • 订阅管道

存储层管道选项默认情况下为空,因为额外的阶段会影响消息服务的性能。根据阶段,选项值的列出顺序可能重要也可能不重要。

您可以将外部阶段添加到存储层管道。有关如何编写和添加自己的外部阶段的信息,请参阅 编写存储管道阶段 教程。

消息日志文件

每个消息服务的相应日志文件存储在主机上的 /var/log/zaqar/ 目录中。

消息服务使用的日志文件

日志文件名

将日志记录到文件的服务

server.log

消息服务