Bilanciare il traffico verso Galera Cluster con HAProxy

Abbiamo già visto qui le caratteristiche di Galera Cluster, che permette di realizzare una topologia multi-master active-active di database con replica sincrona dei dati, abilitando le operazioni di lettura e scrittura su tutti i nodi del cluster.

Criptare la comunicazione tra i nodi di un Cluster Galera con MySQL

Per rendere sicura la comunicazione tra client e server e tra gli stessi server che compongono un Cluster Galera si può (e si deve) agire a diversi livelli.

Utilizzare rtpengine come transcoder in scenari SIP con Kamailio

Curiosando tra i miei post precedenti avrete avuto modo di scoprire le potenzialità di rtpengine, dalla procedura di installazione alla configurazione per utilizzarlo con kamailio. Qui andremo ad approfondire ulteriormente le funzionalità di rtpengine e lo utilizzeremo come transcoder audio, cioè per adattare gli stream audio generati da due endpoint RTP che utilizzano codec audio diversi.

Attivare un nodo Galera Arbitrator in un Cluster Galera

Nei precedenti post Galera Cluster per MySQL e Automatizzare l’avvio di Galera Cluster ci siamo concentrati sull’installazione del cluster Galera su 2 nodi e sull’avvio automatico tramite script di job nel crontab. Qui voglio parlare invece del modulo Galera Arbitrator.

Automatizzare l'avvio di Galera Cluster su 2 nodi dopo un reboot

Nel post Galera Cluster per MySQL abbiamo visto come installare configurare ed avviare un cluster Galera con MySQL su 2 nodi, e ci siamo anche soffermati sull’importanza della procedura di avvio dei nodi. Il problema è legato al fatto che all’avvio ciascun nodo cerca un primario al quale connettersi. In caso di riavvio del singolo server non ci sarebbero problemi ad attivare lo start automatico di mysqld tramite systemctl, ma in caso di riavvio completo dell’infrastruttura su uno dei server è necessario procedere con il bootstrap del cluster.

Galera Cluster per MySQL, setup su 2 nodi

Galera Cluster è un framework free per l’attivazione di cluster sincrono multi-master per MySQL/MariaDB. In poche parole, permette di realizzare una topologia multi-master active-active con replica sincrona dei dati, abilitando le operazioni di lettura e scrittura su tutti i nodi del cluster.

Redis in HA utilizzando Sentinel

Redis (REmote DIctionary Server) è un database in-memory non relazionale, open-source, ad alte prestazioni, che può essere utilizzato come archivio di strutture dati di tipo chiave-valore. Può essere ovviamente usato come singola istanza, quindi installato su un singolo server, oppure configurato in Alta Affidabilità. Esistono due modi per avere un’architettura Redis di tipo HA, attivare un Cluster Redis avendo a disposizione almeno 6 nodi (3 Master + 3 Slave), oppure utilizzare il tool Sentinel avendo a disposizione 3 nodi su cui attivare Sentinel oltre i nodi Master e Slave di Redis stesso.

Kamailio funzionalità di Balancer

Le funzionalità di load balancer su Kamailio sono rese disponibili attraverso il modulo “dispatcher”, che prevede il supporto di diversi algoritmi di balancing e traffic dispatching.
In questo tutorial vedremo come configurare Kamailio per bilanciare il traffico verso differenti destinazioni in base alla loro disponibilità, illustrando le modalità round-robin e priority. Kamailio è in grado di monitorare lo stato degli end-point di destinazione attraverso l’utilizzo di SIP OPTIONS oppure altri messaggi come INFO.

Configurare Kamailio con rtpengine per gestire traffico RTP dietro NAT

In uno scenario di laboratorio, quindi ideale direi, di solito tutti gli elementi coinvolti in una chiamata VoIP sono sulla stessa subnet e questo vuol dire che i flussi media RTP transitano direttamente tra chiamante e chiamato. Questo però non accade mai nel mondo reale, dove invece lo scenario è molto più complesso e sia i messaggi di segnalazione SIP sia i flussi media devono transitare attraverso firewall e NAT.
In generale possiamo pensare ad uno scenario come quello illustrato nella figura seguente, dove il chiamante è localizzato esternamente alla nostra infrastruttura ed il chiamato si trova su una rete locale dietro un SIP Proxy, che a sua volta è dietro un firewall.

Kamailio installazione e configurazione

Kamailio è un SIP Server Open Source rilasciato su licenza GPLv2+, capace di gestire migliaia di call setup al secondo, e con il pieno supporto del protocollo SIP definito in IETF RFC 3261, inclusi i vari annessi e addon. L’utilizzo principale di Kamailio è quello di un SIP Proxy per il routing di messaggi SIP, ma ci sono poi tutte una serie funzionalità aggiuntive supportate e descritte sul sito ufficiale al link https://www.kamailio.org/w/. Sulla documentazione ufficiale si trovano i dettagli dei vari moduli supportati dal sistema, qui invece andiamo a vedere brevemente come installare Kamailio e come configurarlo per la gestione di chiamate in ingresso.