# RabbitMQ - Architecture

## Topologies <a href="#rabbitmqarchitecture-topologies" id="rabbitmqarchitecture-topologies"></a>

### Instance autonome <a href="#rabbitmqarchitecture-singleinstance" id="rabbitmqarchitecture-singleinstance"></a>

RabbitMQ peut être provisionné en tant qu'instance autonome en libre-service en utilisant ITCare.

<div align="center"><figure><img src="https://1991151216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu3cmMjeBxFoEweG69ePZ%2Fuploads%2Fgit-blob-e9b1ca2ac6c0f02eeceaef4d9f37fe95ce3cc83b%2Faza_fr.png?alt=media" alt="" width="152"><figcaption><p>Topologies</p></figcaption></figure></div>

**Propriétés**

Une fois déployée, l'instance unique aura les propriétés suivantes :

<table><thead><tr><th width="249">Composant</th><th>Valeur</th></tr></thead><tbody><tr><td>Port d'écoute AMQP</td><td><ul><li>5672 si TLS est désactivé</li><li>5671 si TLS est activé</li></ul></td></tr><tr><td>Endpoint Prometheus</td><td>http://my-instance.hosting.cegedim.cloud:15692/metrics</td></tr><tr><td>URL d'administration</td><td>http://my-instance.hosting.cegedim.cloud:15672/</td></tr><tr><td>Endpoint API REST</td><td>http://my-instance.hosting.cegedim.cloud:15672/api</td></tr></tbody></table>

### Cluster <a href="#rabbitmqarchitecture-cluster" id="rabbitmqarchitecture-cluster"></a>

RabbitMQ peut être provisionné en tant que cluster en libre-service en utilisant ITCare.

Un cluster RabbitMQ peut être déployé selon une topologie à 3 ou 5 nœuds, adaptée à l'utilisation des quorums.

Les nœuds seront répartis sur **toutes les** zones de disponibilité disponibles dans la zone ciblée.

<figure><picture><source srcset="https://1991151216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu3cmMjeBxFoEweG69ePZ%2Fuploads%2Fgit-blob-d9416d3200db22e41574488c71f39b8cb7cba6ce%2Ffr.png?alt=media" media="(prefers-color-scheme: dark)"><img src="https://1991151216-files.gitbook.io/~/files/v0/b/gitbook-x-prod.appspot.com/o/spaces%2Fu3cmMjeBxFoEweG69ePZ%2Fuploads%2Fgit-blob-d9416d3200db22e41574488c71f39b8cb7cba6ce%2Ffr.png?alt=media" alt="" width="484"></picture><figcaption><p>Cluster</p></figcaption></figure>

<table><thead><tr><th width="249">Composant</th><th>Valeur</th></tr></thead><tbody><tr><td>Port d'écoute AMQP</td><td><ul><li>5672 si TLS est désactivé</li><li>5671 si TLS est activé</li></ul></td></tr><tr><td>Endpoint Prometheus</td><td>http://nodex.hosting.cegedim.cloud:15692/metrics</td></tr><tr><td>URL d'administration</td><td>https://cluster-name.rmq.hosting.cegedim.cloud/</td></tr><tr><td>Endpoint API REST</td><td>https://cluster-name.rmq.hosting.cegedim.cloud/api</td></tr></tbody></table>

### Quorum Queues <a href="#rabbitmqarchitecture-quorumdesfilesdattente" id="rabbitmqarchitecture-quorumdesfilesdattente"></a>

Les files d'attente quorum sont fortement recommandées avec les clusters RabbitMQ émis à partir du PaaS Cegedim.cloud pour une résilience maximale !

Une file d'attente de quorum sera nativement répliquée sur tous les nœuds participant au cluster.

{% embed url="<https://www.rabbitmq.com/quorum-queues.html>" %}

{% hint style="danger" %}
La mise en miroir classique n'est pas conseillée sur un cluster RabbitMQ car la Quorum Queue est son amélioration naturelle.
{% endhint %}

### Caractéristiques <a href="#rabbitmqarchitecture-caracteristiques" id="rabbitmqarchitecture-caracteristiques"></a>

Cette section énumère les fonctionnalités disponibles pour le client, ainsi que la manière de les demander ou de les exécuter :

| **Libre service** | Le client peut effectuer une action de manière autonome.                                            |
| ----------------- | --------------------------------------------------------------------------------------------------- |
| **Sur demande**   | Le client peut demander que l'action soit effectuée auprès de l'équipe de support de cegedim.cloud. |

