Usage

To make use of AMQP services, simply relate other charms that support the rabbitmq interface:

juju add-relation rabbitmq-server nova-cloud-controller

Clustering

When more than one unit of the charm is deployed the charm will bring up a
native RabbitMQ cluster. The process of clustering the units together takes
some time. Due to the nature of asynchronous hook execution, it is possible
client relationship hooks are executed before the cluster is complete.
In some cases, this can lead to client charm errors.

To guarantee client relation hooks will not be executed until clustering is
completed use the min-cluster-size configuration setting:

Configuration

(int)
This value dictates the number of replicas ceph must make of any
object it stores within the rabbitmq rbd pool. Of course, this only
applies if using Ceph as a backend store. Note that once the rabbitmq
rbd pool has been created, changing this value will not have any effect
(although it can be changed in ceph by manually configuring your ceph
cluster).

(string)
RabbitMQ offers three ways to deal with network partitions automatically.
Available modes:
.
ignore - Your network is reliable. All your nodes are in a rack,
connected with a switch, and that switch is also the route to the outside
world. You don't want to run any risk of any of your cluster shutting
down if any other part of it fails (or you have a two node cluster).
.
pause_minority - Your network is maybe less reliable. You have clustered
across 3 AZs in EC2, and you assume that only one AZ will fail at once.
In that scenario you want the remaining two AZs to continue working and
the nodes from the failed AZ to rejoin automatically and without fuss
when the AZ comes back.
.
autoheal - Your network may not be reliable. You are more concerned with
continuity of service than with data integrity. You may have a two node
cluster.
.
For more information see http://www.rabbitmq.com/partitions.html

(int)
Overrides the size of the connection backlog maintained by the server.
Environments with large numbers of clients will want to set this value
higher than the default (default value varies with rabbtimq version, see
https://www.rabbitmq.com/networking.html for more info).

(int)
Run a command with a time limit specified in seconds in cron.
This timeout will govern to the rabbitmq stats capture, and that once
the timeout is reached a SIGINT is sent to the program, if it doesn't
exits before 10 seconds a SIGKILL is sent.

(int)
Multiplier used to calculate the number of threads used in the erl vm
worker thread pool using the number of CPU cores extant in
the host system. The upstream docs recommend that this multiplier be
> 12 per core - we use 24 as default so that we end up with roughly the
same as current rabbitmq package defaults and that is what is used
internally to the charm if no value is set here. Also, if this value is
left unset and this application is running inside a container, the number
of threads will be capped based on a maximum of 2 cores.

(boolean)
By default, without pairing with hacluster charm, rabbitmq will deploy
in active/active/active... HA. When pairied with hacluster charm, it
will deploy as active/passive. By enabling this option, pairing with
hacluster charm will keep rabbit in active/active setup, but in addition
it will deploy a VIP that can be used by services that cannot work
with mutiple AMQPs (like Glance in pre-Icehouse).

(int)
Known wait along with modulo nodes is used to help avoid restart
collisions. Known wait is the amount of time between one node executing
an operation and another. On slower hardware this value may need to be
larger than the default of 30 seconds.

(int)
This config option is rarely required but is provided for fine tuning, it
is safe to leave unset. Modulo nodes is used to help avoid restart
collisions as well as distribute load on the cloud at larger scale.
During restarts and cluster joins rabbitmq needs to execute these
operations serially. By setting modulo-nodes to the size of the cluster
and known-wait to a reasonable value, the charm will distribute the
operations serially. If this value is unset, the charm will check
min-cluster-size or else finally default to the size of the cluster
based on peer relations. Setting this value to 0 will execute operations
with no wait time. Setting this value to less than the cluster size will
distribute load but may lead to restart collisions.

(string)
Used by the nrpe-external-master subordinate charm.
A string that will be prepended to instance name to set the host name
in nagios. So for instance the hostname would be something like:
.
juju-myservice-0
.
If you're running multiple environments with the same services in them
this allows you to differentiate between them.

(int)
TTL in MS for notification queues in the openstack vhost. Defaults to
1 hour, but can be tuned up or down depending on deployment requirements.
This ensures that any un-consumed notifications don't build up over
time, causing disk capacity issues.

(boolean)
If True enables IPv6 support. The charm will expect network interfaces
to be configured with an IPv6 address. If set to False (default) IPv4
is expected.
.
NOTE: these charms do not currently support IPv6 privacy extension. In
order for this charm to function correctly, the privacy extension must be
disabled and a non-temporary address must be configured/available on
your network interface.

(string)
Optional configuration to support use of additional sources such as:
.
- ppa:myteam/ppa
- cloud:xenial-proposed/ocata
- http://my.archive.com/ubuntu main
.
The last option should be used in conjunction with the key configuration
option.
.
Changing the source option on already deployed service/application will
trigger the upgrade.

(string)
Enable SSL connections on rabbitmq, valid values are 'off', 'on', 'only'.
If ssl_key, ssl_cert, ssl_ca are provided then then those values will be
used. Otherwise the service will act as its own certificate authority and
pass its ca cert to clients. For HA or clustered rabbits ssl key/cert
must be provided.