Call Us Today! 877.742.2583

Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.


by Andrew Cassidy

This page documents my personal experience with setting up an Active/Passive FreeSWITCH configuration on Debian Wheezy using only binary packages available from the official Debian and FreeSWTICH repositories, although this guide may help with other scenarios too.


titleClick here to expand Table of Contents

Table of Contents

Required Packages

First, set up the FreeSWITCH Debian repository


Code Block
# apt-get update
# apt-get install pacemaker freeswitch-meta-default

Set Up You Core Database

I've used the same database for all modules, and have found the following minimal required configuration. So, in vars.xml add


Code Block
<param name="track-calls" value="true" />
<param name="odbc-dsn" value="$${odbc-dsn}"/>

Setting Corosync

The first thing you need to do is set up auth keys. On the first node run


and copy /etc/corosync/authkey to the second node.

Do everything from here on both nodes

Next set up /etc/corosync/corosync.conf. Mine looks like this, which as you may notice is rather similar to the default. In my setup I had to use the unicast transport due to a switch being funny about multicast.


Code Block
# /etc/init.d/corosync start

Setting up Pacemaker

We'll now set up pacemaker to manage FreeSWITCH and a virtual floating IP address, starting with the IP address.

Code Block
# crm configure primitive fsip ocf:heartbeat:IPaddr2 params ip="" cidr_netmask="24"


To monitor the status of FreeSWITCH we use a custom init script. Create /etc/init.d/fssofia on both nodes with the following content, filling in the PROFILES variable as needed.


Code Block
# crm configure primitive fs lsb:fssofia op monitor interval="1s" timeout="2s" enabled="true"

Setting Up The Colocation and Order

I didn't have any luck getting this to work with the resource groups that pacemaker provides. The IP failed over but the calls weren't picked up. So instead I set up a colocation rule and an order rule to make sure the failover machine has the IP address before calls are recovered.


While monitoring the cluster resources with

Code Block
# crm_mon -Ar


Of course, I didn't come up with all this all on my own :)