前面通过2003迁移到2008R2,2008R2迁移到2012R2,为大家介绍了传统群集角色以及虚拟机角色如何进行跨群集的迁移,在迁移过程中大家可以发现不论是2003到2008R2,或是2008R2到2012R2,我们都需要搭建两个群集,不论是单节点也好,多节点也好,最终我们是要群集对群集完成跨群集迁移,通过群集自带的跨群集迁移向导,我们可以通过很少的操作,完成应用的跨群集迁移,实现只有老群集离线,新群集上线时的宕机时间。
在WSFC2016开始,推出了滚动升级的功能,改变了以前的迁移思维,简单来说,我们现在可以在一个群集中就完成零宕机的迁移升级,不需要多个群集做跨群集迁移向导,我们可以直接把节点退出2012R2群集,重装成2016,再加入群集,群集现在实现了一种混合模式,可以允许群集中既有2012R2节点,也有2016节点,针对于虚拟机和SOFS资源,直接可以在群集内从2012R2节点迁移到2016节点上面,针对于虚拟机可以采取实时迁移的方式移动,移动完成后再重做节点,加入群集,最终节点都升级为2016,可以看到,这种方式很好,是一种颠覆性的思维,现在我们就在一个群集中就可以完成群集的升级,而且连离线上线的宕机时间也不需要有,不过可惜只支持Hyper-V和SOFS可以通过这种滚动升级的方式升级,其它群集角色仍需要通过跨群集迁移向导。
本文老王将为大家实作介绍Hyper-V滚动升级,并提出实务操作上需要注意的点
滚动升级中,涉及到第一个新概念,即ClusterFunctionalLevel,简单来说,可以把它理解为一种群集的功能,默认2012R2群集的FunctionalLevel是8,这有点类似于域里面林级别,域级别的概念,级别越高,功能越多,低级别没办法用到高级别的功能,因此,滚动升级的第一个阶段,所有节点都是2012R2,这时候群集FunctionLevel为8,享受8级别下所有群集功能,第二阶段当2016节点加入时,群集处于混合模式,这时FunctionLevel仍然会是8,因为还有节点未升级到2016,所以群集整体没办法完全使用2016群集的新功能,第三阶段,所有群集节点均已升级至2016,可以手动升级群集FunctionLevel为9,完全享受2016群集的新功能。
Technet滚动升级操作流程图
本次滚动升级环境如下
08dc&iscsi
lan:10.0.0.2 255.0.0.0
iscsi:30.0.0.2 255.0.0.0
12R2群集
HV01
MGMET:10.0.0.9 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.9 255.0.0.0
CLUS:18.0.0.9 255.0.0.0
HV02
MGMET:10.0.0.10 255.0.0.0 DNS 10.0.0.2
ISCSI:30.0.0.10 255.0.0.0
CLUS:18.0.0.10 255.0.0.0
这次我们将采用两节点就地升级的方式
当前12R2群集上面跑了三台虚拟机
生产环境开始执行滚动升级之前,建议应针对于群集数据库和群集应用进行备份,然后应检查群集当前是否正在运行群集感知更新CAU角色,如果正在运行,滚动升级过程中应该暂停该角色
使用 Get-CauRun命令查看当前群集是否运行CAU,如果未运行会得到如下警告,是正常的。
如果CAU正在运行,需要使用Stop-CauRun命令暂停它的运行
接下来我们需要进行滚动升级,首先从HV02节点开始,使用维护模式,实时排水出HV02上面所有负载
排水结束,HV02当前被置为暂停模式,所有虚拟机已经被迁移至HV01
确保节点已经排出干净角色后,点击节点,选中暂停模式节点,点击更多操作,选择逐出节点,确保我们干净的从群集中剔除了该节点。
现在HV02已经被剔除群集,我们最好将它直接退出域
关机插入2016映像,不要采用升级安装,而是直接采用干净安装的方式
配置网卡,修改机器名,重新加入域,这里老王还选择相同的机器名,您也可以重新规划16节点的命名
16节点加入域后,安装Hyper-V角色及故障转移群集功能
连接共享存储,确保和12R2节点可以看到同样的存储
配置Hyper-V虚拟交换机,确保和12R2节点一致,因为之后还要进行实时迁移
在16节点上面连接到群集
添加节点至现有12R2群集
当前群集已经处于混合模式运作,可以看到HV02节点系统为2016,HV01节点系统为2012R2
在16节点上面运行Get-Cluster | Select ClusterFunctionalLevel ,可以看到当前为8,即12R2群集的级别
当前我们已经来到了混合模式,在混合模式下运作群集时需要注意以下内容
- 混合模式下总是使用16节点去管理操作群集
- 混合模式不要运作太长时间,微软建议混合模式最多可维持四个星期
- 不要在16节点上面调整存储空间,否则故障转移到12R2节点时可能不兼容
- 混合模式下可选择回退,如果发现16节点不兼容现有应用,完全可以重做16节点回去12R2,可无宕机时间直接实时迁移。
截止到目前为止还未出现宕机时间,现在16节点已经加入,我们需要把虚拟机资源从12R2节点在线移动至16节点,这个操作需要在16节点上执行!
接下来按照相同步骤执行其它节点的升级操作
- 暂停节点,排出角色
- 逐出节点,退域
- 干净安装2016系统
- 修改计算机名,加入域,配置网络,安装Hyper-V,故障转移群集功能
- 配置虚拟交换机
- 加入群集
- 手动在线移动资源回来,或使用放置策略移动。
HV01也升级完成后,当前群集中是两台2016OS节点
但是此时运行Get-Cluster | Select ClusterFunctionalLevel查看发现群集级别依然是8
为什么呢,按照很多人的理解可能会以为既然群集节点现在都已经到2016了,群集功能级别应该自动会升级到最新的阿,但其实并没有,原因是这个操作,群集让我们自己来决定,更新群集功能级别很简单,但是一旦更新了之后,意味着群集内节点只能有2016,之后再有2012R2节点时没办法再加入到群集的,升级群集功能级别,意味着彻底切割滚动升级过程,意味着群集所有节点都已经升级到2016OS,您确信您的应用都可以很好的在16OS上面工作后,手动升级群集功能级别后,即可享受到完整的2016群集功能,升级群集功能级别是没有后悔药可以吃的,所以做这个决定一定要慎重,下一条命令很简单,但是下完之后群集就彻底切割为2016级别,无法回退,2012R2节点再也无法加入。
#升级群集功能级别
Update-ClusterFunctionalLevel
可以看到已经升级为2016群集功能级别,现在已经可以完全使用2016群集的新功能
如果之前有停用掉群集CAU功能,这时候可以再重新启动起来了
这里我们回过头来思考一下,为什么可以做到一个集群内的滚动升级,关键革新的技术有两个
1.16节点可以加入到现有12R2群集
2.虚拟机可以在线从12R2节点移动至16节点
第一点,老王认为核心的技术是混合模式群集,微软在16群集上面加入了向下兼容的机制,当我们试图把16节点加入到12R2群集时,16节点检测到,这个群集的群集功能级别是8,符合我的最低要求,我可以加入进去,在混合模式状态下,帮助它们逐步完成滚动升级,于是16节点可以加入12R2群集,这在以前跨大版本是不可能加入到群集的,因此老王认为滚动升级第一个要点即实现了混合模式,有这个前提才可以继续往后做。
第二点,虽然我们实现了混合模式,16节点可以加入到12R2群集,这时群集层面的事情,但我们完成滚动升级的关键是,虚拟机是可以直接从2012R2节点实时迁移至2016节点的,这就是Hyper-V层面的功能了,也就是说应用,要完成滚动升级,不光群集层面要支持混合模式,而且应用也要可以向下兼容,才能完成滚动升级,Hyper-V 2016设计为可以兼容2012R2,2012R2Hype-V不论是通过实时迁移,或者虚拟机导入导出的方式,都可以移动虚拟机至2016上面运行,由此大家可以看出,要完成滚动升级,还需要群集应用的配合,目前16只能向下兼容Hyper-V和SOFS角色,maybe日后会允许更多应用滚动升级
Hyper-V 2016里面我们可以手动控制虚拟机的配置级别,默认情况下,如果在之前的版本,虚拟机导入导出到更新的OS,或虚拟机就地升级,虚拟机的配置文件会随之自动更新至新版本,在2016这发生了改变,当我们从2012R2移动过来的虚拟机,或2012R2导入进来的虚拟机,默认情况下,并不会自动升级其虚拟机配置文件版本,即是说,虽然虚拟机在2016上面运行,但是虚拟机的配置级别还是2012R2的
这样有一个好处,即是说,我们又多了一个后悔药可以吃,默认情况下我们当前完成了滚动升级,群集功能级别已经升级至全新2016,2012R2节点不可以加入群集了,但是没关系,只要虚拟机配置级别没有升级,我们还是可以从16群集中,把未升级虚拟机配置级别的虚拟机再实时迁移回单机的Hyper-v2012R2上,这样一旦16群集上面虚拟机跑的不舒服,或者16群集出现问题,我们可以丢弃掉群集,再把虚拟机迁移回12R2单机节点上面运行。
如果我们选择升级虚拟机配置级别,那么首先你需要关机虚拟机,关机之后才能升级它的配置级别,升级之后,虚拟机才可以利用到Hyper-V 2016的完整功能,也会有新的配置文件格式,但是,一旦虚拟机配置被升级到16最新,你就再没有后悔药可吃,虚拟机配置升上去之后,再也不能迁回到12R2,这里一些公司可能虚拟机跑了一些关键应用,迁移新环境需要进行测试,老王建议,升级虚拟机配置这个步骤可以不着急,群集功能升级到最新后,可以观察个3-4周,确保虚拟机在16上面一切可以正常跑,又觉得16Hyper-v上面有自己需要的功能,这时候您可以选择在一个合适的时间点,关机升级虚拟机配置。
首先要关闭虚拟机
#升级虚拟机配置级别
Update-VMVersion -VMName
#检查节点虚拟机配置级别
Get-VM * | Format-Table Name, Version
#升级完成所有虚拟机
#开机所有虚拟机
可以看到,虚拟机的配置文件已经变成了VMCX VMRS格式,而非12R2时的xml
关于16 Hyper-V新功能介绍如下,如果升级至16则可以获得里面所说全部功能,感兴趣的朋友可以看下是否有需要的值得升级上去的功能
滚动升级探险秘籍
- 不支持使用share vhdx的Guest群集使用滚动升级
- SCVMM 2016可以和WSFC滚动升级功能配合,在VMM console触发执行滚动升级操作
- 滚动升级支持多台同时进行,例如你可以多个人一起重装群集节点,但只要规划好有足够的可用节点
- 16节点一定执行干净安装,不要执行升级安装!
- 混合模式下always使用16节点管理操作群集!
至此WSFC迁移篇结束,WSFC2016新功能介绍篇开始,老王计划从三个角度部署迁移,维护管理,排错优化分别讲起,希望不论是对于滚动升级不了解,或了解的朋友,看过老王这篇文章后都能带来新的思考和收获。