<table data-full-width="true"><thead><tr><th width="317">Fonctionnalité</th><th width="140" data-type="checkbox">Libre service</th><th width="146.5" data-type="checkbox">Sur demande</th><th>Commentaires</th></tr></thead><tbody><tr><td>Accès SSH</td><td>false</td><td>false</td><td>L'accès SSH est désactivé et réservé aux administrateurs de cegedim.cloud.</td></tr><tr><td>Gestion des paramètres</td><td>false</td><td>true</td><td>La modification de rabbitmq.conf et des autres paramètres internes est effectuée par cegedim.cloud sur demande.</td></tr><tr><td>Accès Admin RabbitMQ</td><td>true</td><td>true</td><td><p>Le client peut se connecter avec un compte administrateur à l'interface utilisateur de gestion RabbitMQ (mot de passe défini par le client dans l'assistant d'approvisionnement).</p><p>Certains objets sont nécessaires et réservés aux opérations de cegedim.cloud. Des mesures coercitives peuvent être appliquées.</p></td></tr><tr><td>Exporter, importer des définitions RabbitMQ</td><td>true</td><td>false</td><td>Disponible en libre-service en utilisant l'interface utilisateur de gestion ou l'API.</td></tr><tr><td>Gérer les plugins RabbitMQ</td><td>false</td><td>true</td><td>Les plugins RabbitMQ sont gérés par cegedim.cloud et peuvent être installés sur demande par notre équipe de support.</td></tr></tbody></table>

## Sécurité <a href="#rabbitmqarchitecture-securite" id="rabbitmqarchitecture-securite"></a>

### Authentification <a href="#rabbitmqarchitecture-authentification" id="rabbitmqarchitecture-authentification"></a>

L'authentification utilise la base de données interne de RabbitMQ.

### Autorisation et mots de passe <a href="#rabbitmqarchitecture-autorisationetmotsdepasse" id="rabbitmqarchitecture-autorisationetmotsdepasse"></a>

Cette section énumère la gestion des mots de passe pour le PaaS RabbitMQ :

<table data-full-width="true"><thead><tr><th width="285">Compte</th><th width="238" data-type="checkbox">Stocké par cegedim.cloud</th><th width="198.2" data-type="checkbox">Stocké par le client</th><th width="99" data-type="checkbox">Enforcé</th><th>Algorithme de Hash</th></tr></thead><tbody><tr><td>Compte <strong>admin</strong></td><td>false</td><td>true</td><td>false</td><td>sha256</td></tr><tr><td><strong>TOUT</strong> autre compte</td><td>false</td><td>true</td><td>false</td><td>sha256</td></tr><tr><td>Compte <strong>cgdm_admin</strong></td><td>true</td><td>false</td><td>true</td><td>sha256</td></tr><tr><td>Compte <strong>monitoring</strong></td><td>true</td><td>false</td><td>true</td><td>sha256</td></tr></tbody></table>

### Transport sécurisé <a href="#rabbitmqarchitecture-transportsecurise" id="rabbitmqarchitecture-transportsecurise"></a>

TLS/SSL peut être activé pour le protocole AMQP lors du provisionnement ou par la suite.

Par défaut, il est désactivé pour éviter toute surcharge inutile.

### Politiques <a href="#rabbitmqarchitecture-politiques" id="rabbitmqarchitecture-politiques"></a>

Cette section énumère la gestion des politiques pour le PaaS RabbitMQ :

<table><thead><tr><th width="126">Politiques</th><th width="100" data-type="checkbox">Défaut</th><th width="109" data-type="checkbox">Enforcé</th><th>Commentaires</th></tr></thead><tbody><tr><td><strong>TTL</strong></td><td>true</td><td>false</td><td>Les messages datant de plus de 28 jours expireront automatiquement</td></tr><tr><td><strong>HA</strong></td><td>true</td><td>true</td><td>ha-mode configuré à ALL (RabbitMQ 3.x uniquement)</td></tr></tbody></table>

{% hint style="info" %}
**RabbitMQ 4.x - Changement important :**

À partir de RabbitMQ 4.0, la policy HA n'est plus appliquée car les Quorum Queues fournissent nativement la réplication des données. Les Feature Flags sont automatiquement activés lors du provisioning.

Pour les versions RabbitMQ 3.x, la policy HA reste active avec ha-mode: ALL.
{% endhint %}

{% hint style="warning" %}
Merci d'ouvrir un ticket de demande si vous avez besoin de modifier ces politiques.
{% endhint %}

### Emplacement des données <a href="#rabbitmqarchitecture-emplacementdesdonnees" id="rabbitmqarchitecture-emplacementdesdonnees"></a>

Les données pour le PaaS RabbitMQ de cegedim.cloud sont stockées sur des machines virtuelles dédiées créées lors de la demande.

Ces machines virtuelles et le stockage associé sont hébergés et gérés dans les centres de données de cegedim.cloud.
