PDA

Voir la version complète : Failover avec deux serveurs Asterisk



capsiz
20/06/2016, 19h38
Salut la communauté,
J'ai quelques questions sur le fonctionnement et la mise en place d'une redondance avec deux PABX.

1- Supposons que nous avons deux PABX avec un switch failover par exemple.
Les configurations bien sur doivent être identiques sur les des serveurs.
Est-ce qu'on doit obligatoirement configurer le secondaire ou c'est le système qui va se charger de copier les configurations du primaire sur le secondaire, un peut comme avec les DNS?

2- En cas de défaillance du primaire, le secondaire prend le relais, comment est géré le cas de l'adresse IP du serveur?
Il y a t-il un mécanisme qui permet au secondaire de récupérer l'adresse du primaire? Ou on doit reconfigurer les clients?

Merci

fastm3
20/06/2016, 20h04
google drbd heartbeat devrait te donner des pistes pour une possibilité.
Note que si tu ne veux pas tout reinventer. Des distribs facilitent la tache pour cela ( xivo par exemple mais pas testé )
Apres , un simple backup grace aux telephones qui ont un serveur de backup peut aussi etre suffisant quelque fois.
Francois.

tanguyd
20/06/2016, 21h01
Pour ce qui est de la bascule des téléphones, je te conseille de regarder aussi du coté de DNS-SRV. Il n'est pas obligatoire de passer par une IP partagée.

Le plus chiant gérer sera les appels entrants.
Il faudra décider si tu as un même trunk sip sur les deux serveurs mais qu'il n'est actif que d'un coté à la fois ou éventuellement avoir un compte sip différant par serveur mais un opérateur capable d'envoyer l'appel sur le compte du serveur backup si le principal est déconnecté.

Je donne un exemple simple mais sale pour dupliquer une conf entre deux freepbx mais en étant connecté à l'opérateur avec un compte sip différant

Export sur la prod


#!/bin/sh
# sert a dupliquer la configuration locale pour l'envoyer vers le serveur de secours

# Copie: la base asterisk mysql, la base interne asterisk, le repertoire /etc/asterisk
# et les fichiers son
SQLUSER=asteriskuser
SQLPASS=xxxxxxx

TMP=/data/tmp

DESTDISTANT=transfert_data@secours:

# copie des repertoires

( cd /etc && tar czf $TMP/astconfig.tar.gz asterisk )
( cd /var/www/html/admin && tar czf $TMP/freepbxmodules.tar.gz modules )
( cd /var/lib/asterisk && tar czf $TMP/moh.tar.gz moh* )
( cd /var/lib/asterisk/sounds && tar czf $TMP/snd_custom.tar.gz custom)

# sauvegarde mysql
mysqldump -u $SQLUSER --password=$SQLPASS asterisk > $TMP/asterisk.sql

# sauvegarde astdb
php /usr/local/scripts/bascule/dumpastdb_pra.php


( cd $TMP && scp astdb.dump asterisk.sql freepbxmodules.tar.gz astconfig.tar.gz moh.tar.gz snd_custom.tar.gz $DESTDISTANT )



import sur le secours



# importe dans la conf asterisk les données de prod, mais désative les trunks
export PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin


SQLUSER=asteriskuser
SQLPASS=xxxxx

DATADIR=/home/transfert_data

# import des fichiers de conf
tar zxpf $DATADIR/astconfig.tar.gz -C /etc
tar zxpf $DATADIR/freepbxmodules.tar.gz -C /var/www/html/admin/
tar zxpf $DATADIR/moh.tar.gz -C /var/lib/asterisk
tar zxpf $DATADIR/snd_custom.tar.gz -C /var/lib/asterisk/sounds


# import astdb
/usr/local/scripts/bascule/restore_prodastdb.php


# converti les comptes des trunks en change login mot de passe
#axialys
sed -i 's/username_trunk1/username_trunk2/g' $DATADIR/asterisk.sql
sed -i 's/pass_trunk1/pass_trunk2/g' $DATADIR/asterisk.sql

# importbase mysql
mysql -u $SQLUSER --password=$SQLPASS asterisk < $DATADIR/asterisk.sql


# relance asterisk
amportal a reload

capsiz
23/06/2016, 13h01
Désolé pour le retard. Merci à vous
Je vais suivre vos pistes et voir ce que çà va donner.
Merci Tanguyd pour l'exemple.