We have a healthcare company with 30 offices and up to 500 users. We have been asked to offer a proposal for a VOIP solution.
To date the largest deployment I installed and manage is 120 phones on a single site, which rarely has any issues and runs well.
Im thinking to host a single PBX in the main office with redundant internet, and the branch offices VPN to the main office and phones connect to the LAN IP of the PBX over VPN.
My questions would be:
Has anyone done a setup of this size?
What would be a recommended setup?
Should I host it in the cloud, ie Vultr? - what spec server?
Or should I host as a local VMware server as a VM with replication?
How many phones can comfortably run on a single Asterisk PBX?
Am I crazy to try and support 500 users? [image]
Thanks for any advice or recommendations offered here!
It really depends what they are doing on the PBX. Concurrent calls, Queues, BLFs are the main factors.
For example, a queue that has a ringall strategy with 20 agents and you have another 40 different endpoints that monitor each of these 20 extensions, a single incoming queue call will show a notable difference when you monitor CPU/RAM as asterisk will send 20 INVITEs and 800 NOTIFYs in less then a second. I’m kinda exaggerating here, since I have never seen a scenario where 40 endpoints were subscribed to monitor the same extension… I just want you to get the idea of what I am referring to.
With the right amount of hardware resources you can host 500+ endpoints, but again, it boils down to the actual operations done on the PBX.
With that being said, since this healthcare company has 30 offices, I doubt that they are all in the same geographical area. So I would split the setup to two PBXs in different regions and set up an intra company trunk between them. PBX1 would have extensions 100-399, PBX2 would have extensions 400-799 that way you can easily configure your routes between the PBXs without causing a loop.
The cool thing is, that with PJSIP, you can have BLF monitoring an extension on the remote PBX.
There are a couple of ways you can design the trunks. However, extension to extension calls should always be routed through the IntraCompany Trunk.
Get a single Trunk and point it to PBX1, then route the calls that need to be on PBX2, either though the IntraCompany Trunk or another Trunk dedicated for “external calls”. With PJSIP you can have multiple Trunks between the same set of PBXs as you an specify different listening ports. The reason why you would want to have different Trunks, is because IntraCompany Trunks are usually configured to use the from-internal context VS standard incoming calls use the from-pstn context.
If you want to use a super advanced route. Here’s what I would do:
Set up the entire PBX on PBX1, then configure PBX2 to replicate using warm spare backup.
In EPM, for extensions 100-399 set the primary SIP server as PBX1 and the secondary as PBX2. For extensions 400-799 PBX2 as the primary and PBX1 as the secondary.
Write a custom dialplan, probably in the predial hook, to check if the device is online, if not, try to reach the device via the IntraCompany route. And obviously implement some loop detection process.
Setup the trunks with the above mentioned option 2 (or option 1 if you carrier allows you to do the following). Set the DIDs for PBX1 to use PBX1 and fail over to PBX2 and same for the DIDs for PBX2 to fail over to PBX1.
This way, you have them split between both PBXs AND if one of them dies, the other one will now have all extensions registered and process calls normally.
This is a perfect scenario for cloud hosting. I would first try to negotiate a favorable contract with a good hosting company. I would come armed with call records so they can determine their risk as far as origination and termination charges, etc. Try to stay away from the unlimited per extension packages and go for the measured service type of arrangement.
If you are not satisfied with the results, then I would stand up some sort of redundant server at a data center. I do like the way PitzKey thinks. Maybe one of these arrangements would work for you from “the cloud”. If you go this route it might be good to have 2 or 3 providers over SIP trunks for two reasons. You can have failover dial plan, and you get to experience different companies and their services. This will be invaluable if things were to change.
FusionPBX can do this easily and at scale much better than FreePBX. At that size, you can afford the memberships and still turn a great profit.
It was quite a learning curve for me but well worth it.