Juju Charm - RabbitMQ
Go to file
Kevin Nasto edf7791f40 Add consumer-timeout config option
Exposes the consumer timeout configuration value that was changed in the jammy
version of rabbitmq. The value used to default to unlimited, but was changed to
30 minutes. This causes clients to timeout for longer-running jobs.

This change doesn't alter the payload's default value, it override it only when
the user provides a value via juju config.

Closes-Bug: #2020909
Related-Bug: #2067424

Change-Id: I552c04c964c98b2a700cd47e98a2ae491f5fd47b
2024-05-29 15:43:52 -05:00
actions Add service user password rotation feature 2023-05-05 10:17:01 +02:00
charmhelpers Sync charmhelpers to pull in jammy-caracal codename. 2024-05-15 18:00:21 +02:00
files Allow NRPE to collect stats in CIS hardened env 2023-04-13 00:36:40 +00:00
hooks Add consumer-timeout config option 2024-05-29 15:43:52 -05:00
lib Update tox.ini files from release-tools gold copy 2016-09-19 09:33:20 +01:00
templates Add consumer-timeout config option 2024-05-29 15:43:52 -05:00
tests Drop 'source' config key override. 2023-05-16 19:37:13 +00:00
unit_tests Add consumer-timeout config option 2024-05-29 15:43:52 -05:00
.gitignore Update to classic charms to build using charmcraft in CI 2022-02-15 17:06:59 +00:00
.gitreview OpenDev Migration Patch 2019-04-19 19:44:42 +00:00
.stestr.conf Fix lint in unit tests re: py3-first and py2 compat 2018-11-01 21:57:56 -05:00
.zuul.yaml Revert "Add Kinetic and Zed support" 2022-08-31 11:42:29 +00:00
actions.yaml Fix typo in actions.yaml 2023-08-08 20:54:14 -04:00
bindep.txt Drop 'source' config key override. 2023-05-16 19:37:13 +00:00
build-requirements.txt Update to classic charms to build using charmcraft in CI 2022-02-15 17:06:59 +00:00
charm-helpers-hooks.yaml Charmhelper sync pulling coordinator 2022-02-07 09:42:38 +00:00
charmcraft.yaml Add mantic support 2023-07-20 11:33:19 -04:00
config.yaml Add consumer-timeout config option 2024-05-29 15:43:52 -05: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
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
metadata.yaml Merge "Add mantic support" 2023-08-04 21:58:42 +00:00
osci.yaml Revert "Add Kinetic and Zed support" 2022-08-31 11:42:29 +00:00
README.md Don't overwrite last relation key when username not found 2024-02-01 11:19:54 +00:00
rename.sh Update to classic charms to build using charmcraft in CI 2022-02-15 17:06:59 +00:00
requirements.txt Fix charm for tox4 compatibility 2023-01-16 15:38:41 +00: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 Fix charm for tox4 compatibility 2023-01-16 15:38:41 +00:00
tox.ini Fix typo in configure ttl code 2023-04-11 12:14:53 +01:00

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').

NOTE: the charm doesn't officially support application data bags, and thus may not work correctly with them. See this bug for more details.

Usage

Configuration

This section covers common and/or important configuration options. See file config.yaml for the full list of options, along with their descriptions and default values. See the Juju documentation for details on configuring applications.

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 OpenStack upgrade in the OpenStack Charms Deployment Guide.

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

Monitoring

To collect RabbitMQ metrics, add a relation between rabbitmq-server and an application that supports the scrape interface. For instance:

juju add-relation rabbitmq-server:scrape prometheus:scrape

Note: The scrape relation is only supported when the RabbitMQ version is >= 3.8.

The charm can be related to a dashboard charm like grafana to view visualization metrics:

juju add-relation rabbitmq-server:dashboards grafana:dashboards

To get alerts of RabbitMQ split-brain events, add a relation between rabbitmq-server and an application that supports the prometheus-rules interface. For instance:

juju add-relation rabbitmq-server:prometheus-rules prometheus:prometheus-rules

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).

See Infrastructure high availability in the OpenStack Charms Deployment Guide for details.

TLS

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

  1. with Vault
  2. manually (via 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.

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
  • list-service-usernames
  • rotate-service-user-password

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

Documentation

The OpenStack Charms project maintains two documentation guides:

Bugs

For general charm questions refer to the OpenStack Charm Guide.