If you want to simply upgrade your existing cluster from Server 2012 R2 to Server 2016, you just need to buy Server 2016 licenses and perform a “Server 2016 Rolling Upgrade”. What this does is to take one of your cluster nodes offline, then upgrade it to 2016, then bring that node online, move the VM’s to it and then it takes down the next node, updates it and now your cluster is happy.
However, the process to swap out old Server 2012 R2 clustered server hardware for new Server 2016 servers is slightly more complex… but not too hard:
HOW TO MIGRATE SERVER 2012R2 to SERVER 2016 NEW SERVERS – SHORT VERSION:
WARNING: If you are using a SAN do NOT connect the new servers to the existing disk until step 4 below or you may scramble the data on the SAN’s partitions.
- Get your new servers racked and patched on the the SAN and LAN networks
- Install HyperV and Failover Cluster Manager on all your new Server 2016’s boxes
- Using one of the old Server 2012 R2 cluster nodes, use Cluster Manager to add in each of the new Server 2016 nodes
- Connect the iSCSI connections to your SAN (if you have one)
- Move the VM’s or services to the new Server 2016 nodes then PAUSE and EVICT the old Server 2012 R2 nodes
- Use PowerShell to upgrade the cluster from Server 2012R2 to Server 2016
Update-ClusterFunctionalLevel
- Run Windows Update on any VM that has moved to Server 2016 to get the new Integration Services
- OPTIONAL (but I would): Upgrade VM ‘versions’ by shutting the all the VM’s down and running the following PowerShell command:
Update-VMVersion *
and then verify they are all at “8” using the command Get-VM * | Format-Table Name, Version
HOW TO MIGRATE SERVER 2012R2 to SERVER 2016 NEW SERVERS – FULL VERSION:
WARNING: If you are using a SAN do NOT connect the new servers to the existing disk until step 4 below or you may scramble the data on the SAN’s partitions.
- Rack your new servers, install the Server 2016, install whatever management software you need (i.e. Dell Server Administrator)
. - If you are using a SAN:
- Confirm that it does not need the Firmware to be upgraded. In my case the Dell EqualLogic PS4210 needed to be running at v8.1.13 to support Server 2016 iSCSI connections.
- On your new Server 2016 boxes, install whatever proprietary drivers are required (i.e. Dell EqualLogic HitKit) and cable one NIC to your SAN network and one to your network
.
- Set all of your active NIC’s to use static IP addresses
. - Add the HyperV server Role (via Server Manager > Manage (top right menu) > Add Roles & Features wizard)
. - Add the Failover Cluster Manager Feature (via Server Manager > Manage (top right menu) > Add Roles & Features wizard)
. - Patch patch patch – run Windows Update on all your old and new servers
. - Use Cluster Manager on one of the old Server 2012 R2 cluster nodes, to add in each of the new Server 2016 nodes being careful to uncheck (skip) the DISK tests in the Validation Wizard. Just right click on NODES > ADD NODE, run through the wizard but do not be too worried about errors indicating the OS’s do not match and the patch levels are not the same
. - Use Cluster Manager on one of the old Server 2012 R2 cluster nodes, right click on each VM or service and select MOVE > LIVE MIGRATION > SELECT NODE and select one of the new Server 2016 nodes. Depending upon how well your new server hardware matches your old server hardware, you may need to shut down the VM’s (and/or services) and perform an offline move.
. - After you have moved all the VM’s and services from the old Server 2012 R2 units, use Cluster Manager to PAUSE and then EVICT them from the cluster (NODES > right click on the old Server 2012R2 node and select MORE ACTIONS > EVICT)
. - Use the following PowerShell command to upgrade the cluster from Server 2012R2 mode to Server 2016 mode:
Update-ClusterFunctionalLevel
.
- On each VM in the cluster run Windows Update because that is where the “Integration Services” update for Server 2016 comes from. Integration services no longer comes from the ACTION MENU in HyperV
. - OPTIONAL (but I would): Upgrade VM ‘versions’ by shutting the all the VM’s down and running the following PowerShell command:
Update-VMVersion *
You can then check to make sure they are all at version 8 using the following PowerShell command:
Get-VM * | Format-Table Name, Version
Start the VM’s up and have a nice day. Note that you need to do this on each of the VM Hosts. If you do not upgrade the VM versions the Server 2016 cluster will function fine, but several little things (like Veeam backup, will not work). For more information on why you should do VM version upgrade see THIS short Microsoft Doc.
At this point your should:
- Use PowerShell to run
get-cluster | fl *
to ensure ClusterFunctionalLevel = 9 (9 = Server 2016, 8 = Server 2012R2) - Review Cluster Aware Updating
- Review your backups. If you are using Veeam for example, you will need to run some scripts on the cluster or Veeam will fail. See THIS page.
You might find some of these articles helpful if you are stuck: