隔离 RabbitMQ¶
- 日期:
2015-07-14
- 标签:
rabbitmq
本规范的目的是调整我们当前的 RabbitMQ 设置,通过在 RabbitMQ 中为每个消费者服务创建一个 vhost 和用户,从而更好地利用可用的系统资源。
- 包含您的 Launchpad 蓝图的 URL
问题描述¶
目前所有服务都使用 RabbitMQ 中的单个 root 虚拟主机,虽然这对于小型到中型部署来说是“可以的”,但最好将服务划分为 RabbitMQ 中的逻辑资源组,这将带来额外的安全性。
提议的变更¶
利用 RabbitMQ 的所有服务都应该拥有自己的虚拟主机、用户和密码。
- 概述
每个角色将使用上游 Ansible RabbitMQ 用户模块来创建一个新用户。用户名可以自定义,默认情况下与服务名称相同。
每个角色将使用上游 Ansible RabbitMQ vhost 模块为每个服务创建一个新的虚拟主机。vhost 可以自定义,默认情况下与服务名称相同。
将在
user_secrets.yml文件中为每个 RabbitMQ 服务用户创建一个密码条目。每个服务的 oslo 配置部分将被更新,以使用新的 vhost 名称、用户名和密码。
备选方案¶
保持 RabbitMQ 不变。
Playbook 影响¶
playbooks 不会受到影响。 提出的更改是在角色中进行的。 理想情况下,这将是一个简单的默认添加,两个新任务,以及服务配置文件中 oslo_messaging 部分的一个简单更改。
升级影响¶
升级会产生影响,因为用户需要将新的 secret 条目添加到 user_secrets.yml 文件中。 如果要将其作为 backport 移植到 kilo,则必须将其定位到主要版本。
安全影响¶
将服务隔离到不同的 vhost 中,使用不同的用户和密码,应该可以提高安全性。 并使我们的项目更符合 OpenStack Messaging Security 文档中描述的内容。
性能影响¶
将服务分离到逻辑 vhost 中,据未报告有任何明显的性能影响。
http://stackoverflow.com/questions/12518685/ performance-penalty-of-multiple-vhosts-in-rabbitmq
http://lists.rabbitmq.com/pipermail/rabbitmq-discuss/2012-September/ 022618.html
最终用户影响¶
n/a
部署者影响¶
部署者需要确保在 user_secrets.yml 文件中设置了密码条目。 这不应影响全新部署,但需要在升级中加以说明。
开发人员影响¶
n/a
依赖项¶
n/a
实现¶
负责人¶
- 主要负责人
https://launchpad.net/~kevin-carter
cloudnull
工作项¶
为所有服务添加新的 RabbitMQ 用户。
为所有服务添加新的 RabbitMQ vhost。
更新所有服务配置文件以使用新的 vhost、用户和密码。
测试¶
此更改的测试是一个收敛测试。 gate job 将在每次提交时利用这些更改。
文档影响¶
需要更新文档,以添加新的变量,以便进行升级说明。
参考资料¶
n/a