Multiple freepbx (v15) using one database

I’m using 2 FreePBX version 15 using one database server (3 servers overall). This is more on load balanced setup where users can log in to any of the FreePBX and make outbound calls / receive inbound calls.

The issue I am encountering is, whenever I create an extension to the first FreePBX, it does not take effect on the secondary FreePBX (agent cannot log in with Forbidden error), but it can log in to the first FreePBX. I need to do fwconsole reload on the secondary FreePBX in order for the extension to take effect and go online on the secondary FreePBX, BUT, after doing the fwconsole command, the public IP of the primary FreePBX is being copied to the secondary FreePBX overwriting the network settings.

My question is, what would I need to do in order to just create the extension and save it to both the primary and secondary FreePBX without overwriting its network settings. Note that all other settings such as the creation of inbound route, call queues, outbound route, trunks, etc (other than the network settings) should take effect on both FreePBX since it is sharing one database.

Thanks in advance.

Advanced Recovery module?

I am not familiar with that, but my question is, does Advance Recovery can do load balancing?

How are you doing load balancing now? Because FreePBX has nothing for that. Advanced Recovery keeps two FreePBX boxes in sync with each other for failover.

I’ve not done Load Balancing yet on the FreePBX. Maybe there’s a module for that already?

As per my understanding, Advance recovery is Active - Passive right?

I need Active-Active

There is no module for load balancing. You would need to do that yourself with Kamailio or OpenSIPs.

Then you’re writing your own solution for this that includes your load balancing. Why would you want to load balance between the two servers? How much traffic are you going to be doing that it needs load balancing? These users aren’t expecting to use things like BLF or other features where having them living on two different servers is going to require workarounds to avoid things being broken or not working right?

I see thanks for the inputs. The reason is to prevent a single server from getting loaded. We have more control when it’s load-balanced.

Is this for a company PBX because this can be problematic. Or are you using this in a way not intended for?

Yes, this is the first time we’ll be setting this load balance as well if there is in FreePBX.

I don’t understand your last comment. It’s not coherent nor does it answer my question in anyway. Is FreePBX being used by a company as its PBX?

Yes, PBX

OK so this is a company PBX. How much traffic (calls) is this going to be actually handling. So far nothing has stood out that requires load balancing. You’re also not considering how you will track states between two systems when doing this, it seems.

We might be handling large traffic. For the status between the two systems, we will refer to the dashboard or other monitoring systems.

buying 2 crappy servers will FAR out-cost buying a single server that can handle your load properly.

Thanks, but we will be hosting it via cloud

depending on your host, same statement applies.

GCP/Kubernetes for example you’re basically paying for used cycles. whether the process happens on 1 host or 2, its not costing you much differently.

Define “large traffic” because large is subjective. As well, when I was referring to states I was talking about the device/MWI states. See if you have PBX A and B which are complete mirrors of themselves that means you have 100, 101, etc on both systems. Now when user 100 ends up on PBX A and user 101 ends up on PBX B you now have a problem of their states being out of sync. PBX A does not see 101 as an endpoint with a registered contact. It sees an endpoint with no contact. Any attempts by PBX A to send requests/notifies/updates to 101 will fail. The same goes for 100 on PBX B and when these two extensions try to call each other there will be problems. 100 on PBX A trying to call 101 will have PBX A looking locally for 101 and it will see 101 has no contacts and thus fail to send the call to 101. Meaning the call will end up in 101’s voicemail and then 101 will not get MWI notices because PBX A can’t send them.

This also begs the question of how you are handling your calls from the providers. Are those being load balanced too? How will 101 get a call if it lands on PBX A and 101 is registered on PBX B?

So how are you going to address phones being on two different PBX’s with the same configuration being able to call each other, transfer to each other, get MWI properly or deal with being in ring groups, etc? If you plan on using queues you’re going to make even more problems trying to make this work right.

Finally, how are you actually doing the load balancing? Because SIP load balancing can be done in numerous methods and if you aren’t careful you could end up sending each new request to different PBX systems and that will really cause some issues.

So far this seems like an over complicated solution when none is needed.

Not sure yet on the exact count maybe over 300 and counting. They have different public IPs. The agent should log only to one PBX at a time to prevent conflict. For example, agent A (ie. extension 100) registered to PBXA (ie. 10.10.10.1) so it will be 100@ 10.10.10.1.

For the inbound calls, the carrier or SBC will then look where the user is active either on PBX1 or PBX2 connects that particular call.

We can define the sip domain as either PBX1 or PBX2 in the user’s softphone. Manual load balancing is done on the users in the PBXs.