提供混合消息后端选项¶
- 日期:
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 部署的混合消息解决方案