Vi sono varie possibilita’ per strutturare un sistema HA per Asterisk. Quello che vi presentero’ oggi con un micro HowTo e’ sicuramnte una delle piu veloci ed a mio giudizio efficaci.
A dire il vero il grosso del lavoro lo fa uCarp, (Common Address Redundancy Protocol) software portato dal OpenBSD, alternativa al VRRP di Cisco.
Tipicamente l’ip che forniamo ai nostri client e’ quello del nostro server Asterisk, utilizzando uCarp, l’ip che forniremo sara uno “virtuale” che verra’ gestito da uCarp. Asterisk potra’ essere installato in uno o piu server assieme ad uCarp, il quale si preoccupera’ di “spostare” l’ip da un server ad un altro quando quello “attivo” non dovesse piu rispondere. Ovviamente ucarp non conosce Asterisk o le risorse disponibili sul nostro server, dovremmo percio’ usufruire di qualche script per dire ad uCarp che e’ giuto il momento di abbandonare la nave.
Cominciamo con uCarp, dopo averlo installato sulla nostra Debian, configurarlo e’ ancora piu semplice.
/usr/sbin/ucarp -i eth0 -s 192.168.3.3 -v 42 -p pisolo \
-a 10.100.0.33\
-u /etc/ucarp/vip-up.sh \
-d /etc/ucarp/vip-down.sh \
-B -z
Il blocco sopra riportato e’ stato inserito in /etc/rc.local, ed istruisce uCarp ad utilizzare l’interfaccia eth0, spiega che l’ip del server e’ l’192.168.3.3, assegna un numero identificativo e la password “pisolo” che sara’ condivisa tra i vari uCarp; l’ip virtuale quello che verra’ scambiato tra i vari server e’ il 10.100.0.33. Le opzioni -u e -d fanno eseguire i relativi script quando il demone diventa Master (up) o Backup (down). Infine l’opzione -B lo esegue in background e -z istruisce uCarp ad eseguire lo script specificato con l’opzione -d al momento del shutdown.
Sara di seguito sufficente copiare la medesima configurazione negli altri server, modificando solamente l’ip sorgente (-s)
Un altra opzione a disposizone spesso utile, ma non nel caso di Asterisk e’ -P, tale flag va dato solo da una configurazione uCarp, e in pratica, lo setta a “preferito”, appena il server con questa opzione sara’ nuovamente disponibile ritornera’ il prima possibile Master. Tuttavia Asterisk potra’ avere vari client registrati e comunicazioni in corso, percui potrebbe non essere la scelta piu efficace.
Gli script specificati nella configurazione contengono:
cat via-up.sh
#!/bin/sh
exec 2> /dev/null/sbin/ip addr add 10.100.0.33/24 dev “$1″
cat vip-down.sh
#!/bin/sh
exec 2> /dev/null/sbin/ip addr del 10.100.0.33/24 dev “$1″
A questo punto in entrabi i server ci bastera’ eseguire il file /etc/rc.local per avviare i due demoni.
I log li potete leggere in /var/log/daemon, se tutto sara’ andato bene nel master dovreste trovare delle entry come queste nel Master:
Jul 23 16:11:47 localhost snmpd[2610]: Connection from UDP: [127.0.0.1]:32858
Jul 23 16:11:47 localhost ucarp[10822]: [WARNING] Switching to state: MASTER
Jul 23 16:11:47 localhost ucarp[10822]: [WARNING] Spawning [/etc/ucarp/vip-up.sh eth0]
Jul 23 16:12:02 localhost snmpd[2610]: Connection from UDP: [127.0.0.1]:32858
ed altre simili, con la scrittta BACKUP in quelli “inattivi”.
Ora pingate l’ip virtuale, nell’esempio 10.100.0.33, se staccate il cavo di rete, buttata giu l’interfaccia o killate ucarp, dopo pochi istanti noterete il cambio di stato.
A riprova del funzionamento potete eseguire il comando
ip addr
che vi mostrera’ se l’host in cui lo eseguite ha ‘ip virtuale configurato.
2: eth0:
mtu 1500 qdisc pfifo_fast qlen 1000
link/ether 00:08:02:ef:c5:2b brd ff:ff:ff:ff:ff:ff
inet 192.168.3.3/24 brd 10.100.0.255 scope global eth0
inet 10.100.0.33/24 scope global secondary eth0
inet6 fe80::208:2ff:feef:c52b/64 scope link
valid_lft forever preferred_lft forever
Domani vedremo gli script necessari per controllare il funzionamento di asterisk.
This post has no comment.