|tags:||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 shared-infra_hosts 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 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.
- 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.