Juju Charm - RabbitMQ
Go to file
David Ames 2cd2962c2b Do not attempt to remove a unit during clustering
Do not attempt to remove a node while in the act of clustering.

Change-Id: Id30ba53b17fb015e8336127ab1479faf7d8f4779
Partial-Bug: #1818260
(cherry picked from commit f1c3deac35)
2020-06-09 08:51:35 -07:00
actions Pre-freeze 'make sync' and make list-unconsumed-queues more robust 2020-05-19 21:37:18 +00:00
charmhelpers Pre-freeze 'make sync' and make list-unconsumed-queues more robust 2020-05-19 21:37:18 +00:00
files Standardize auxiliary file location across os-charms 2019-09-12 15:50:58 -05:00
hooks Do not attempt to remove a unit during clustering 2020-06-09 08:51:35 -07:00
lib Update tox.ini files from release-tools gold copy 2016-09-19 09:33:20 +01:00
templates Change charm to py3 2018-10-24 14:50:35 +01:00
tests Do not attempt to remove a unit during clustering 2020-06-09 08:51:35 -07:00
unit_tests Pre-focal-enablement for rabbitmq-server charm 2020-03-24 18:12:08 +00:00
.gitignore Fix incorrect syntax in scripts/check_rabbitmq.py 2018-11-20 08:38:51 +00:00
.gitreview Updates for stable branch creation 2020-05-21 10:00:22 -07:00
.stestr.conf Fix lint in unit tests re: py3-first and py2 compat 2018-11-01 21:57:56 -05:00
.zuul.yaml Switch to Ussuri jobs 2019-12-26 18:29:33 +08:00
LICENSE Re-license charm as Apache-2.0 2016-07-01 18:06:36 +01:00
Makefile Port Charm RabbitMQ func tests from Amulet to Zaza 2019-10-10 13:05:09 +11:00
README.md Review README 2020-04-09 14:17:34 -04:00
actions.yaml Added list-unconsumed-queues action 2019-02-27 09:36:13 +01:00
charm-helpers-hooks.yaml Updates for stable branch creation 2020-05-21 10:00:22 -07:00
config.yaml Review README 2020-04-09 14:17:34 -04:00
copyright Re-license charm as Apache-2.0 2016-07-01 18:06:36 +01:00
hardening.yaml Add hardening support 2016-03-24 11:38:33 +00:00
icon.svg Added icon.svg 2013-04-25 14:23:14 -04:00
metadata.yaml Enable focal ussuri with functional tests 2020-04-02 14:38:41 +01:00
requirements.txt Update requirements 2018-10-03 13:11:49 -05:00
revision Added stats cronjob and queue monitoring nagios plugin 2014-05-07 10:52:24 +01:00
setup.cfg Add Python 3 Train unit tests 2019-07-30 10:20:48 -04:00
test-requirements.txt Port Charm RabbitMQ func tests from Amulet to Zaza 2019-10-10 13:05:09 +11:00
tox.ini Merge "Enable focal ussuri with functional tests" 2020-04-17 15:05:38 +00:00

README.md

Overview

RabbitMQ is an implementation of AMQP, the emerging standard for high performance enterprise messaging. The RabbitMQ server is a robust and scalable implementation of an AMQP broker.

The rabbitmq-server charm deploys RabbitMQ server and provides AMQP services to those charms that support the rabbitmq interface. The current list of such charms can be obtained from the Charm Store (the charms officially supported by the OpenStack Charms project are published by 'openstack-charmers').

Usage

Configuration

This section covers common configuration options. See file config.yaml for the full list of options, along with their descriptions and default values.

min-cluster-size

The min-cluster-size option sets the number of rabbitmq-server units required to form its cluster. It is best practice to use this option as doing so ensures that the charm will wait until the cluster is up before accepting relations from other client applications.

source

The source option sets an alternate software source and can be passed during or after deployment. The default behaviour is to use the Ubuntu package archive for the underlying machine series. The most common value is a UCA cloud pocket (e.g. 'cloud:bionic-train'). In the case of a non-OpenStack project, there is no guarantee that a candidate will be found in the stated UCA pocket.

Note: Changing the value of this option post-deployment will trigger a software upgrade. See appendix OpenStack upgrades in the OpenStack Charms Deployment Guide.

ssl

The ssl option enables encryption for client-server communication. It can take on several values:

  • 'off': disables SSL (the default)
  • 'on': enables SSL for compatible clients
  • 'only': enforces SSL

Deployment

To deploy a single rabbitmq-server unit:

juju deploy rabbitmq-server

To make use of AMQP services, simply add a relation between rabbitmq-server and an application that supports the rabbitmq interface. For instance:

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

High availability

When more than one unit is deployed the charm will bring up a native RabbitMQ HA active/active cluster. The min-cluster-size option should be used (see description above).

To deploy a three-node cluster:

juju deploy -n 3 --config min-cluster-size=3 rabbitmq-server

SSL

Communication between the AMQP message queue and client services (OpenStack applications) can be encrypted with SSL. There are two methods for managing keys and certificates:

  1. with Vault
  2. manually (via openssl commands and charm options)

Vault can set up private keys and server certificates for an application. It also stores a central CA certificate for the cloud. See the vault charm for more information.

Vault is the recommended method and is what will be covered here.

Enable SSL by passing the ssl option (see description above) to the deployed rabbitmq-server application:

juju config rabbitmq-server ssl=only

The private key and server certificate (and its signing) are managed via a relation made to the vault application:

juju add-relation rabbitmq-server:certificates vault:certificates

Actions

This section lists Juju actions supported by the charm. Actions allow specific operations to be performed on a per-unit basis.

  • check-queues
  • cluster-status
  • complete-cluster-series-upgrade
  • list-unconsumed-queues
  • pause
  • resume

To display action descriptions run juju actions rabbitmq-server. If the charm is not deployed then see file actions.yaml.

Bugs

Please report bugs on Launchpad.

For general charm questions refer to the OpenStack Charm Guide.