Enable deployment of alternative backends for oslo.messaging

Include the URL of your launchpad blueprint:

https://blueprints.launchpad.net/tripleo/+spec/om-dual-backends

This spec describes adding two functional capabilities to the messaging services of an overcloud deployment. The first capability is to enable the selection and configuration of separate messaging backends for oslo.messaging RPC and Notification communications. The second capability is to introduce support for a brokerless messaging backend for oslo.messaging RPC communications via the AMQP 1.0 Apache qpid-dispatch-router.

Problem Description

The oslo.messaging library supports the deployment of dual messaging system backends. This enables alternative backends to be deployed for RPC and Notification messaging communications. Users have identified the constraints of using a store and forward (broker based) messaging system for RPC communications and are seeking direct messaging (brokerless) approaches to optimize the RPC messaging pattern. In addition to operational challenges, emerging distributed cloud architectures define requirements around peer-to-peer relationships and geo-locality that can be addressed through intelligent messaging transport routing capabilities such as is provided by the AMQP 1.0 qpid-dispatch-router.

Proposed Change

Overview

Provide the capability to select and configure alternative transport_url’s for oslo.messaging RPCs and Notifications across overcloud OpenStack services.

Retain the current default behavior to deploy the rabbitMQ server as the messaging backend for both RPC and Notification communications.

Introduce an alternative deployment of the qpid-dispatch-router as the messaging backend for RPC communications.

Utilize the oslo.messaging AMQP 1.0 driver for delivering RPC services via the dispatch-router messaging backend.

Alternatives

The configuration of dual backends for oslo.messaging could be performed post overcloud deployment.

Security Impact

The end result of using the AMQP 1.0 dispatch-router as an alternative messaging backend for oslo.messaging RPC communications should be the same from a security standpoint. The driver/router solution provides SSL and SASL support in parity to the current rabbitMQ server deployment.

Other End User Impact

The configuration of the dual backends for RPC and Notification messaging communications should be transparent to the operation of the OpenStack services.

Performance Impact

Using a dispatch-router mesh topology rather than broker clustering for messaging communications will have a positive impact on performance and scalability by:

  • Directly expanding connection capacity
  • Providing parallel communication flows across the mesh
  • Increasing aggregate message transfer capacity
  • Improving resource utilization of messaging infrastructure

Other Deployer Impact

The deployment of the dispatch-router, however, will be new to OpenStack operators. Operators will need to learn the architectural differences as compared to a broker cluster deployment. This will include capacity planning, monitoring, troubleshooting and maintenance best practices.

Developer Impact

Support for alternative oslo.messaging backends and deployment of qpid-dispatch-router in addition to rabbitMQ should be implemented for tripleo-quickstart.

Implementation

Assignee(s)

Primary assignee:

Work Items

  • Update overcloud templates for dual backends and dispatch-router service
  • Add dispatch-router packages to overcloud image elements
  • Add services template for dispatch-router
  • Update OpenStack services base templates to select and configure transport_urls for RPC and Notification
  • Deploy dispatch-router for controller and compute for topology
  • Test failure and recovery scenarios for dispatch-router

Transport Configuration

The oslo.messaging configuration options define a default and additional notification transport_url. If the notification transport_url is not specified, oslo.messaging will use the default transport_url for both RPC and Notification messaging communications.

The transport_url parameter is of the form:

transport://user:pass@host1:port[,hostN:porN]/virtual_host

Where the transport scheme specifies the RPC or Notification backend as one of rabbit or amqp, etc. Oslo.messaging is deprecating the host, port and auth configuration options. All drivers will get these options via the transport_url.

Dependencies

Support for dual backends in and AMQP 1.0 driver integration with the dispatch-router depends on oslo.messaging V5.10 or later.

Testing

In order to test this in CI, an environment will be needed where dual messaging system backends (e.g. rabbitMQ server and dispatch-router server) are deployed. Any existing hardware configuration should be appropriate for the dual backend deployment.

Documentation Impact

The deployment documentation will need to be updated to cover the configuration of dual messaging system backends and the use of the dispatch-router. TripleO Heat template examples should also help with deployments using dual backends.