Vai al contenuto principale

Concetti — RabbitMQ

Architettura​

RabbitMQ su Hikube è un servizio di messaggistica gestito basato sul protocollo AMQP. Ogni cluster creato dalla console Hikube appartiene a un progetto e consuma le quote di tale progetto (CPU, memoria, storage).


Terminologia​

TermineDescrizione
Cluster RabbitMQIstanza RabbitMQ gestita, creata e amministrata dalla console (menu DB & Messaging → RabbitMQ).
AMQPAdvanced Message Queuing Protocol, protocollo standard di messaggistica supportato da RabbitMQ.
ExchangePunto di ingresso dei messaggi. Instrada i messaggi verso le queue tramite i binding.
QueueCoda che conserva i messaggi in attesa che un consumer li elabori.
BindingRegola di instradamento tra un exchange e una queue (basata su una routing key).
Quorum QueueTipo di queue che utilizza il protocollo Raft per replicare i messaggi su più nodi.
Virtual Host (vhost)Spazio dei nomi logico che isola exchange, queue e permessi all'interno di uno stesso cluster.
ConsumerApplicazione che legge ed elabora i messaggi di una queue.
PresetProfilo di risorse CPU/memoria predefinito, scelto alla creazione del cluster.
ReplicheNumero di nodi RabbitMQ del cluster. Determina la modalità di deployment.

Modalità di deployment​

Il campo Number of replicas della procedura guidata propone tre valori:

ValoreEtichetta nella consoleModalità
11 (Standalone)Un solo nodo. Il volume dei dati è replicato a livello dello storage della piattaforma.
33 (Max High Availability)Cluster di 3 nodi. La replica dei messaggi è assicurata da RabbitMQ (quorum queues).
55 (Ultra High Availability)Cluster di 5 nodi, tollerante alla perdita di due nodi.
Modalità fissata alla creazione

La modalità (standalone o cluster) e il numero di repliche non possono essere modificati dopo la creazione: la console mostra « The mode cannot be changed after creation ». Per cambiare modalità, crei un nuovo cluster.


Instradamento dei messaggi​

RabbitMQ utilizza un modello di instradamento flessibile basato su exchange e binding:

Tipi di exchange​

TipoInstradamento
directRouting key esatta
topicPattern matching con caratteri jolly (*, #)
fanoutBroadcast a tutte le queue collegate
headersInstradamento basato sugli header del messaggio

Exchange, queue e binding vengono creati dalle sue applicazioni, con un client AMQP connesso al vhost desiderato. La console gestisce il cluster, i vhost e gli utenti, non gli oggetti AMQP stessi.


Quorum queues e alta disponibilità​

Le quorum queues utilizzano il protocollo Raft per replicare i messaggi:

  1. Per ogni queue viene eletto un nodo leader
  2. I messaggi vengono replicati sui followers prima della conferma
  3. In caso di guasto del leader, un follower viene promosso automaticamente
suggerimento

Scelga 3 (Max High Availability) o 5 (Ultra High Availability) repliche per garantire il quorum Raft, e dichiari le queue critiche come quorum queues (argomento x-queue-type: quorum lato client).


Virtual host​

I vhost isolano le risorse all'interno di uno stesso cluster:

  • Ogni vhost ha i propri exchange, queue e permessi
  • Un utente può avere un diritto diverso su ciascun vhost
  • Utile per separare gli ambienti (production, staging) o le applicazioni su uno stesso cluster

La procedura guidata di creazione richiede almeno un vhost. Altri vhost possono essere aggiunti in seguito dalla pagina del cluster (pulsante Add a VHost).


Utenti e diritti​

Ogni utente RabbitMQ riceve una password generata dalla piattaforma, mostrata una sola volta alla creazione (o dopo una rotazione). I suoi diritti sono definiti per vhost:

Diritto nella consoleEffetto
AdministratorLettura, scrittura e configurazione sul vhost
Read-onlySola lettura sul vhost
No accessL'utente non ha accesso al vhost

Un utente può avere un solo diritto per vhost. I diritti si modificano in qualsiasi momento con l'azione Manage Access.


Preset di risorse​

Il Preset fissa le risorse CPU e memoria di ciascun nodo. I preset riprendono le taglie delle macchine virtuali delle serie u1, s1 e m1: un preset ha le stesse risorse della VM con lo stesso nome. Fa fede l'elenco mostrato dalla procedura guidata:

PresetCPUMemoria
u1.medium14Gi
u1.large28Gi
u1.xlarge416Gi
u1.2xlarge832Gi
u1.4xlarge1664Gi
u1.8xlarge32128Gi
s1.small12Gi
s1.medium24Gi
s1.large48Gi
s1.xlarge816Gi
s1.2xlarge1632Gi
s1.4xlarge3264Gi
m1.large216Gi
m1.xlarge432Gi
m1.2xlarge864Gi
m1.4xlarge16128Gi
m1.8xlarge32256Gi

Il preset non può essere modificato dopo la creazione.

La procedura guidata non preseleziona alcun preset: ne scelga uno per proseguire. Ogni opzione indica le sue risorse, ad esempio « u1.medium — 1 CPU / 4Gi ». Se l'elenco non può essere caricato, la procedura guidata mostra « The preset list could not be loaded. Try again later or contact support. »

Un cluster creato con un vecchio preset (nano, micro, small, medium, large, xlarge o 2xlarge) lo conserva e funziona come prima: il modulo Edit lo mostra così com'è e lo salva senza modifiche. Poiché il preset non può essere modificato dopo la creazione, contatti il supporto per questa modifica. Se le risorse di un cluster sono state fissate al di fuori del suo preset, il modulo lo indica con la menzione « (override) ».


Limiti​

ParametroValore
Nome del clusterDa 3 a 16 caratteri: lettere minuscole, cifre e trattini; inizia con una lettera e termina con una lettera o una cifra
Versioni disponibili4.2, 4.1, 4.0, 3.13; dopo la creazione, solo aggiornamento di versione
Repliche1, 3 o 5 (fissate alla creazione)
Nome del vhostLettere minuscole, cifre e trattini; inizia con una lettera, termina con una lettera o una cifra
Nome utenteDa 3 a 16 caratteri: lettere minuscole, cifre e trattini; inizia con una lettera, termina con una lettera o una cifra. Alcuni nomi, come admin o root, sono riservati
Dimensione del discoDa 1 a 4096 GB per nodo, entro il limite della quota di storage del progetto; solo aumento
Accesso esternoAttivabile alla creazione o in seguito
Porta AMQP5672, senza TLS

Per approfondire​