Home > Asterisk > PBX-IN-A-FLASH Redundancy

PBX-IN-A-FLASH Redundancy

There are several ways to go about creating a redundant PIAF setup.  I am fortunate enough to have access to a MySQL cluster so I am taking advantage of it. You can also use MySQL replication between two PIAF boxes. That is a topic for another post.

This post is geared towards those already familiar with Linux. When I have more time I may create step by step instructions for those that aren’t so familiar with Linux.

Solution:

1. Export the local DB called ‘asterisk’ to a file on PIAF server a

2. Import the file containing the SQL for the ‘asterisk’ DB to the MySQL cluster.

3. Modify necesarry variables in  /etc/amportal.conf on server a to point to the MySQL cluster.

4. Restart amportal to ensure MySQL access is working as expected.

5. Enable SSH key based authentication between server a and server b and drop the keys in /root/cron

6. Copy the following two scripts to /root/cron on server b

update_host.sh
# cat rsync_script
#!/usr/bin/sh

echo "Starting /var/lib/asterisk"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/var/lib/asterisk/ /var/lib/asterisk/
echo "Finished /var/lib/asterisk"
echo ""

echo "Starting /usr/local/apache/passwd/wwwpasswd"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/usr/local/apache/passwd/wwwpasswd /usr/local/apache/passwd/wwwpasswd
echo "Finished /usr/local/apache/passwd/wwwpasswd"
echo ""

echo "Starting /etc/asterisk/"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/etc/asterisk/ /etc/asterisk/
echo "Finished /etc/asterisk/"
echo ""

echo "Starting /var/www"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/var/www/ /var/www/
echo "Finished /var/www"
echo ""

echo "Starting /usr/lib/asterisk"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/usr/lib/asterisk/ /usr/lib/asterisk/
echo "Finished /usr/lib/asterisk"
echo ""

echo "Starting /etc/amportal.conf"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/etc/amportal.conf /etc/amportal.conf
echo "Finished /etc/amportal.conf"
echo ""

echo "Reloading Asterisk configs from MySQL"
/var/lib/asterisk/bin/module_admin reload
echo "Reload Successful"
echo ""

echo "Starting removal of SIP registrations"
rm /etc/asterisk/sip_registrations.conf
echo "sip_registrations.conf removed"
echo ""

echo "Reloading Asterisk"
/usr/sbin/asterisk -rx reload
echo "Reload Successful"
echo ""
promote_primary.sh
# cat rsync_script
#!/usr/bin/sh

echo "Starting /var/lib/asterisk"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/var/lib/asterisk/ /var/lib/asterisk/
echo "Finished /var/lib/asterisk"
echo ""

echo "Starting /usr/local/apache/passwd/wwwpasswd"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/usr/local/apache/passwd/wwwpasswd /usr/local/apache/passwd/wwwpasswd
echo "Finished /usr/local/apache/passwd/wwwpasswd"
echo ""

echo "Starting /etc/asterisk/"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/etc/asterisk/ /etc/asterisk/
echo "Finished /etc/asterisk/"
echo ""

echo "Starting /var/www"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/var/www/ /var/www/
echo "Finished /var/www"
echo ""

echo "Starting /usr/lib/asterisk"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/usr/lib/asterisk/ /usr/lib/asterisk/
echo "Finished /usr/lib/asterisk"
echo ""

echo "Starting /etc/amportal.conf"
/usr/bin/rsync -a -e "ssh -i /root/cron/asterisk2-rsync-key" \
root@servera:/etc/amportal.conf /etc/amportal.conf
echo "Finished /etc/amportal.conf"
echo ""

echo "Reloading Asterisk configs from MySQL"
/var/lib/asterisk/bin/module_admin reload
echo "Reload Successful"
echo ""

7. Run update_host.sh on serverb This copies the configs from server a to server b minus the sip registrations

8. If you want to promote server b to primary (registering to SIP providers for inbound calls) run promote_primary.sh

  1. No comments yet.
  1. No trackbacks yet.