High Availability for FreeSWITCH

Clustering designed specifically for telephony




Built for Power and Efficency

  • Created in C++ for low resource consumption, fast detection, and rapid failover

  • Runs as a background service on each node to optimize detection of failures

  • 28 built-in sensors plus unlimited user created sensors (compatible with any programming / scripting language)

  • Event handler system creates hooks to interact with any user defined program/script

  • Proprietary delta and compression system synchronizes data efficiently across long distances

Major Modules

The sensor engine is responsible for monitoring the health of the local computer (called a “node”), polling various interfaces/subsystems to determine if the local node has degraded to a level requiring further action or failover. The state of the local node is tracked as a health score which rises as health degrades. When the score reaches the critical level the administrator is notified and selected actions can automatically take place. When the score reaches the failure level control is automatically transferred to the standby node.

The synchronization engine is responsible for replicating changes in files, directories, tables, and databases from the active node to the standby node. The synchronization engine initiates synchronization at specified intervals, and allows for modification of synchronized data once delivered to the standby node (replacing portions of files or fields in a database). Synchronization always takes place from the active to the standby node, and only while the active node’s health score is non-critical.

The peer link is responsible for all communication between nodes, including heartbeat, coordinating failover, sending messages, tracking remote sensors, etc. If the peer link goes offline for any reason then the surviving node assumes the other node has failed and attempts to take over operations as the new active node.   The peer link is used in node negotiations (determining which node should take over), exchanging of sensor data, etc.

The cluster controller is responsible for starting and stopping FreeSWITCH on the local peer, and interacting with the sensor engine, the synchronization engine, and the peer link modules. The cluster controller also performs pre/post FreeSWITCH start/stop activities, allowing for considerable customization and flexibility in FreeSWITCH operations.