The aim of this guide is to explain how to configure multi-tenant AMQP for multiple datacenters.
For a distributed platform, Abiquo you will create a virtual host for the API and watchtower, and then separate virtual hosts for each datacenter.
To use multitenant AMQP, use a separate set of remote services for each cloud location (datacenter or public cloud region). Do not share any remote services
Properties
Property name | Description | Context |
abiquo.rabbitmq.multitenant | To enable multitenant, set to | API |
abiquo.rabbitmq.virtualHost | Logical separation where the configured Abiquo service manages AMQP entities. The default virtual host is | API + RS |
abiquo.rabbitmq.username | Username to connect to broker + virtualHost | API + RS |
abiquo.rabbitmq.password | Password to connect to broker + virtualHost | API + RS |
abiquo.datacenter.id | Unique datacenter ID. For a complete description see Abiquo configuration properties#datacenter | RS |
API configuration
To configure the API:
Set
abiquo.rabbitmq.multitenant
totrue
Create an API virtual host, the default virtual host is
/
and you can use this if you do not have a monolithic environment. (See below for monolithic configuration)
Create an Abiquo API user with full access to the configured virtual host
rabbitmqctl add_user admin admin rabbitmqctl set_permissions -p / admin ".*" ".*" ".*"
Watchtower configuration
The virtual host to use must be the same one configured and used by the API and the user can also be the same.
Watchtower uses the properties defined in the abiquo.properties
file, so be sure to configure the properties:
abiquo.rabbitmq.virtualHost
abiquo.rabbitmq.username
abiquo.rabbitmq.password
See Abiquo configuration properties#rabbitmq
How to add a new data center
Each datacenter in Abiquo has a unique ID configured with the abiquo.datacenter.id
property and the value of this property will be used as name of a new virtual host.
Create a new virtual host named with the value of the
abiquo.datacenter.id
property valuerabbitmqctl add_vhost dc2
Add a new user for the new datacenter
rabbitmqctl add_user dc2_user dc2_password
Configure access to the new virtual host for the Abiquo API user
rabbitmqctl set_permissions -p dc2 admin ".*" ".*" ".*"
Configure access to the new virtual host for the datacenter user
rabbitmqctl set_permissions -p dc2 dc2_user ".*" ".*" ".*"
To list permissions on the virtual hosts use the following commands. Log in as the api
user to access the API virtual host.
> rabbitmqctl list_permissions -p / Listing permissions in vhost "/" ... admin.*.*.*
> rabbitmqctl list_permissions -p dc2 Listing permissions in vhost "dc2" ... dc2_user.*.*.* admin.*.*.*
Check that properties on remote services match the configured values:
abiquo.datacenter.id = dc2
abiquo.rabbitmq.virtualHost = dc2
abiquo.rabbitmq.username = dc2_user
abiquo.rabbitmq.password= dc2_password
How to run a monolithic Abiquo with multi-tenant enabled
To configure a monolithic installation:
Configure the API virtual host as the same as the monolithic datacenter (value of property
abiquo.datacenter.id
Configure access to the datacenter virtual host for Abiquo API user
Note that you do not need a separate user for the datacenter
You can add any other datacenters (that are not monolithic) as described in the previous section.