Skip to content

Commit

Permalink
Add RabbitMQ doc
Browse files Browse the repository at this point in the history
Signed-off-by: raihankhan <[email protected]>
  • Loading branch information
raihankhan committed Aug 28, 2024
1 parent 0d10a6a commit b195099
Show file tree
Hide file tree
Showing 60 changed files with 14,948 additions and 22 deletions.
42 changes: 22 additions & 20 deletions docs/guides/rabbitmq/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -16,34 +16,36 @@ aliases:
# Overview

RabbitMQ is a robust and flexible open-source message broker software that facilitates communication between distributed applications. It implements the Advanced Message Queuing Protocol (AMQP) standard, ensuring reliable messaging across various platforms and languages. With its support for multiple messaging protocols and delivery patterns, RabbitMQ enables seamless integration and scalability for modern microservices architectures. It provides features such as message persistence, clustering, and high availability, making it a preferred choice for handling asynchronous communication and decoupling components in enterprise systems.
RabbitMQ is a robust and flexible open-source message broker software that facilitates communication between distributed applications. It implements the Advanced Message Queuing Protocol (AMQP) standard, ensuring reliable messaging across various platforms and languages. With its support for multiple messaging protocols (MQTT, STOMP etc.) and delivery patterns (Fanout, Direct, Exchange etc.), RabbitMQ enables seamless integration and scalability for modern microservices architectures. It provides features such as message persistence, clustering, and high availability, making it a preferred choice for handling asynchronous communication and decoupling components in enterprise systems.

## Supported RabbitMQ Features

| Features | Availability |
|----------------------------------------------------|:------------:|
| Clustering | &#10003; |
| Authentication & Authorization | &#10003; |
| Custom Configuration | &#10003; |
| Monitoring using Prometheus and Grafana | &#10003; |
| Builtin Prometheus Discovery | &#10003; |
| Using Prometheus operator | &#10003; |
| Externally manageable Auth Secret | &#10003; |
| Reconfigurable Health Checker | &#10003; |
| Persistent volume | &#10003; |
| Dashboard ( Management UI ) | &#10003; |
| Grafana Dashboards (Alerts and Monitoring) | &#10003; |
| Custom Plugin configurations | &#10003; |
| Pre-Enabled utility plugins ( Shovel, Federation ) | &#10003; |
| Automatic Vertical Scaling | &#10003; |
| Automatic Volume Expansion | &#10003; |
| Autoscaling ( Compute resources & Storage ) | &#10003; |

| Features | Availability |
|---------------------------------------------------------------|:------------:|
| Clustering | &#10003; |
| Custom Configuration | &#10003; |
| Custom Plugin configurations | &#10003; |
| Monitoring using Prometheus and Grafana | &#10003; |
| Builtin Prometheus Discovery | &#10003; |
| Operator managed Prometheus Discovery | &#10003; |
| Authentication & Authorization (TLS) | &#10003; |
| Externally manageable Auth Secret | &#10003; |
| Persistent volume | &#10003; |
| Grafana Dashboards (Alerts and Monitoring) | &#10003; |
| Pre-Enabled Dashboard ( Management UI ) | &#10003; |
| Pre-Enabled utility plugins ( Shovel, Federation ) | &#10003; |
| Pre-Enabled Protocols with web dispatch ( AMQP, MQTT, STOMP ) | &#10003; |
| Automated Vertical & Horizontal Scaling | &#10003; |
| Automated Volume Expansion | &#10003; |
| Autoscaling ( Compute resources & Storage ) | &#10003; |
| Reconfigurable Health Checker | &#10003; |
| Reconfigurable TLS Certificates (Add, Remove, Rotate, Update) | &#10003; |

## Supported RabbitMQ Versions

KubeDB supports the following RabbitMQ Versions.
- `3.12.12`
- `3.13.2`

## Life Cycle of a RabbitMQ Object

