I need to move a few dozen FreePBXen with some commercial modules running in individual VMs to a new data center.

I’m trying to work out a plan to move the PBXes to the new data center in a way that will be transparent to the endpoints, or at the very least with the absolute minimum of downtime.

Some of the installations are rather old, and there’s a handful of peculiarities on each, so the typical FreePBX backup/restore process hasn’t gone smoothly, at least in our tests.

My current train of thought is to put a clone the VMs in the new data center and use Kamailio to route the SIP traffic to the new servers/IPs. I’ve never used it before, so I may be barking up the wrong tree, but it appears to do what I’m suggesting.

If so, I’m thinking I can install Kamailio on each VM, point it to the local asterisk/FreePBX initially, and clone the VM. Then, after the new instance is up and running, point Kamailio on the original VM to the cloned VM's asterisk, after which I can make appropriate DNS changes.

Another option would be to stand up a single Kamailio server and redirect SIP traffic destined for individual asterisk servers to it at the router.

Endpoints are mostly Yealink, and I’m not sure if they’ll feel the need to restart when the registration/SIP server’s IP changes, but a quick bounce when not in use isn’t the end of the world. I’d very much like to avoid having to send an update to each phone manually, but I can script a SIP NOTIFY if required.

Anything stupid, wrong, ignorant, or just smelly about this tactic?

Or, for that matter, any other suggestions?