LATEST VERSION: 1.10.3 - CHANGELOG
RabbitMQ for PCF v1.9.8

Creating Isolation with the RabbitMQ for PCF Replicator

Overview

RabbitMQ for PCF Replicator is a tool that allows you to install multiple RabbitMQ for Pivotal Cloud Foundry (PCF) tiles in a single Ops Manager environment. This lets you run multiple pre-provisioned RabbitMQ clusters that are isolated from each other.

For example, you may want to isolate the cluster serving Spring Cloud Services (SCS) from the cluster serving apps in the Marketplace. Or you may want to give a certain team their own dedicated, pre-provisioned cluster that you manage for them.

Common Use Cases

The image below illustrates how to isolate SCS on RabbitMQ for PCF from clustered and single node service instances dedicated to different teamsi. In this use case:

  • The unreplicated RabbitMQ for PCF tile deploys two types of services:
    • A pre-provisioned service is used as a backing service for SCS
    • An on-demand service is used to create three completely isolated single node service instances
  • Two replica tiles are used to create two dedicated pre-provisioned clusters, with each one dedicated to a specific team.

    alt text

These and other common use cases are explained below.

Running SCS on a Dedicated RabbitMQ Cluster

Replica RabbitMQ tiles cannot be used to provide a backing service for Spring Cloud Services (SCS) because SCS expects that the service is called p-rabbitmq. Therefore, if you want to isolate the RabbitMQ cluster that is used by SCS from other tenants, you can reserve the unreplicated RabbitMQ for PCF tile for SCS, as shown in the diagram below. You can then add replica RabbitMQ clusters for use by apps in the Marketplace.

Pivotal recommends that you use the unreplicated RabbitMQ for PCF tile solely for SCS to avoid contention between apps using SCS, and apps using RabbitMQ for PCF in the Marketplace.

To reserve the unreplicated tile for SCS, turn off the Broker Registrar errand to prevent the broker from being exposed in the Marketplace. For more information, see Errands.

To offer RabbitMQ as a cloud messaging service in the Marketplace, create one or several replicas, install them in Ops Manager, and either allow the broker registrar errand to run, or register the service manually using CF.

Providing a Pre-Provisioned Dedicated Cluster

To reserve a RabbitMQ cluster for use by a specific team, all you need to do is disable the broker registrar errand in Ops Manager. This prevents service registration in the Marketplace. After you deploy the tile, manually expose the service broker to your desired orgs and spaces. For instructions, see Register a Broker.

Using Replicas While Offering the On-Demand RabbitMQ Service

The On-Demand service is not offered in replica tiles, since the purpose of the replicator is to create additional pre-provisioned clusters. If you want to offer on-demand service plans, use the unreplicated RabbitMQ for PCF tile as shown in the diagram above.

Blue-Green Upgrades (Advanced)

In order to do blue-green style upgrades to minimize downtime, you can stand up a new cluster and migrate data and users over to the new cluster over a period of time. Speak with your Platform Architect about how to enable this workflow.

Generating Replica Tiles

This topic describes how to install the replicator and generate replica tiles of RabbitMQ for PCF.

Prerequisites

  • RabbitMQ for PCF v1.8.x or v1.9.x
  • 2.5 GB of free disk space

Download the Replicator

The RabbitMQ for PCF Replicator is currently available from Pivotal Network. Search for and download this archive, and then run the enclosed binary.

Generate Replica Tiles

The following is the syntax for generating a replica tile:

./rabbitmq-replicator-darwin\
--name YOUR_DESIRED_TILE_NAME\
--path PATH_TO_TILE\
--output DESIRED_FILE_NAME.pivotal

The following are the parameters expected in the above syntax:

Parameter Description
name The desired unique identifier for the replica tile, which is used to generate manifests, deployment names, and Marketplace name for the service. Only alphanumeric characters and - are accepted by the tool.
path The location of the original, unreplicated, RabbitMQ for PCF source tile that you downloaded
output The desired file name and path for the replica tile

Installing Replica Tiles

After you have generated a replica tile, you can upload it to Ops Manager as you would any other tile. After you have uploaded it, follow the instructions for Installing and Configuring RabbitMQ for PCF as a Pre-Provisioned Service. The On-Demand service is not offered on replica tiles.

Upgrading Replica Tiles

You can upgrade replica tiles like regular tiles with one important difference. You must generate a replica of the newer version of the RabbitMQ for PCF tile, using the replicator, and give the new replica the same name as the existing replica. This is shown in the example workflow below.

Example of an In-Place Upgrade of a Replica

Suppose you used the replicator to generate a replica of v1 of the RabbitMQ for PCF tile, with the name trading-team, and you installed it in Ops Manager. Here is the sample replicator command you used for the initial installation:

./rabbitmq-replicator-darwin\
--name trading-team\
--path /download/p-rabbitmq-v1.pivotal\
--output /output/p-rabbitmq-v1-trading-team.pivotal

To upgrade to v2, follow these steps:

  1. Download the new RabbitMQ for PCF v2.

  2. Run the replicator command, using the path to the new RabbitMQ for PCF v2 tile, and supply the same name, trading-team, as shown below.

    ./rabbitmq-replicator-darwin\
    --name trading-team\
    --path /download/p-rabbitmq-v2.pivotal\
    --output /output/p-rabbitmq-v2-trading-team.pivotal
    
  3. After you have the replica tile p-rabbitmq-v2-trading-team.pivotal, upload it to Ops Manager. This upgrades the v1 replica tile in place.

You can then proceed with upgrading the cluster.

If you want to do a blue-green style upgrade, see Blue-Green Upgrades.

Limitations

  • The On-Demand service is not offered on replica tiles.
Create a pull request or raise an issue on the source for this page in GitHub