Integrazione Asterisk e Kamalio sip proxy server per load balancing e high availability
Dopo anni di utilizzo di Asterisk come strumento per la realizzazione di centralini (pbx), arriva il momento in cui i progetti salgono di complessità. Vieni contattato da ditte che possiedono già un centralino, ma che per un motivo o per un altro, dovendo incrementare il traffico telefonico, si trovano ad avere problemi.Bassa qualità dell’audio, caduta della chiamata, irraggiungibilità del server.Ed è qui che diviene necessario integrare Asterisk e Kamailio sip proxy server.
La scelta, il più delle volte, riguarderà una ricalibrazione dell’hardware su cui si basava l’architettura della centrale telefonica, o della connettività (LAN o WAN), essendo, per troppo tempo, dato per assodato il binomio : Linux/Asterisk = risparmio.
Ci sono però delle realtà in cui l’hardware è già ben dimensionato, la connettività regge, ed il mero problema risulta l’effettiva capacità di Asterisk di gestire una mole di telefonate simultanee oltre qualche centinaio (500/700 per lo più).
Questo “problema” di performance di Asterisk è noto, ed è legato alla sua architettura, ma diciamo apertamente che viene ampiamente bilanciato dai suoi pregi.
In questo scenario, l’unica alternativa sarà quella di aggiungere 1 o più server per gestire la mole crescente di telefonate, abbinato ad un sistema di bilanciamento di carico (Load Balancing), ed è qui che entra in scena Kamailio.
Kamailio è un proxy server Open Source, dalle performance imbattibili, che operando attraverso il protocollo SIP, si occupa della parte definita di signalling. Quindi principalmente della registrazione (Registrar), della localizzazione della destinazione di una sessione ( la S di Sip), e della negoziazione dei parametri necessari per avviare la comunicazione multimediale (tipologia,codec….ecc..ecc..).
In uno scenario ideale, Kamailio si può occupare dell’autenticazione degli Endpoint SIP (telefoni Ip), dei carrier VoIP e del bilanciamento di carico tra le centrali Asterisk, mentre la parte definita dal protocollo RTP, cioè quella di scambio di contenuti multimediali (audio e/o video), viene lasciata completamente a carico dei Server Asterisk.
Kamailio è un software basato su moduli, all’arrivo di un pacchetto SIP ( ad esempio: chiamata entrante da un carrier VoIp ), il modulo TM (transaction module), una volta ispezionatolo deciderà in base a delle regole contenute nel suol file di configurazione (kamailio.cfg) se inoltrarlo verso la destinazione (nel caso in questione dialplan di asterisk).
Nella sua rotta verso la destinazione, nel caso in cui sia configurato un sistema di bilanciamento di carico, il file di configurazione kamailio.cfg, attraverso il modulo dispatcher.so, deciderà su quali degli N server Asterisk far atterrare la chiamata.
L’integrazione tra Asterisk e Kamailio sip proxy server è ancora più interessante riguardo la possibilità di configurare in kamailio un sistema di ping dei server Asterisk, che attiveranno e disattiveranno le destinazioni del Load Balancer in caso di esito negativo del ping.
Così facendo, posto di avere un numero di istanze pbx non ridotte all’osso, si avrà anche un sistema di High Availability della parte associata al MEDIA della comunicazione, mentre per la parte Kamailio, nel caso, dovremo prevederne due istanze (modalità cluster).
Questo per non incappare nel cosidetto single point of failure, cioè la possibilità di non assicurare la continuità del servizio in caso di singolo guasto hardware (singolo server kamailio).