Having a production system with “new technology” is always keen to give you some issues you didn’t know about earlier on.
Lately, due to the arrival of BizTalk Server 2016 and related support for Windows Server 2016 and SQL Server 2016, we’ve seen some things we did calculate for.
It seems the Failover Cluster Manager now has built-in support for automatic load balancing:
There is a great video for this by Elden Christensen on Channel9 I wanted to link here, which explains the concept pretty well.
In short: Every 30 minutes, the Failover Cluster Manager will evaluate if nodes within your cluster are not “overloaded”. Depending on the load (Memory pressure + CPU), it might decide to offload some of the roles in your cluster to other nodes designated as the owner of that role.
Conclusion
For VM’s this might be a good idea when there is no hardware support (think about vMotion for example), however for BizTalk 2016 within an Always-On configuration this might not be a good idea: there is always a certain down-time involved while relocating an availability group.
For business critical systems, as BizTalk is often, this behavior is most likely unwanted and may result in issues. Therefore I would recommend to disable this on an SQL Always-On cluster.