Asterisk can easily handle triple the amount of calls you mentioned with the right resources (at least from what I saw in my experience)
The only time we had Asterisk crashing [on a server that had enough resources] was when a client argued that they need full access to develop ARI/AMI apps and refused to have our team review the applications before deploying, and as you can imagine, Asterisk crashed, a couple of times, everyone was mad…
I would still encourage you to setup a warm spare, because there are scenarios where for some reason there’s an issue on the PBX which drains all the resources and is not necessarily related to Asterisk, but it can cause channels to hang or act weird.
In such a cases, you’d want to run
core stop gracefully which will result all new calls to resume on the warm spare but not kill active calls, investigate the issue properly without interrupting any calls, and then start Asterisk again when the issue is resolved.
We have clients who their primary server is on site and works just fine, but there is that one outage which lasts for a few hours that happens to everyone, and then is when the warm spare pays off 100%
So back to your question, if you watched Astricon, there was a nice talk from Jöran Vinzens on that specific issue, how they built a call controller with ARI to handle calls on multiple servers.
When load balancing, both servers need to know the entire time the device/extension state, so it can properly route calls when call waiting is enabled/disabled, maintain the queue order, priority and ring strategy. Etc etc etc.
AFAIK with PJSIP, there’s some functionality to publish a channel and device state and maybe some other stuff.
See references: https://wiki.asterisk.org/wiki/display/AST/Asterisk+16+Configuration_res_pjsip_publish_asterisk
I am not sure tho if it’s doable with PJSIP publish. The other way to do it, is by having a fourth and fifth server, one used for ARI which will be the call controller, and one as an ARI proxy
So to answer your question, something like this doesn’t exist out of the box and will require a lot of work to build something like this.
At AstriDevCon we touched a bit the point of interest in Media/Channel recovery/failover which exists in FreeSWITCH and is doable with Asterisk.
If I understand correctly: the way it works is, that both servers know of the the channel states, RTP streams and probably more info at all times and once the primary dies the secondary recovers it by re-invinting the channels and media.
So if/once that functionality is built into Asterisk by default, you’d probably be able to make use of these tools to have a load balancing setup syncing the necessary information so it can route calls properly.
I hope that helps a bit.