Expand Down
3 changes: 1 addition & 2 deletions docs/guides/rabbitmq/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
title: RabbitMQ
menu:
docs_{{ .version }}:
identifier: guides-rabbitmq
name: RabbitMQ
identifier: rm-guides
parent: guides
weight: 10
menu_name: docs_{{ .version }}
Expand Down
10 changes: 10 additions & 0 deletions docs/guides/rabbitmq/autoscaler/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Autoscaling
menu:
docs_{{ .version }}:
identifier: mg-auto-scaling
name: Autoscaling
parent: mg-RabbitMQ-guides
weight: 46
menu_name: docs_{{ .version }}
---
10 changes: 10 additions & 0 deletions docs/guides/rabbitmq/autoscaler/compute/_index.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
---
title: Compute Autoscaling
menu:
docs_{{ .version }}:
identifier: mg-compute-auto-scaling
name: Compute Autoscaling
parent: mg-auto-scaling
weight: 46
menu_name: docs_{{ .version }}
---
55 changes: 55 additions & 0 deletions docs/guides/rabbitmq/autoscaler/compute/overview.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,55 @@
---
title: RabbitMQ Compute Autoscaling Overview
menu:
docs_{{ .version }}:
identifier: mg-auto-scaling-overview
name: Overview
parent: mg-compute-auto-scaling
weight: 10
menu_name: docs_{{ .version }}
section_menu_id: guides
---

> New to KubeDB? Please start [here](/docs/README.md).
# RabbitMQ Compute Resource Autoscaling

This guide will give an overview on how KubeDB Autoscaler operator autoscales the database compute resources i.e. cpu and memory using `RabbitMQautoscaler` crd.

## Before You Begin

- You should be familiar with the following `KubeDB` concepts:
- [RabbitMQ](/docs/guides/RabbitMQ/concepts/RabbitMQ.md)
- [RabbitMQAutoscaler](/docs/guides/RabbitMQ/concepts/autoscaler.md)
- [RabbitMQOpsRequest](/docs/guides/RabbitMQ/concepts/opsrequest.md)

## How Compute Autoscaling Works

The following diagram shows how KubeDB Autoscaler operator autoscales the resources of `RabbitMQ` database components. Open the image in a new tab to see the enlarged version.

<figure align="center">
  <img alt="Compute Auto Scaling process of RabbitMQ" src="/docs/images/RabbitMQ/compute-process.svg">
<figcaption align="center">Fig: Compute Auto Scaling process of RabbitMQ</figcaption>
</figure>

The Auto Scaling process consists of the following steps:

1. At first, a user creates a `RabbitMQ` Custom Resource Object (CRO).

2. `KubeDB` Provisioner operator watches the `RabbitMQ` CRO.

3. When the operator finds a `RabbitMQ` CRO, it creates required number of `StatefulSets` and related necessary stuff like secrets, services, etc.

4. Then, in order to set up autoscaling of the various components (ie. ReplicaSet, Shard, ConfigServer, Mongos, etc.) of the `RabbitMQ` database the user creates a `RabbitMQAutoscaler` CRO with desired configuration.

5. `KubeDB` Autoscaler operator watches the `RabbitMQAutoscaler` CRO.

6. `KubeDB` Autoscaler operator generates recommendation using the modified version of kubernetes [official recommender](https://github.com/kubernetes/autoscaler/tree/master/vertical-pod-autoscaler/pkg/recommender) for different components of the database, as specified in the `RabbitMQAutoscaler` CRO.

7. If the generated recommendation doesn't match the current resources of the database, then `KubeDB` Autoscaler operator creates a `RabbitMQOpsRequest` CRO to scale the database to match the recommendation generated.

8. `KubeDB` Ops-manager operator watches the `RabbitMQOpsRequest` CRO.

9. Then the `KubeDB` Ops-manager operator will scale the database component vertically as specified on the `RabbitMQOpsRequest` CRO.

In the next docs, we are going to show a step by step guide on Autoscaling of various RabbitMQ database components using `RabbitMQAutoscaler` CRD.
Loading

0 comments on commit b195099

Please sign in to comment.