FreePBX as geo-decentralized/redundant solution? (ARA+DNS-SRV+ DB replication)

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?

Glusterfs supports geo-replication,

so technically a FreePBX that exists on that file system would be relatively robust, Gluster is also intrinsically “multi master” but I think that you would need a solid BGP solution to ensure failover at the network level , the active calls are not transferable because asterisk is a Back to back user agent, you might want to look at subjugating all calls through a real SIP proxy ( I use Kamailio) but in my efforts, mostly current calls to a geo-replicated Asterisk will fail temporarily, call backs however work. But you will need corosync locally and BGP remotely to maintain the network path and stop/start the failed/new FreePBX servers

The only “ARA” based asterisk frontend PBX i know of is XIVO