# RabbitMQ - Upgrade

## **PaaS upgrade workflow** <a href="#rabbitmqupgradeinplace-rabbitmqpaasupgrade" id="rabbitmqupgradeinplace-rabbitmqpaasupgrade"></a>

### Request <a href="#rabbitmqupgradeinplace-request" id="rabbitmqupgradeinplace-request"></a>

The update of a RabbitMQ PaaS is the responsibility of **cegedim.cloud** and can be requested via a [request ticket](https://itcare.cegedim.cloud/?createTicket=true\&step=Request\&requestTypeIndex=4\&formName=MES_RABBITMQ) submitted from ITCare, specifying a time slot for the operation.

Please specify if the operation is to be carried out outside of business hours in order to plan an RFC.

It is recommended that you upgrade your non-production environments first in order to estimate the downtime generated by the operation and to test your applications using the new engine version.

### Process <a href="#rabbitmqupgradeinplace-process" id="rabbitmqupgradeinplace-process"></a>

The upgrade of RabbitMQ (single-instance or high-availability) is performed as a **single automated operation**, which sequentially executes the following two steps.

* Update the Operating system first if required
  * Multiple updates depending on the scenario: Debian 10 → Debian 11 → Debian 12
* Update of the RabbitMQ engine in the target version

Depending on the source and target versions of RabbitMQ, it may be necessary to first migrate the operating system to a version supported by **cegedim.cloud** (for more information, check [#rabbitmqupgradeinplace-os-rabbitmqsupportmatrixmatrice](#rabbitmqupgradeinplace-os-rabbitmqsupportmatrixmatrice "mention")).

<figure><picture><source srcset="https://835168969-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2FXoHyOBZPpJv3UALn4V%2Fuploads%2Fgit-blob-e737cf8fc2c21ef021d807ae113adcc0aeac3685%2Frabbitmq-upgrade-dark-eng.png?alt=media" media="(prefers-color-scheme: dark)"><img src="https://835168969-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2F2FXoHyOBZPpJv3UALn4V%2Fuploads%2Fgit-blob-489362d35ce40d9e3f2d78b7ecf9fd624c6f812f%2Frabbitmq-upgrade-light-eng.png?alt=media" alt="" width="563"></picture><figcaption></figcaption></figure>

{% hint style="info" %}
All stable feature flags must be enabled before and after each upgrade.
{% endhint %}

\### Impacts

* Debian version upgrades must be performed **sequentially**. For instance, it is not possible to upgrade directly from Debian 10 to Debian 12. An intermediate upgrade to Debian 11 is required before proceeding to subsequent versions.
* RabbitMQ version upgrades within the 3.x branch must be performed **sequentially**. For instance, it is not possible to upgrade directly from 3.10 to 3.12 or 3.13. An intermediate upgrade to 3.11 is required before proceeding to subsequent versions. **Exception: from version 3.13.X, it is possible to upgrade directly to any 4.x version (4.0, 4.1 or 4.2).**

### Time references <a href="#rabbitmqupgradeinplace-timereferences" id="rabbitmqupgradeinplace-timereferences"></a>

As a general guideline, the estimated durations for each step of the upgrade, are as follows:

* Debian upgrade: 10 minutes on average
* RabbitMQ upgrade: 30 minutes for a FARM with 3 nodes on average
* A 3-minute delay will be applied between the upgrade of each node to allow RabbitMQ to recover properly

## **OS / RabbitMQ support matrix** <a href="#rabbitmqupgradeinplace-os-rabbitmqsupportmatrixmatrice" id="rabbitmqupgradeinplace-os-rabbitmqsupportmatrixmatrice"></a>

Linux distributions supported by **cegedim.cloud** depending on the RabbitMQ version:

<table><thead><tr><th width="223">RabbitMQ version</th><th>Debian distribution</th></tr></thead><tbody><tr><td>RabbitMQ 3.10.X</td><td>Debian 10</td></tr><tr><td>RabbitMQ 3.11.X</td><td>Debian 10</td></tr><tr><td>RabbitMQ 3.12.X</td><td>Debian 11</td></tr><tr><td>RabbitMQ 3.13.X</td><td>Debian 12</td></tr><tr><td>RabbitMQ 4.0.X</td><td>Debian 12</td></tr><tr><td>RabbitMQ 4.1.X</td><td>Debian 12</td></tr><tr><td>RabbitMQ 4.2.X</td><td>Debian 12</td></tr></tbody></table>

## **Supported RabbitMQ update paths** <a href="#rabbitmqupgradeinplace-supportedrabbitmqupdatepaths" id="rabbitmqupgradeinplace-supportedrabbitmqupdatepaths"></a>

For the OS upgrade, the upgrade will be performed node by node across the different RabbitMQ nodes, with no specific order.

RabbitMQ upgrade will be applied to all nodes in the RabbitMQ cluster, starting with the first node in ascending order.

Below are the update paths supported by **cegedim.cloud**:

<table data-full-width="true"><thead><tr><th width="166">Source Version</th><th>RabbitMQ 3.10.X</th><th>RabbitMQ 3.11.X</th><th>RabbitMQ 3.12.X</th><th>RabbitMQ 3.13.X</th><th>RabbitMQ 4.0.X</th><th>RabbitMQ 4.1.X</th><th>RabbitMQ 4.2.X</th></tr></thead><tbody><tr><td>RabbitMQ 3.10.X</td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 10</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 10</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 10 → Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td></tr><tr><td>RabbitMQ 3.11.X</td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 10</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 10 → Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>**</strong></p><p>Debian 10 → Debian 11 → Debian 12</p></td></tr><tr><td>RabbitMQ 3.12.X</td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 11</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 11 → Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span> <strong>*</strong></p><p>Debian 11 → Debian 12</p></td></tr><tr><td>RabbitMQ 3.13.X</td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td></tr><tr><td>RabbitMQ 4.0.X</td><td></td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td></tr><tr><td>RabbitMQ 4.1.X</td><td></td><td></td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td></tr><tr><td>RabbitMQ 4.2.X</td><td></td><td></td><td></td><td></td><td></td><td></td><td><p><span data-gb-custom-inline data-tag="emoji" data-code="2705">✅</span></p><p>Debian 12</p></td></tr></tbody></table>

{% hint style="warning" %}
\*\*Important for upgrades to RabbitMQ 4.x:\*\*

* The HA policy will no longer be applied (replaced by native Quorum Queues)
* For RabbitMQ 4.2, Erlang 27.0 minimum is required
* It is strongly recommended to test on a non-production environment first
  {% endhint %}

**\*** An operating system upgrade is required

**\*\*** Two operating system upgrades are required
