2008R2 Hyper-v 高可用性(Livemigration)集合
说到高可用行,大家肯定想到的是就是Cluster的概念,当然现社会企业的数据及应用程序越来越多,越来越重要了,每个人的需求也同时升温,比如,电脑的性能要求,数据访问的稳定性,连续性,甚至保持机房设备电源的不中断添加UPS等等
近期看了很多Cluster相关的文档,同时也手动去实现了很多,比如,上篇介绍的 SQL SERVER 2008R2 Cluster,这次我们说说Hyper-v的高可用性,那通过什么来实现呢,就是通过Migration,分为:livemigration跟quick migration
要实现Hyper-V的LiveMigration,前提是Hyper-V的故障转移群集要使用一个存储作为群集共享卷,虚拟机必须安装在这个群集共享卷上,才可以实现动态迁移,今天我准备使用软件的方法把一台计算机模拟成一个ISCSI存储。该软件园大概6.43MB,具体链接见下:
http://www.microsoft.com/en-us/download/confirmation.aspx?id=19867
今天我们使用三台计算机来实现该功能,分别为:ABC-DC、ABC-SERVER1、ABC-SERVER2,我们给这三天独立服务器均安装了Windows Server 2008R2 Enterprise系统,ABC-DC扮演的角色为DC、DNS、ISCSI存储。ABC-SERVER1和ABC-SERVER2是两台Hyper-V服务器,它们将组成一个故障转移群集。当然我们首先要把DC部署出来。
环境介绍
Domain name:abc.com
Hostname:abc-dc
Ip:192.168.100.2
Gateway:192.168.100.1
Roles:dc dns ISCSI
Hostname:abc-server1
Ip:192.168.100.10
Heart line:100.100.100.1
Roles:Hyper-v Server
Hostname:abc-server2
Ip:192.168.100.11
Heart line:100.100.100.2
Roles: Hyper-v Server
Cluster virtual IP:192.168.100.100
Cluster Virtual Name: Cluster-Group
我们开始部署DC,首先是更改计算机名;ABC-DC,然后配置管理地址:192.168.100.2 DNS:192.168.100.2,重启后,运行DCPROMO将该独立服务器提升为DC
我们的域名为:ABC.COM
我们的域信息见下;森林及域的功能级别均提升为windows2008R2;开始安装
DC部署完成后,我们通过运行DSA.MSC打开用户和计算机管理控制台
接下来我们将第一台Hyper-v Server更改计算机名:ABC-SERVER1,配置管理地址:192.168.100.10,并且加入到ABC.COM的域
因为我们做Cluster,所以用了两块网卡,一个用于本地网络,一个用于做心跳,现在更改心跳网卡的配置信息;
其实建议除了TCP/IPv4以外的勾选全部去掉。
配置心跳地址:100.100.100.1 255.255.255.0;不要配置网关及DNS,然后单击高级选项
在TCP/IP的高级选项中,切换到DNS标签—去除勾选在DNS中注册此链接的地址级附加主DNS后缀的后缀
然后切换到WINS选项,去除启用LMHOSTS查找选项,同时禁用TCP/IP的Netbios功能
接下来更改网络的优先级;通过在网络连接里面----组织----布局---菜单栏
高级设置
将本地的优先级调制高于心跳网络
最后网络配置完成后,将该独立服务器加如到ABC.COM域内
同时来我们将第二台Hyper-v Server更改计算机名:ABC-SERVER2,管理地址:192.168.100.11并且加入到ABC.COM的域
更改心跳网络配置信息,去除TCP/IPv4以外的所有勾选;
心跳地址为:100.100.100.2 255.255.255.0 然后单击高级选项
在TCP/IP的高级选项中,切换到DNS标签—去除勾选在DNS中注册此链接的地址级附加主DNS后缀的后缀
然后切换到WINS选项,去除启用LMHOSTS查找选项,同时禁用TCP/IP的Netbios功能
接下来更改网络的优先级;通过在网络连接里面----组织----布局---菜单栏---高级---致使本地链接的网络优先级高于心跳线网络
将该服务器添加到ABC.COM域内,成为成员服务器
测试心跳线是否通
部署及配置ISCSI Target
在前面我们已经搭建了一个域(ABC.COM),而且将两台Hyper-v Server服务器加入到ABC.COM域内。上面咱们说了我的ABC-DC除了扮演域控制器外,还要行使另外一个职能:充当群集的共享存储。Windows Server 2008 R2能支持虚拟机的动态迁移,关键是要让虚拟机存储在群集共享卷中。群集共享卷指的是由群集内的每个节点都能共同访问的一个存储设备,接下来我们ABC-DC上来模拟这个存储设备。
首先从微软的官网网站下载ISCSI Target安装文件,同时将该程序拷贝到ABC-DC上。如图下图所示,我们下载后双击安装,提示解压,同时默认的解压路径为:C盘根目录下
http://www.microsoft.com/en-us/download/confirmation.aspx?id=19867
开始解压
解压后,我们看见,在C盘根目录下产生一个ISCSTarget的文件夹
我们打开该文件夹后看见里面有很多文件,尤其是有个X86 X64两个文件夹,肯定一个是32位一个是64位了,我们的系统是64位的,所以我们要安装64位的
我们打开X64位的文件夹后,看见两个文件,我们只需要双击运行iscsitarget-Public即可
开始安装
我们开始安装iscsi software target 程序
默认安装到C盘下,这个无所谓
安装完成。
部署完ISCSI Target后,我们在ABC-DC上启动ISCSI Target的管理工具。如图下图所示,我们右键点击ISCSI目标,选择“创建ISCSI目标”。创建ISCSI目标的目的是允许特定的计算机访问ABC-DC模拟出的存储设备
我们为要创建的ISCSI目标取名为ABC-SERVER,及描述:FOR SERVER CLUSTER点击“下一步”继续
我们要创建一个ISCSI发起程序标识符,标识符可以用于识别ISCSI发起程序,我们准备用IP地址来表示ISCSI发起程序标识符,点击“高级”按钮继续
单击添加,开始添加
主要支持四种方式,我们再次选项IP地址
我们准备用IP地址来创建ISCSI发起程序标识符,首先我们添加了ABC-SERVER1的IP地址192.168.100.10,单击确认
我们用同样的方法创建了IP地址为192.168.100.11(ABC-SERVER2)的ISCSI发起程序标识符。这样我们就允许了ABC-SERVER1和ABC-SERVER2两台计算机来访问用ABC-DC(192.168.100.2)模拟出的ISCSI存储设备
单击是
单击确认后,我们看ABC-SERVER1和ABC-SERVER2的地址均添加到了该目标
目标创建完成
创建了ISCSI目标后,我们就开始创建ISCSI存储了。我们准备创建两个ISCSI虚拟磁盘,一个用于群集仲裁,一个用于存储虚拟机。如图下图所示,右键点击“设备”,选择“创建虚拟磁盘”。
我们先来创建一个存储虚拟机的ISCSI虚拟磁盘,我们把D:\Virtual Disk\DATA.vhd文件模拟为ISCSI虚拟磁盘。
我之前在D盘创建了一个Virtual Disk路径
再此路径创建一个DATA.vhd的文件
我们选择虚拟磁盘的大小为200G。
我们输入对虚拟磁盘的描述,FOR CLUSTER DATA点击“下一步”继续
选择ISCSI目标,单击添加
选择之前新建 的ISCSI目标;该目标里面包括了两台Hyper-v server;在虚拟磁盘下选择目标主要就是把这些磁盘分配到该ISCSI目标里面的计算机上
创建虚拟磁盘完成
第一块虚拟磁盘创建完成
分配的空间为10G
ISCSI目标选择
两块虚拟磁盘已创建完成
配置ISCSI虚拟磁盘
在前面我们利用ISCSI Target软件在ABC-ISCSCI上创建了两个ISCSI虚拟磁盘,再次我们将为大家继续介绍ABC-SERVER1和ABC-SERVER2如何访问这些ISCSI虚拟磁盘。ABC-SERVER1和ABC-SERVER2可以使用ISCSI协议访问ABC-ISCSCI上的虚拟ISCSI磁盘,由于Windows Server 2008系统内已经内置了ISCSI协议,因此我们无需在ABC-SERVER1和ABC-SERVER2上安装ISCSI客户端软件。
下面我们以ABC-SERVER1为例为大家演示如何在Windows Server 2008 R2上访问ISCSI磁盘,我们在ABC-SERVER1的管理工具中执行“ISCSI 发起程序”。如图下图所示,系统提示我们ISCSI服务尚未运行,是否需要启动ISCSI服务并将服务设置为自动启动,我们选择“Yes”。
在ISCSI发起程序的目标标签中,我们输入ABC-DC;该名称为我的ISCSI目标服务器
输入我的ISCSI服务的FQDN后单击快速链接
同时我们也可以在ISCSI 发起程序的“发现”标签中,点击“发现门户”。然后输入ABC-DC(ISCSI服务器的FQDN)的IP地址192.168.100.2,端口使用默认的3260即可
单击连接
在“ISCSI 发现程序”的目标标签中,点击“链接”按钮。如果ISCSI目标设备的状态显示是“连接”,那就表明ABC-SERVER1已经利用ISCSI协议连接到了ABC-DC上的ISCSI虚拟磁盘
ABC-SERVER1利用ISCSI发起程序连接到了ABC-DC上的ISCSI磁盘后,我们在ABC-SERVER1的磁盘管理器中就可以对ISCSI磁盘进行管理了。如图下图所示,在ABC-SERVER1的磁盘管理下多了两块磁盘,一块200G,一块10G。这两块磁盘就是ABC-DC上创建的ISCSI虚拟磁盘
我们对两块ISCSI虚拟磁盘进行联机、初始化、分区,格式化。如图下图所示,我们给200G的ISCSI磁盘分配了S盘符,S盘将用于存储Hyper-V虚拟机。10G的ISCSI磁盘分配了Q盘符,Q盘将用作群集的仲裁磁盘。
ABC-SERVER1设置完毕后,我们需要在ABC-SERVER2上进行同样的ISCSI设置,并且对ABC-DC上的两块ISCSI虚拟磁盘分配同样的盘符,这样我们就在ABC-SERVER1和ABC-SERVER2上就可以访问之前创建的ISCSI磁盘了
部署Hyper-V角色
我们在ABC-SERVER1和ABC-SERVER2上通过ISCSI发起程序,连接到了ABC-DC上的ISCSI虚拟磁盘,存储设备的问题已经解决了。我们接下来需要在ABC-SERVER1和ABC-SERVER2上部署及配置Hyper-V角色.
我们在ABC-SERVER1的“服务器管理”中右键点击“角色”,选择“添加角色
勾选Hyper-v
安装完成后提示重启
同样我们也在ABC-SERVER 2上安装安装hyper-v角色
重启完成后,打开Hyper-v管理器
ABC-SERVER2上的Hyper-v管理器
创建故障转移群集
在ABC-SERVER1和ABC-SERVER1上安装了Hyper-V角色后,我们就可以来创建故障转移群集了。只有在故障转移群集中,我们才可以实现Hyper-V虚拟机的动态迁移和快速迁移。我们在ABC-SERVER1进行故障转移群集的创建,如图下图所示,在ABC-SERVER1和ABC-SERVER2的“服务器管理”中右键点击“功能”,选择“添加功能
我们勾选群集故障转移及多路径I/O
开始安装
安装完成
我们同样在ABC-SERVER2上安装故障转移群集功能
安装完成
添加了故障转移群集功能后,我们在ABC-SERVER1的“管理工具”中打开“群集故障转移
在配置群集前我们需要在DNS上创建一个 群集虚拟IP的地址解析记录
解析名称为:CLUSTERGROUP
解析IP:192.168.100.100
通过ping域名是否能正常解析出地址
通过以下图示看能正常解析出地址
下面就开始创建群集
添加我两台Hyper-v server的FQDN
创建前需要验证,当前是否满足创建群集的需求
运行所有测试
开始验证测试。
你是通过;说明当前环境满足创建群集故障转移功能
开始画创建群集故障转移;输入一个群集名称和一个没有冲突的IP地址:192.168.100.100
Cluster name:CLUSTER-GROUP;填写相关信息后,下一步开始验证并且创建,同时会自动在DNS服务器中创建一条记录
确认群集信息;下一步开始创建群集
群集创建完成
配置故障转移群集
首先是该群集配置仲裁;右击CLUSTERSERVER群集---更多操作----配置群集仲裁设置
选择一种合适当前自己环境的可用性;一般系统会自动选择适合当前环境的一种可用性
我们选择仲裁磁盘;10G
仲裁配置完成
启用群集共享:右击CLUSTERSERVER----启用群集共享磁盘
启用后,发现多了一个选项;群集共享卷;我们群集共享卷开启后,我们还需要添加群集共享磁盘
右击群集共享磁盘----添加存储
我们 选择S盘DATA=200G
开始添加磁盘
添加完成
添加完成后,我们会发现在C盘的根目录下多出一个ClusterStorage目录
打开该目录后发现有一个Volume1的目录,这个就是刚才的群集共享目录里添加的共享磁盘
配置高可用性虚拟机
前面创建了故障转移群集,接下来我们将配置故障转移群集,让故障转移群集支持Hyper-V角色。我们在ABC-SERVER1上进行故障转移群集的配置,首先在ABC-SERVER1的“管理工具”中打开“Hyper-V 管理器”,如图下图所示,点击“Hyper-V 设置并且创建虚拟机
计算机名暂时起Test,虚拟机的安装路径为:C盘的ClusterStorage\Volume1下
创建磁盘并且存放位置C盘的ClusterStorage\Volume1下
创建虚拟机完成后开始安装操作系统。
虚机创建并且系统安装完成后看到的结果见下
接下来我们要配置故障转移群集,让故障转移群集支持Hyper-V。在ABC-SERVER1上打开“群集故障转移”,如图12所示,右键点击群集根节点,选择配置服务或应用程序
我们选择虚拟机
这个时候我们能看见,刚才在hyper-v管理器上创建的虚拟机;如果把这个虚拟机添加到高可用内需要将该虚拟机关机才能添加
关机后我们再次尝试添加
我们选择该虚拟机
开始添加到高可用性组
添加成功
我们现在将该高可用虚拟机启动
我们根据以下图示可知,该Test虚拟机本身是运行在ABC-SERVER1这个节点上的,如果这个节点失败正常应该是能自动切换到ABC-SERVER2这个节点上的
测试LiveMigration和QuickMigration
我们在前面的文章中已经为Hyper-V的Livemigration和QuickMigration搭好了实验环境,现在我们有了一个支持Hyper-V的故障转移群集,配置了群集共享卷,有了一个在群集共享卷上创建的高可用性虚拟机。我们现在终于可以测试一下Windows Server 2008 R2中的实时迁移(LiveMigration)和快速迁移(QuickMigration)了。
我们先来测试一下LiveMigration,这也是我们这个实验系列的主要目的。LiveMigration的主要原理是当我们把第一个节点上的虚拟机迁移到第二个节点时,原本是第一个节点负责读取群集共享卷上的虚拟机,现在改为第二个节点来读取,同时第一个节点上的内存数据将通过网络传送到第二个节点。整个迁移过程只有当第二个节点接替第一个节点读取群集共享卷时才会出现非常短暂的服务中断,中断时间仅仅在毫秒级别,用户基本体验不到。
下图所示,我们打开ABC-SERVER1上的“群集故障转移”,我们可以看到TEST虚拟机目前在ABC-SERVER1节点上正在运行。右键点击TEST虚拟机,选择把虚拟机迁移到ABC-SERVER2节点上。
时迁移开始,我们可以在群集管理器中看到迁移的进度。注意,在迁移的过程中虚拟机并没有中断服务,虚拟机的网络连接一直在持续,我们的测试结果显示,如果用ping测试迁移过程中的Test虚拟机,那么在迁移过程中最多只会丢一个包
Test虚拟机现在已经迁移到群集中的ABC-SERVER2节点上了。
测试完动态迁移后,接下来我们再来顺便测试一下虚拟机的快速迁移。当我们把节点1上的虚拟机快速迁移到节点2时,那么故障转移群集会先把节点1上的内存数据保存下来,然后通过网络传递到节点2后再把内存数据给还原出来。在快速迁移过程中虚拟机的网络连接会中断,中断的时间视虚拟机内存大小及网络速度而定,一般情况下要几秒到几分钟不等
如图下图所示,我们在ABC-SERVER2的群集管理器中,选择把ABC-SERVER2节点上的Test虚拟机快速迁移到ABC-SERVER1节点上。
迁移成功
删除群集节点、然后添加提示节点已存在
通过以下命令清楚节点遗留文件
Cluster node 节点名称 /forcecleanup