一提到云计算大家可能都会想到自助服务,弹性扩展,资源池,按需使用,随时随地网络访问这些概念,其中,对于云计算工程师来讲,实施一套云计算,首先要先做的就是资源池,确认那些资源应该是属于云的,然后把这些资源通过软件定义等抽象技术,抽象成为一个pool,这个pool最终对于云管理人员来说,会直接应用于上层弹性扩展的实现,对于用户来讲,用户在门户上面创建申请云资源,是不需要管申请到哪里的,因为背后都会通过资源池去负载均衡把资源分摊撒给不同的服务器,并实现很好的高可用灾备机制。
今天老王要讲的并不是云计算概念里面说的这种资源池,而是Hyper-V里面的一项功能,2012时代Hyper-V对于资源管理了两项新功能,分别是资源计量,可以将用户对于CPU,内存,硬盘,网络的使用进行记录,便于实现按需使用计费。
另一项则是资源池,Hyper-V2012时代开始,可以针对以下类型的资源进行创建资源池
Memory
Processor
Disks (VHD)
Ethernet
ISO
Virtual Fibber Channel Ports
Virtual Floppy Disk
其中被使用的比较多的分别是网络资源池,VHD资源池,ISO资源池,通过网络资源池,可以实现将Hyper-V宿主机上面多个虚拟交换机,接入到一个一个网络资源池,然后虚拟机接入的时候直接接入到网络资源池中,当其中一个虚拟交换机坏掉时候,虚拟机会直接切换使用另外一个虚拟交换机,如果两台Hyper-V创建了相同名字的网络资源池,他们就可以进行实施迁移操作,底层虚拟交换机名称可以不一样,但资源池名称可以不一样,但是资源池名称必须一致。
下面我们来进行实作
环境如下
12DC 80.0.0.1
HV01 80.0.0.2
HV01上面部署五块卡,一块卡做管理,两快卡不配置IP,一会创建虚拟交换机使用,另外两块ISCSI暂时不用管。
HV02 80.0.0.3
HV02上面部署五块卡,一块卡做管理,两快卡不配置IP,一会创建虚拟交换机使用,另外两块ISCSI暂时不用管。
由于这是个隐藏功能,所以在2012R2时代只能用powershell来进行实现,考验专业性的时候到了
首先运行之前先使用命令检测下是否有已经创建过的资源池,可以看到默认下面的Hyper-V资源都属于默认的根资源池,并不具备高可用性
我们先分别在两台机器创建相同名字的网络资源池
New-VMResourcePool –Name NetworkPool1 –ResourcePoolType Ethernet
接来下我们通过GUI界面创建虚拟交换机,可以看到,我故意让两个机器上面的虚拟交换机名称不一致
将两个虚拟交换机加入到创建好的资源池中
HV01
HV02
随意在HV01上面创建一个虚拟机,在设置网卡界面可以看到额外的资源池选项,我们可以选择连接到网络资源池,并自动连接虚拟交换机,当交换机1出现故障,自动切换至交换机2
刚才我们说过一旦创建了网络资源池,将虚拟交换机加入到池中,那么迁移时只需要双方资源池名称保持一致即可,接下来我们就来验证这一点
正在进行迁移···
迁移完成!从今以后再也不用Care虚拟交换机名称必须一致的问题了!
这时我们将HV01,HV02分别禁用一块网卡,模拟双方同时有一个虚拟交换机失效,看看是否还可以进行迁移
将虚拟机从HV02移回HV01
由此我们可以看出,使用资源池架构进行虚拟机迁移,并不会因为底层单个虚拟交换机或网卡的故障,而导致迁移的失败。
不过老王在这里更关心的问题是,如果一个正在运行的虚拟机,80多个GB,正在迁移过程中,这时候忽然两端掉了一个虚拟交换机,迁移过程是否会出现中断,由于手里环境有限,所以没有测试这一块,欢迎大家进行尝试,也可以和我一起探讨。我猜想应该是会出现中断,因为如果资源池一次是挑选一块卡进行实时迁移,那么会话正在进行,忽然这块卡掉了迁移过程肯定也就停了,如果说不会停,那应该就是资源池在实时迁移过程中同时调用的两快卡,一块卡端了另外一个卡继续执行,那样子就好了。
实测在2012R2时代Hyper-V层面创建的网络资源池并不会被显示在群集和VMM中!
接下来我们在看VHD pool,首先我们先准备一个目录,在里面放进去几块相同内容的VHDX
基于目录创建Hyper-V VHD Pool
New-VMResourcePool –Name VHDXPool –ResourcePoolType VHD -paths C:\vhdpool
创建完成后在虚拟磁盘设置可以看到存储资源池,并且可以在资源池中选择和创建磁盘
启用了磁盘池后,当我们针对虚拟机启动资源计量,可以看到集中使用资源池的VM计量。
老实讲,存储资源池和老王想象中还是有点差距,我以为是类似于等效对象的一种技术,等效对象可以在VMM中,将不同库服务器的磁盘等对象进行关联,然后模板可以基于库服务器位置只能挑选磁盘使用,我本以为存储资源池创建出来的效果应该是虚拟机可以指定存储到资源池中,使用其中相同的磁盘,当一块磁盘被删除会使用另一块。
经过实验以及看一些外国资料,老王发现原来存储资源池在2012R2时代主要被用于集中计费,显然不如网络资源池功能强大,到了2016时代存储资源池似乎有了新的应用场景,当一个跨site场景下,可以在两个site中创建相同名称不同路径的vhdx pool,当虚拟迁移维护时,虚拟硬盘路径将自动更新到Hyper-V主机的正确路径跑上。
延伸阅读
http://www.ms4u.info/2012/12/configure-storage-resource-pool-in.html
http://www.hypervrockstar.com/dd_resource-metering/