{"id":531,"date":"2017-05-12T04:46:36","date_gmt":"2017-05-12T02:46:36","guid":{"rendered":"http:\/\/itsimple.info\/?p=531"},"modified":"2017-05-12T04:47:57","modified_gmt":"2017-05-12T02:47:57","slug":"upgrade-2012-r2-cluster-to-2016-using-cluster-os-rolling-upgrade","status":"publish","type":"post","link":"https:\/\/itsimple.info\/?p=531","title":{"rendered":"Upgrade 2012 R2 Cluster to 2016 using Cluster OS Rolling Upgrade"},"content":{"rendered":"<h1 class=\"entry-title\">Upgrade 2012 R2 Cluster to 2016 using Cluster OS Rolling Upgrade<\/h1>\n<h6>mirrored from : http:\/\/www.altaro.com\/hyper-v\/upgrade-2012-r2-cluster-2016-using-cluster-os-rolling-upgrade\/<\/h6>\n<p>Starting with Windows Server 2016 we get a new, nice feature which makes the cluster upgrade job a lot easier and cheap. And to be honest, it was about time. In previous server versions if we wanted to upgrade a Windows cluster we had to build a new one with at least one host in it, then migrate the virtual machines, reinstall the old hosts with the new OS then attach the hosts to the new cluster. With server 2016 it\u2019s a little bit easier but we still have some work to do, like re-configuring networks, Hyper-V settings, storage, etc. At least we don\u2019t need to get downtime for our virtual machines and don\u2019t need extra hardware.<\/p>\n<p>Now that I\u2019ve mentioned all the goods, it\u2019s time for the bad ones also, which are actually just one: we need to have at least Windows server 2012 R2 running in the current cluster. This means that if our Hyper-V cluster is running 2008R2 or 2012 for that matter, we will need to <a href=\"http:\/\/www.vkernel.ro\/blog\/migrating-a-hyper-v-cluster-to-windows-server-2012-r2\" target=\"_blank\" rel=\"external nofollow\">use the old method to upgrade the cluster<\/a>. To make it even easier, I have copied a nice upgrade process workflow <a href=\"https:\/\/technet.microsoft.com\/en-us\/windows-server-docs\/failover-clustering\/cluster-operating-system-rolling-upgrade\" target=\"_blank\" rel=\"external nofollow\">from Technet<\/a> which shows the steps that need to be followed in order for the upgrade to be successful. Before we move forward make sure you have sufficient capacity on the cluster to maintain the workload since the upgrade requires removing one node at a time from the cluster. Also, make sure that the running Hyper-V nodes are compatible with server 2016, or Microsoft support will hung up on you.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10595 size-full\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_01.png\" sizes=\"auto, (max-width: 660px) 100vw, 660px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_01.png 660w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_01-207x300.png 207w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_01\" width=\"660\" height=\"957\" \/><\/p>\n<h2>Stopping Cluster Aware Updating and backing up data<\/h2>\n<p>The first task is to backup the cluster database and the workload data. Now I\u2019m not going to show this here since it\u2019s out of the scope of the article, but all you have to do is backup the system state of your Hyper-V servers, then the virtual machines that are running on them using your <a href=\"http:\/\/www.altaro.com\/hyper-v-backup\/\">favorite backup software<\/a>. The next step will be to check if Cluster Aware Updating (CAU) is running or not. If it\u2019s running, it needs to be stopped, so the cluster nodes are not paused, drain, or rebooted by this service. From the <strong>Administrative Tools<\/strong> menu click the<strong> Cluster-Aware Updating<\/strong> icon and take a look if there are servers in pending or updating state. If they are click the <strong>Cancel Updating Run<\/strong> option to stop the process.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10596 size-full\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_02.png\" sizes=\"auto, (max-width: 982px) 100vw, 982px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_02.png 982w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_02-300x174.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_02-768x444.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_02\" width=\"982\" height=\"568\" \/><\/p>\n<p>PowerShell can also be used to check this, if you are a PowerShell savvy. The command needs to be executed from one of the cluster nodes, else the <strong>-ClusterName<\/strong> parameter needs to be specified followed by the cluster name.<\/p>\n<div id=\"crayon-59153f660207a463367761\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Get-CauRun<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f660207a463367761-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f660207a463367761-1\" class=\"crayon-line\"><span class=\"crayon-r \">Get-CauRun<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10597\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_03.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_03.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_03-300x157.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_03-768x403.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_03\" width=\"877\" height=\"460\" \/><\/p>\n<p>If CAU is running on the cluster, it needs to be stopped first, then continue with the upgrade. Again, if you are doing this from a remote station, you need to add the <strong>-ClusterName<\/strong> parameter followed by the cluster name.<\/p>\n<div id=\"crayon-59153f6602088681655856\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Stop-CauRun<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f6602088681655856-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f6602088681655856-1\" class=\"crayon-line\"><span class=\"crayon-r \">Stop-CauRun<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10598\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_04.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_04.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_04-300x109.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_04-768x280.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_04\" width=\"877\" height=\"320\" \/><\/p>\n<h2>Removing Hyper-V nodes from the cluster<\/h2>\n<p>Now open the <strong>Failover Cluster Manager<\/strong>, go to the <strong>Nodes<\/strong> menu, right-click one of the nodes and choose <strong>Pause &gt; Drain Roles<\/strong>. During the draining operation all the virtual machines that are sitting on the node(s) will be migrated to other nodes in the cluster. Depending on how many and how big the virtual machines are, the operation can take a while or it can be done in several minutes. When it\u2019s done, the host will have a <strong>Paused<\/strong> status.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10599\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_05.png\" sizes=\"auto, (max-width: 1088px) 100vw, 1088px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_05.png 1088w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_05-300x192.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_05-768x493.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_05-1024x657.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_05\" width=\"1088\" height=\"698\" \/><\/p>\n<p>You can pause more than one node, but it all depends how many resources will be left in the cluster. If you know for sure that all your virtual machines will run smoothly with just two or three nodes online, then go ahead and pause the rest of them. This way the upgrade will be faster since you can install server 2016 on more that one server at once.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-10600 size-full\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_06.png\" sizes=\"auto, (max-width: 1101px) 100vw, 1101px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_06.png 1101w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_06-300x192.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_06-768x492.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_06-1024x656.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_06\" width=\"1101\" height=\"705\" \/><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10601\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_07.png\" sizes=\"auto, (max-width: 1103px) 100vw, 1103px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_07.png 1103w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_07-300x193.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_07-768x493.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_07-1024x657.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_07\" width=\"1103\" height=\"708\" \/><\/p>\n<p>The next step will be to remove or evict the node from the cluster. For this, right-click it, and choose <strong>More Actions &gt; Evict<\/strong>. Answer <strong>Yes<\/strong> on the warning that pops-up.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10603\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_09.png\" sizes=\"auto, (max-width: 1103px) 100vw, 1103px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_09.png 1103w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_09-300x193.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_09-768x493.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_09-1024x657.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_09\" width=\"1103\" height=\"708\" \/><\/p>\n<p>As before, we can use PowerShell to do all this. To drain the roles from a cluster node and put the node in a pause state, use the bellow PowerShell line. If the command it\u2019s executed remotely you will need to use the <strong>-Cluster<\/strong> option followed by the cluster name.<\/p>\n<div id=\"crayon-59153f6602091441172470\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Suspend-ClusterNode -Name &lt;node name&gt;<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f6602091441172470-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f6602091441172470-1\" class=\"crayon-line\"><span class=\"crayon-r \">Suspend-ClusterNode<\/span> <span class=\"crayon-cn\">-Name<\/span> <span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-e\">node <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-o\">&gt;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10602\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_08.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_08.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_08-300x64.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_08-768x163.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_08\" width=\"877\" height=\"186\" \/><\/p>\n<p>The last command is to evict the node from the cluster is:<\/p>\n<div id=\"crayon-59153f6602097665854397\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Remove-ClusterNode -Name &lt;node name&gt;<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f6602097665854397-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f6602097665854397-1\" class=\"crayon-line\"><span class=\"crayon-r \">Remove-ClusterNode<\/span> <span class=\"crayon-cn\">-Name<\/span> <span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-e\">node <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-o\">&gt;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10604\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_10.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_10.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_10-300x71.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_10-768x183.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_10\" width=\"877\" height=\"209\" \/><\/p>\n<h2>Install the Hyper-V role on the new server<\/h2>\n<p>Now we are ready to put server 2016 on the node that we evicted from the cluster; a fresh install, not an upgrade. After the install make sure you have all the drivers in-place, storage adapters, server it\u2019s patched and joined to the domain. Also, configure the storage and network adapters so you have good connectivity and see the LUNs. Install the <strong>Hyper-V<\/strong> and the <strong>Failover Cluster<\/strong> roles on the 2016 server using either the GUI or PowerShell.<\/p>\n<h3>Install the Hyper-V role using PowerShell<\/h3>\n<p>If you are using PowerShell remotely like I am here, you need to add the <strong>-ComputerName<\/strong> option followed by the remote computer name in the command line.<\/p>\n<div id=\"crayon-59153f660209e922023697\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Install-WindowsFeature -Name Failover-Clustering, RSAT-Clustering&lt;br \/&gt;&lt;br \/&gt;<br \/>\nInstall-WindowsFeature -Name Hyper-V, RSAT-Hyper-V-Tools -Restart<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f660209e922023697-1\">1<\/div>\n<div class=\"crayon-num crayon-striped-num\" data-line=\"crayon-59153f660209e922023697-2\">2<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f660209e922023697-1\" class=\"crayon-line\"><span class=\"crayon-r \">Install-WindowsFeature<\/span> <span class=\"crayon-cn\">-Name<\/span> <span class=\"crayon-r \">Failover-Clustering<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-r \">RSAT-Clustering<\/span><\/div>\n<div id=\"crayon-59153f660209e922023697-2\" class=\"crayon-line crayon-striped-line\"><span class=\"crayon-r \">Install-WindowsFeature<\/span> <span class=\"crayon-cn\">-Name<\/span> <span class=\"crayon-i\">Hyper<\/span><span class=\"crayon-cn\">-V<\/span><span class=\"crayon-sy\">,<\/span> <span class=\"crayon-r \">RSAT-Hyper<\/span><span class=\"crayon-cn\">-V<\/span><span class=\"crayon-cn\">-Tools<\/span> <span class=\"crayon-cn\">-Restart<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10617\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_11.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_11.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_11-300x93.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_11-768x239.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_11\" width=\"877\" height=\"273\" \/><\/p>\n<h3>Install the Hyper-V role using the GUI<\/h3>\n<p>For those that are using the GUI it\u2019s very easy. Open <strong>Server Manager<\/strong> and check the <strong>Hyper-V<\/strong> box from the <strong>Server Roles<\/strong> screen<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10618\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_12.png\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_12.png 800w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_12-300x213.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_12-768x544.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_12\" width=\"800\" height=\"567\" \/><\/p>\n<p>then from the <strong>Features<\/strong> screen check the box next to <strong>Failover Clustering<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10619\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_13.png\" sizes=\"auto, (max-width: 800px) 100vw, 800px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_13.png 800w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_13-300x213.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_13-768x544.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_13\" width=\"800\" height=\"567\" \/><\/p>\n<h2>Creating the Virtual Switches on the 2016 Hyper-V server<\/h2>\n<p>Since we\u2019ve lost everything during the fresh install, we need to create back the Virtual Switches for our Hyper-V server. They need to be named exactly as before, and they need to be connected to the exact same network adapters. If by mistake you attach a Virtual Switch to a different network adapter, traffic will not go in the right direction and you will have problems configure this box in the cluster, later on.<\/p>\n<p>Connect to the Hyper-V server using the <strong>Hyper-V Manager<\/strong> console, and from the <strong>Actions<\/strong> pane click the <strong>Virtual Switch Manager<\/strong> link.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10620\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_14.png\" sizes=\"auto, (max-width: 1036px) 100vw, 1036px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_14.png 1036w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_14-300x189.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_14-768x483.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_14-1024x644.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_14\" width=\"1036\" height=\"652\" \/><\/p>\n<p>In the window that pops-up create your switches as before by clicking the <strong>Create Virtual Switch<\/strong> button.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10621\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_15.png\" sizes=\"auto, (max-width: 736px) 100vw, 736px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_15.png 736w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_15-300x283.png 300w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_15\" width=\"736\" height=\"694\" \/><\/p>\n<h2>Joining the 2016 Hyper-V server to the cluster<\/h2>\n<p>Now that all our connections and configurations are done and verify on our 2016 Hyper-V server it\u2019s time to add this box back in the cluster.<\/p>\n<h3>Add a node to the cluster using the GUI<\/h3>\n<p>Open the <strong>Failover Cluster Manager<\/strong> and connect to the cluster. Once connected, right-click the <strong>Nodes<\/strong> folder and choose <strong>Add Node<\/strong>.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10622\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_16.png\" sizes=\"auto, (max-width: 663px) 100vw, 663px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_16.png 663w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_16-300x168.png 300w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_16\" width=\"663\" height=\"371\" \/><\/p>\n<p>Type the server name in the box then click the <strong>Add<\/strong> button. Once the server is verified click <strong>Next<\/strong> and finish the wizard using the defaults.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10623\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_17.png\" sizes=\"auto, (max-width: 683px) 100vw, 683px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_17.png 683w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_17-300x206.png 300w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_17\" width=\"683\" height=\"470\" \/><\/p>\n<p>In a few minutes we should have our 2016 server running inside a 2012 R2 cluster.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10627\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_21.png\" sizes=\"auto, (max-width: 1015px) 100vw, 1015px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_21.png 1015w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_21-300x192.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_21-768x490.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_21\" width=\"1015\" height=\"648\" \/><\/p>\n<h3>Add a node to the cluster using PowerShell<\/h3>\n<p>We can also join the node to the cluster by using the bellow PowerShell command. If you are doing this remotely, this time you don\u2019t have to put any special parameter, just the ones you see here.<\/p>\n<div id=\"crayon-59153f66020a6397684052\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Add-ClusterNode -Name &lt;node name&gt; -Cluster &lt;cluster name&gt;<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f66020a6397684052-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f66020a6397684052-1\" class=\"crayon-line\"><span class=\"crayon-r \">Add-ClusterNode<\/span> <span class=\"crayon-cn\">-Name<\/span> <span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-e\">node <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-o\">&gt;<\/span> <span class=\"crayon-cn\">-Cluster<\/span> <span class=\"crayon-o\">&lt;<\/span><span class=\"crayon-e\">cluster <\/span><span class=\"crayon-i\">name<\/span><span class=\"crayon-o\">&gt;<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10647\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_22.png\" sizes=\"auto, (max-width: 877px) 100vw, 877px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_22.png 877w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_22-300x87.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_22-768x222.png 768w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_22\" width=\"877\" height=\"253\" \/><\/p>\n<p>Now if we try to connect to the cluster from a 2012 R2 server we might get the an error message:<\/p>\n<p><em>The cluster to which you are attempting to connect is not a version of the cluster supported by this version of <strong>Failover Cluster Manager<\/strong>.<\/em><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10648\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_23.png\" sizes=\"auto, (max-width: 516px) 100vw, 516px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_23.png 516w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_23-300x99.png 300w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_23\" width=\"516\" height=\"171\" \/><\/p>\n<p>To be honest, I wasn\u2019t expecting this since the cluster is running in mixed mode. What this means for us is that from now on we need to connect to the cluster from our 2016 Hyper-V node, in order to manage it. You can go ahead and migrate some of the workloads to the new node.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10649\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_24.png\" sizes=\"auto, (max-width: 1091px) 100vw, 1091px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_24.png 1091w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_24-300x186.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_24-768x476.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_24-1024x634.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_24\" width=\"1091\" height=\"676\" \/><\/p>\n<h2>Upgrading the rest of the nodes to server 2016<\/h2>\n<p>It\u2019s time to take care of the rest of the nodes in the cluster. Redo the steps I mentioned above for the rest of the servers until all of them are running server 2016 and are joined to the cluster. This should happen with no downtime for the virtual machines or for the users to notice something. In the end we should have a nice and healthy cluster running the latest operating system.<\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10652\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_25.png\" sizes=\"auto, (max-width: 1093px) 100vw, 1093px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_25.png 1093w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_25-300x186.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_25-768x476.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_25-1024x635.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_25\" width=\"1093\" height=\"678\" \/><\/p>\n<h2>Updating the cluster functional level<\/h2>\n<p>Right now our cluster runs in mixed mode, which is a compatibility feature just so we as administrators be able to do the transition from server 2012 R2 to 2016 without downtime. It is not meant to run forever this way. As soon as all the nodes in the cluster are upgraded to server 2016 the cluster functional level needs to be updated also. Once this is done, there is not turning back, we can\u2019t add 2012 R2 nodes to this cluster anymore. Before updating the cluster functional level, make sure all the nodes in the cluster are up and running. If you are good-to-go, open a PowerShell window and run the bellow command:<\/p>\n<div id=\"crayon-59153f66020ae100069801\" class=\"crayon-syntax crayon-theme-classic crayon-font-monaco crayon-os-pc print-yes notranslate\" data-settings=\" minimize scroll-mouseover\">\n<div class=\"crayon-plain-wrap\"><textarea class=\"crayon-plain print-no\" readonly=\"readonly\" wrap=\"soft\" data-settings=\"dblclick\">Update-ClusterFunctionalLevel<\/textarea><\/div>\n<div class=\"crayon-main\">\n<table class=\"crayon-table\">\n<tbody>\n<tr class=\"crayon-row\">\n<td class=\"crayon-nums \" data-settings=\"show\">\n<div class=\"crayon-nums-content\">\n<div class=\"crayon-num\" data-line=\"crayon-59153f66020ae100069801-1\">1<\/div>\n<\/div>\n<\/td>\n<td class=\"crayon-code\">\n<div class=\"crayon-pre\">\n<div id=\"crayon-59153f66020ae100069801-1\" class=\"crayon-line\"><span class=\"crayon-r \">Update-ClusterFunctionalLevel<\/span><\/div>\n<\/div>\n<\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<\/div>\n<\/div>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter size-full wp-image-10653\" src=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_26.png\" sizes=\"auto, (max-width: 1221px) 100vw, 1221px\" srcset=\"http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_26.png 1221w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_26-300x105.png 300w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_26-768x269.png 768w, http:\/\/www.altaro.com\/hyper-v\/wp-content\/uploads\/2016\/09\/Upgrading-server-2012R2-cluster-to-server-2016_26-1024x358.png 1024w\" alt=\"upgrading-server-2012r2-cluster-to-server-2016_26\" width=\"1221\" height=\"427\" \/><\/p>\n<h2>Summary<\/h2>\n<p>As you can see this feature is great and it helps a lot in our workloads, but it still needs a little bit of polishing. It has some limitations in the sense that only 2012 R2 clusters can be in-place upgraded but I guess this is the Microsoft way of pushing clients to use the latest OSs. Go ahead and test it, implement it and if you have any questions feel free to use the comments area.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Upgrade 2012 R2 Cluster to 2016 using Cluster OS Rolling Upgrade mirrored from : http:\/\/www.altaro.com\/hyper-v\/upgrade-2012-r2-cluster-2016-using-cluster-os-rolling-upgrade\/ Starting with Windows Server 2016 we get a new, nice feature which makes the cluster upgrade job a lot easier and cheap. And to be honest, it was about time. In previous server versions if we wanted to upgrade a [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[20,18],"tags":[],"class_list":["post-531","post","type-post","status-publish","format-standard","hentry","category-hyper-v","category-virtualization"],"_links":{"self":[{"href":"https:\/\/itsimple.info\/index.php?rest_route=\/wp\/v2\/posts\/531","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/itsimple.info\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/itsimple.info\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/itsimple.info\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/itsimple.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=531"}],"version-history":[{"count":0,"href":"https:\/\/itsimple.info\/index.php?rest_route=\/wp\/v2\/posts\/531\/revisions"}],"wp:attachment":[{"href":"https:\/\/itsimple.info\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=531"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/itsimple.info\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=531"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/itsimple.info\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=531"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}