隔离 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 中,据未报告有任何明显的性能影响。

最终用户影响

n/a

部署者影响

部署者需要确保在 user_secrets.yml 文件中设置了密码条目。 这不应影响全新部署,但需要在升级中加以说明。

开发人员影响

n/a

依赖项

n/a

实现

负责人

主要负责人

https://launchpad.net/~kevin-carter cloudnull

工作项

  • 为所有服务添加新的 RabbitMQ 用户。

  • 为所有服务添加新的 RabbitMQ vhost。

  • 更新所有服务配置文件以使用新的 vhost、用户和密码。

测试

此更改的测试是一个收敛测试。 gate job 将在每次提交时利用这些更改。

文档影响

需要更新文档,以添加新的变量,以便进行升级说明。

参考资料

n/a