Cluster Design

The basic design criteria for the DjangoPBX Cluster is to tackle the issue of horizontal scalability whilst providing an adequate degree of resilience or redundancy.

Customer data and configuration should be stored in one place. This is not one physical place, but as one single point of truth, not spread across many seemingly unconnected soft switches.

Clearly, one FreeSWITCH cannot handle an infinite number of endpoints no matter how many additional SIP Profiles are created. So the solution needs to allow for multiple FreeSWITCHes and to allow more to be added if required.

There needs to be a method of collecting information from multiple FreeSWITCHes and also a method of controlling them all collectively or individually.

Files created by the customer, or created as a result of running the service, need to be handled and stored safely. This includes files for voicemails, announcement messages and call recordings. These files should not be allowed to build up on a FreeSWITCH server or a DjangoPBX instance because that would make it difficult to swap out a server if required and, in any case, the FreeSWITCH and DjangoPBX servers should have a small disk footprint to allow quick re-deployment, and the size of these servers should NOT grow over time.