I have some questions about building a geo-redundant/decentralized/no-SPOF solution around current FreePBX releases.
I know a common “quick and dirty” way to provide a trivial level of redundancy to FreePBX is to setup a standby server and use the backup/restore ability to replicate the system over SSH. I also know the FreePBX HA module exists, using DRDB/heatbeat, however this seems aimed at single facility LAN redundancy and doesn’t really work when geographically dispersed.
What I was thinking, couldn’t FreePBX be built using multi master database replication and DNS-SRV to provide a decentralized and redundant solution? Perhaps this would require Asterisk Realtime Architecture (ARA) be setup as well, which I’m not sure if that would be an issue setting up with current releases of FreePBX. I know ARA took quite some strides in recent Asterisk releases.
My understanding is that currently FreePBX uses MySQL to store configuration changes made to the system. When a user applies those changes they are written out into the relevant configuration files and an Asterisk Reload is initiated. So default FreePBX isn’t realtime. In other words, while FreePBX stores configurations in a database, it doesn’t read the configuration from the database in realtime. I assume the way other Asterisk based systems do this is through ARA as I’ve not read another way.
So my question is can FreePBX be setup with ARA+DNS-SRV and have my MySQL database do multi master replication to build a geo-redundant HA system? Would anything else need to be added to the software stack? Would this handle a situation where a server went out with active calls and move those calls to the other servers (my gut says no)? Has anyone built something like this and want to share?