Add support for multiple RabbitMQ clusters¶
rabbitmq, messaging, notifications, scalability
Larger deployments may wish to provision multiple RabbitMQ clusters such that each cluster is deployed on its own set of hosts.
Such functionality would allow a deployer to configure one or more additional component and container skeletons to add inventory groups to be used for the deployment of additional clusters.
The current playbook and roles assume a single inventory group:
rabbitmq_all that is deployed on the
infrastructure. The inventory group name is hardcoded throughout
and the playbook makes the assumption that only one cluster will
ever be needed.
Modify the rabbitmq_server role to be more configurable with respect to the inventory group(s) that it operates upon
Modify the rabbitmq-install play to be more configurable with respect to the inventory group it operates upon
I’m not aware of alternative ways for the project to address this need.
Initial impacts will be to the rabbitmq_server role and the rabbitmq-install play. However, I expect that additional impacts may exist within other roles such that they would need to change to be more configurable with respect to the inventory group they expect to use for rabbit hosts, or the variables they use to identify which rabbit hosts they should connect to.
Unclear on how upgrades would be impacted. To my knowledge, custom inventory extensions are not currently handled in the upgrade automation.
No unique security impacts. The existing RabbitMQ security posture will be maintained, though additional secrets may be required.
End user impact¶
End users will have increased flexibility in defining their deployment architecture.
The goal is for the deployer impact to be negligible due to the opt-in nature of the changes discussed.
This change will add some additional complexity for developers, but it should be minimal.
- Primary assignee:
rabbitmq_server role modifications for inventory group configurability
rabbitmq-install play modifications for inventory group configurability
Documentation explaining how to create additional RabbitMQ cluster groups
Other role modifications to support cluster connectivity configurability
This should be able to be tested within the rabbitmq_server role functional tests given some changes to the test inventory.
An appendix should be added that explains to deployers how to configure their environment for RabbitMQ multiple cluster support.