提供混合消息后端选项

日期:

2017-09-31 10:00

标签:

消息传递,RabbitMQ,Qpid

OpenStack 服务使用消息总线系统进行组件之间的远程过程调用 (RPC) 以及发出通知。本规范的目的是制定一个计划,为 RPC 消息传递提供 RabbitMQ 的替代方案。

https://blueprints.launchpad.net/openstack-ansible/+spec/hybrid-messaging

问题描述

RabbitMQ 当前用作 OpenStack-Ansible 部署的 OpenStack 服务的所有远程过程调用 (RPC) 和通知的消息总线系统。虽然 RabbitMQ 经过了充分测试,并且在 OpenStack 项目和部署中得到了广泛的接受,但它可能不是 RPC 消息传递的最有效选项。无代理消息队列可以提供更高的消息传递吞吐量,并且在更大规模的部署中不太容易成为瓶颈。

提议的变更

本规范建议在 OpenStack-Ansible 部署中提供 Qpid Dispatch Router 作为 RPC 消息传递的替代方案。

部署者将能够获得更多的消息后端选项

  • RabbitMQ 用于 RPC 和通知(将保持默认部署)

  • Qpid Dispatch Router 用于 RPC(没有用于通知的专用后端)

  • Qpid Dispatch Router 用于 RPC,RabbitMQ 用于通知(混合消息传递)

备选方案

将 RabbitMQ 作为 OpenStack-Ansible 部署中消息传递的唯一选项。

Playbook/Role 影响

部署 OpenStack 服务的 playbook 需要进行修改,以便对部署者选择的消息后端进行任何必要的更改。角色需要包含额外的软件包依赖项才能连接到 Qpid Dispatch Router。

升级影响

升级场景将测试从使用 RabbitMQ 迁移的场景。

安全影响

Qpid Dispatch Router 的默认部署应尽可能地与 OpenStack-Ansible 的默认 RabbitMQ 部署保持一致,包括使用 TLS/SSL 加密和消息数据的 virtualhost 命名空间。

性能影响

尤其是在更大规模的部署中,有可能提高消息吞吐量并降低 CPU 利用率。

最终用户影响

当被部署者选择实施时,所涉及的更改应对最终用户透明。

部署者影响

最初,由于所涉及的更改将完全是可选的,因此对部署者不会产生立即影响。对于选择部署 Qpid Dispatch Router 的部署者,该服务将被安装,可能在一个新的容器中,并且 OpenStack 服务将被配置为使用它。

开发人员影响

OpenStack 项目的新角色应包括配置选项,以便使用 RabbitMQ 或 Qpid Dispatch Router,并测试两者。

依赖项

N/A

实现

负责人

主要负责人

jimmy-mccrory (jmccrory)

工作项

  • 创建一个新角色来安装 Qpid Dispatch Router

  • 创建一个 playbook 来部署 Qpid Dispatch Router

  • 修改每个角色中的 OpenStack 服务配置模板,以允许其他传输 URL(而不是 RabbitMQ)并默认变量以支持该 URL

  • 添加角色所需的客户端软件包依赖项

  • 在角色中创建测试场景,以使用 Qpid Dispatch Router 作为 RPC 的消息后端进行部署

  • 创建一个通用的 playbook,用于 OpenStack 项目所需的任何 Qpid Dispatch Router 配置更改,OpenStack 项目 playbook 将使用该 playbook

  • 在集成的 gate 中创建测试场景,用于 Greenfield 和升级部署

测试

将在使用消息队列的 OpenStack 项目的角色以及集成的 OpenStack-Ansible 仓库中创建一个 Qpid Dispatch Router 场景,以确保安装和部署(包括升级)保持正常运行。

文档影响

需要在操作指南中添加有关 Qpid 服务配置选项、OpenStack 服务配置选项以使用 Qpid 服务以及任何相关维护任务的文档。

参考资料

AMQP 1.O (Qpid Dispatch Router) Oslo 消息驱动程序参考

消息路由 - RabbitMQ 的下一代替代方案

大型 OpenStack 部署的混合消息解决方案