/dcos-rabbitmq

RabbitMQ autocluster framework for DC/OS, built with dcos-commons

Primary LanguagePythonApache License 2.0Apache-2.0

Test the latest development build


⚠️ tested on DC/OS CE only -- neither secrets, nor TLS are supported ⚠️

RabbitMQ Service Guide

Table of Contents

Overview

DC/OS RabbitMQ is an automated service that makes it easy to deploy and manage a RabbitMQ Cluster on DC/OS. It requires a pre-existing etcd cluster (v2 or v3). Currently, only deployment is supported. Several features are planned like "advanced configuration", monitoring and backup/restore configuration. Please note that it only bootstraps a cluster. If you need replicated queues you still need to configure them by you own. Please refer to RabbitMQ Documentation for further details about cluster limitations and replicated queues.

Features

  • Single command installation for rapid provisioning
  • Multiple RabbitMQ clusters sharing a single DC/OS cluster for multi-tenancy
  • Placement constraints for fine-grained instance placement
  • Vertical and horizontal for managing capacity
  • Backup/restore definitions from s3

Quick Start

Prerequirements

  1. Install DC/OS on your cluster. See the documentation for instructions.

  2. This package requires a running etcd cluster. A package is available package in DC/OS Universe.

dcos package install etcd
  1. Add the repository to DC/OS. See test_me.md

Install

  1. If you are using open source DC/OS, install RabbitMQ cluster with the following command from the DC/OS CLI. If you are using Enterprise DC/OS, you may need to follow additional instructions. See the Install and Customize section for more information. Please refer to []

    dcos package install rabbitmq
    

    You can also install rabbitmq from the DC/OS web interface.

  2. The service will now deploy with a default configuration. You can monitor its deployment from the Services tab of the DC/OS web interface.

  3. Now you have 3 pods running etcd-proxy and rabbitmq server. Cluster should be up by now. The service service expose two endpoints per node : amqp, for messaging, and management, to access rabbitmq web console and its API. We also advertise a load balanced VIP for each endpoints.

	$ dcos rabbitmq endpoints
    [
      "amqp",
      "management"
    ]

	$ dcos rabbitmq endpoints amqp
    {
      "address": [
        "192.168.100.27:5672",
        "192.168.100.30:5672",
        "192.168.100.8:5672"
      ],
      "dns": [
        "rabbitmq-0-node.rabbitmq.autoip.dcos.thisdcos.directory:5672",
        "rabbitmq-1-node.rabbitmq.autoip.dcos.thisdcos.directory:5672",
        "rabbitmq-2-node.rabbitmq.autoip.dcos.thisdcos.directory:5672"
      ],
      "vip": "amqp.rabbitmq.l4lb.thisdcos.directory:5672"
    }

  $ dcos rabbitmq endpoints management
    {
      "address": [
        "192.168.100.27:15672",
        "192.168.100.30:15672",
        "192.168.100.8:15672"
      ],
      "dns": [
        "rabbitmq-0-node.rabbitmq.autoip.dcos.thisdcos.directory:15672",
        "rabbitmq-1-node.rabbitmq.autoip.dcos.thisdcos.directory:15672",
        "rabbitmq-2-node.rabbitmq.autoip.dcos.thisdcos.directory:15672"
      ],
      "vip": "management.rabbitmq.l4lb.thisdcos.directory:15672"
    }

  1. Now connect