本文章将详细讲述基于Windows Server 2008 R2的故障转移群集的实现,包括基本知识介绍,故障转移群集环境准备,实施过程,群集的维护等。

故障转移群集可以配置使用多种不同的配置。组成群集的服务器可以是活跃状态或不活跃状态,而不同服务器可以被配置为在活跃服务器故障后立刻接管相应的资源。一般故障转移的过程只需要几分钟的时间,至于时间的长短主要取决于群集的配置和具体应用,当节点处于活跃状态时,该节点上可以使用所有资源。当服务器故障后,在这台服务器上配置了故障转移群集的资源组就会被其他服务器所接管。当故障服务器重新上线后,群集服务可以配置为允许让原服务器进行故障回复,或者是让当前服务器继续处理新的客户端请求。

现在用户比较关心的除了应用的高可用性之外,还包括数据的安全性,所以数据的安全存储也是相当重要的,当然关于存储这部分,会有相应的存储部门同事负责,但一些知识我们还是要知道的。

存储设备

存储设备与群集中每个节点服务器的连接方式一般可以分为FC(光纤通道)和Iscsi(Internet SCSI)。

FC SAN群集:

一般来说,节点服务器通过一块称为FC 适配卡连接到光纤通道交换机,同时存储设备也连接到此交换机,服务器和存储设备之间使用的协议是FCP,FCP会负责将SCSI数据封装后再通过光纤通道发送。另外,节点服务器也各有一块网卡连接到客户端所在的局域网,它让客户端可以通过节点服务器来访问存储设备内的数据。这个存储设备可以是磁盘阵列、光盘库或磁盘库等。

clip_image001[6]

SAN的全称是存储局域网,用来将存储设备连接到服务器,服务器会将SAN存储设备上的一个卷或LUN看作一个磁盘来处理。

另一种是iSCSI SAN群集:

Iscsi SAN 称为IP SAN。服务器和存储系统之间使用IP网络就可以连接在一起。使用的协议是iSCSI Protocol。

clip_image002[5]

服务器上可以安装iSCSI HBA适配卡或1Gb/10Gb的以太网卡来连接到1Gb/10Gb的网络交换机上,一般的iSCSI HBA卡上都内置有iSCSI启动器软件,服务器使用iSCSI启动器将SCSI命令封装后通过IP网络发送。由于服务器在处理IP数据包时会占用一定的CPU资源,从而会影响到服务器的运行效率。此时,可以用TOE iSCSI HBA适配卡来改善效率。因为 拥有TOE功能的适配卡会自己处理比较耗费资源的工作。不占用CPU。如果安装1Gb/10Gb的以太网卡,则需要在节点服务器上另外安装iSCSI启动软件。

这个存储系统中包括目标和存储设备,服务器是先连接到目标,再通过目标来访问存储设备。服务器将通过目标所连接到的SAN存储设备视为好像直接连接到服务器上。

这个目标可以由目标服务器来代替,目标服务器可以安装一般的操作系统,如Windows Server 2008 R2,然后在其中安装目标服务器软件,或者是直接内置目标服务器软件的操作系统如Windows Storage Server 2008,而存储设备可以是这台服务器内的普通磁盘(PATA、SATA、SCSI、USB、FireWire等存储设备)或者是连接到这台服务器上磁盘阵列或是使用现有磁盘内的文件进行模拟。

群集的仲裁配置:

仲裁的英文单词是 Quorum,中文意思是法定数量。也就是说只要群集中正常运行的节点数量达到法定数量,群集就会继续提供服务,否则就会停止服务。在停止服务期间,正常的节点仍然会继续监听故障节点是否恢复正常,只要达到数量,群集就可以继续提供服务。

在计算法定数量时,仲裁配置会使用仲裁磁盘,又称为见证磁盘,这个磁盘内存放着群集的配置信息,仲裁配置可以分为以下几种。

多数节点:这种配置不会使用到仲裁磁盘,而所谓的多数节点就是在正常节点数量占多数的情况下,群集才会提供服务,否则就停止服务。这种配置适用于奇数节点的群集。它可以容纳的故障节点数量为(n/2)-1(四舍五入)。

多数节点与磁盘:适用于偶数节点的群集,它在计算法定数量时会将仲裁磁盘计算进来。

如果仲裁磁盘在线的话,它可以容纳的故障节点数量为n/2(四舍五入)。如果仲裁磁盘脱机,则可以容纳的故障节点数量(n/2)01。

下面我们来搭建一个故障转移群集,拓扑图如下:

clip_image004[4]

环境介绍:

网络配置:

节点服务器需要有3块网卡,分别连接public网络、heart线、iSCSI存储网络。

Public网络:节点服务器有一块网卡连接到此网络,客户也通过此网络来连接节点服务器。

Heart线:节点服务器之间需要随时监听对方的状态,以得知对方是否故障或重新恢复。为了避免受到其他网络流量的干扰,建议节点之间通过专用网络进行通信。为了提高故障恢复能力,也可以配置让节点之间使用public网络进行通信,当无法通过heart线通信时,还可以使用public网络进行通信。

iSCSI网络:

节点服务器各有一块网卡连接到iSCSI网络,并且通过此网络来连接目标服务器和访问存储设备内的文件。同样是专网专用,不可用作其他用途。节点服务器用来连接iSCSI网络的网卡应该相同,而且iSCSI网络应该采用高速交换机(1Gb/10GB以上)。

为了更好的实现高可用性,也可以在节点和客户端之间,节点和目标服务器之间采用适当的故障恢复措施。节点和客户端之间,可以在节点上配置两块网卡来连接两个网络,通过这两个网络都可以跟客户端通信,也就是相当于有两个public,或者是采用具有teaming功能的网卡,在计算机内配置多块网卡,通过驱动程序变动一块虚拟网卡,外部计算机就认为只有一块网卡,但heart网络不要使用 teaming功能的网卡,以免因为延迟问题而影响到节点之间通信的实时性。iSCSI也不支持此功能的网卡。

clip_image006[4]

第一台机器是DNS/DC,做为域控,群集中的节点必须角色相同,推荐都是成员服务器,目标服务器是独立服务器,不需要加入域,上面安装目标服务器软件StarWind即可。

为了减少故障的出现,让群集功能正常运行,建议节点服务器都应该安装相同的硬件和相同版本的操作系统。

Windows server 2008 R2只有Enterprise、Datacenter、Itanium版本支持群集,在此所有机器均使用enterprise。

存储系统:

我们使用starwind软件搭建目标服务器,主要是因为Windows Server2008 R2要求存储设备必须符合SCSI Primary command-3的标准,本实验中只有两个节点,因此仲裁配置为多数节点与仲裁磁盘。这里至少需要两个磁盘,一个用来存放具体的应用,另一个用于仲裁。并且这两个磁盘必须是基本磁盘,不能是动态磁盘。文件格式不用说,使用NTFS

具体实施过程:

DNS/DC的准备:

我们在192.168.1.10这台服务器上,运行命令dcpromo将此服务器由独立服务器升级为域控制器,域名为dufei.com。

clip_image008[4]

clip_image010[4]

按照默认设置安装活动目录域架构,重新启动即可完成DC的准备。

下面将server1和server2两个节点加入到域名,方法是:计算机右键—属性----更改设置,如下图所示:

clip_image012[4]

clip_image014[4]

clip_image015[4]

输入有权限的域用户及密码,然后重新启动计算机即可。Server2上做同样的操作。

目标存储服务器的搭建与配置:

该阶段将在store存储服务器上操作:

下载StarWind软件:登录下图所示的网站下载该软件及30天的试用许可。

clip_image017[4]

安装StarWind 软件:双击下载的starwind软件进行安装,如下图所示:

安装过程使用默认设置即可,出现下图所示,点击安装:

clip_image019[4]

点击完成后,启动Star Wind,界面还是蛮酷的。

clip_image021[4]

紧接着弹出下面的界面:

clip_image023[4]

找到下载的License许可文件,如下图所示:

clip_image025[4]

当成功安装后,我们就来看看这个小东东如何使用了。

连接到目标服务器:方法是点击starwind server,add starwind server添加一个目标服务器,如下图所示:

clip_image027[4]clip_image029[4]

输入该服务器的IP地址,因为是本机所以也可以使用127.0.0.1。

clip_image031[4]

clip_image033[4]

在此需要输入连接到目标服务器的帐号和密码,默认用户是root,默认密码是starwind。

新建iSCSI磁盘:

建立群集所要用到的仲裁磁盘和资源磁盘,在此可以使用物理或者是虚拟的硬盘、光盘、磁带等设备,在此,我们准备在目标服务器上创建两个img文件分别对应仲裁磁盘和资源磁盘。

clip_image034[4]

点击Device---Add Device,后出现下图所示:

clip_image036[4]

在这个界面我们可以看,我们可以使用的存储设备类型有物理或虚拟的硬盘、光盘、磁带,在此我们选择硬盘。

clip_image038[4]

在这个界面中,我们选择创建的是一个基本的虚拟硬盘,如果需要高级功能的虚拟硬盘可以选择:Advanced Virtual。

clip_image040[4]

接下来,选择:Image file device。我们使用img映像文件来虚拟硬盘设备。

clip_image042[4]

在这个界面中,我们选择创建一个虚拟磁盘,在此指定的磁盘空间是600M,此磁盘将用于仲裁。

clip_image044[4]

在此选择,Asynchronous mode。

clip_image045[4]

缓存模式选择正常。

clip_image046[4]

在此创建一个新的目标,客户端主要是找到目标,通过目标来访问存储设备,一定要选择上:Allow multiple concurrent Iscsi connetions(Clustering)。

当第一块虚拟磁盘创建成功后,再重新上述步骤创建资源磁盘,只是资源磁盘的容量要大一些。 根据需要,指定资源磁盘的容量。

clip_image048[4]

在这里,我们再为这个磁盘创建一个目标,当然也可以绑定到一个已经存在的目标上。

clip_image050[4]

到这个地方为止,两块磁盘就创建成功了,如下图所示:

clip_image052[4]

防火墙设置:下面我们需要对防火墙进行简单设置,以允许节点服务器访问目标服务器。所用到的端口有3260和3261。

clip_image053[4] clip_image054[4]

节点服务器连接iSCSI磁盘:

下面我们需要让节点服务器连接到所创建的两块iSCSI磁盘,节点1上和节点2分别执行下列的步骤将iSCSI的2块共享盘分别挂接到群集节点上,在节点1上进行格式花, 节点2上直接使用即可。

节点上需要使用iSCSI程序连接到目标服务器,如下图所示:

clip_image056[4]

点击管理工具中的iSCSI发起程序,第一次使用会出现下面的提示,必须启动 iSCSI服务。

clip_image057[4]

点击:是,出现下图所示的界面。

clip_image059[4]

点击“发现”选项卡,再点击“发现门户”,输入目标服务器的IP地址或DNS名称,在此我们直接使用IP地址:

clip_image060[4]

回到“目标”选项卡,可以看到目标服务器上的目标名称:

clip_image062[4]

当前状态是不活动的,点击“连接”。

clip_image063[4]

clip_image064[4]

clip_image065[4]

此时,目标已经连接了,目标内的存储设备也出来了,如上图所示。下面需要对磁盘进行联机、初始化、分区、格式化等操作。

clip_image067[4] clip_image069[4]

clip_image071[4] clip_image073[4]

clip_image074[6]

将两块磁盘分别格式化为NTFS文件系统,卷标分别为quorum、share。

Server2上也进行相应的操作,只是不需要再进行分区、格式化。将分区号和卷标改为和server1一致,如下图所示:

clip_image074[7]

安装“故障转移群集”:

到此为此,基本准备工作已经结束了,下面就开始在两个节点上安装群集服务。在此以server1为例,安装方法是:打开服务器管理器图标----添加功能,从中选择“故障转移群集”。

clip_image076[4]

当两个节点安装完群集服务后,我们需要运行群集配置验证程序,来检查节点服务器、网络和存储设备是否符合群集要求。

仅当完整配置(服务器、网络和存储)可以通过“验证配置”向导中的所有测试时,微软才支持故障转移群集解决方式,另外,解决方案中的所有硬件组件均必须标记为“certified for windows server 2008 R2”。

方法是在server1或者是server2上进入故障转移群集管理器,单击“验证配置”。如下图所示:

clip_image078[4]

因为我们需要验证的是群集中的所有节点,所以我们需要把所有节点都添加进来,如下图所示。

clip_image080[4]

点击“下一步”之后,我们需要“运行所有测试”,如下图所示:

clip_image082[4]

clip_image084[4]

给出验证清单,也就是所要进行验证的项目。点击,下一步之后,开始出现下面的验证过程:

clip_image086[4]

经过耐心的等待后,出现下图所示:

clip_image088[4]

clip_image089[4]

OK,太好了,查看报告,只有一处关于网络的IP地址的警告,这应该是检测到节点间只有一块网卡相连,没有实现冗余,这不影响群集的创建。

创建群集:

点击故障转移群集管理器中的“创建一个群集”,如下图所示:

clip_image091[4]

再次提示添加要加入群集的所有服务器,如下图所示:

clip_image093[4]

下面,我们需要输入用于管理群集的访问点,也就是群集的名称和对应的 VIP。

clip_image095[4]

接着,需要确认所输入的信息是否正确,如下图所示:

clip_image097[4]

点击,下一步,开始创建群集:

clip_image099[4]

最后,出现摘要信息,群集创建结束。

clip_image101[4]

返回到“故障转移群集管理器”,查看群集的工作状态,可以看到,仲裁磁盘是我们前面所创建的quorum磁盘,如下图所示:

clip_image103[4]

当前的仲裁配置模式是:节点和磁盘多数,这是因为我们所创建的群集是偶数个节点。

clip_image105[4]

如果希望,更改群集的仲裁配置,可以点击下图所示的操作中,在此不再演示。

clip_image107[4]

群集的配置:

群集网络的配置:

下面需要对群集内的各个网络进行相应的配置,以确定它们的用途。

针对public网络,我们需要允许客户端进行访问,所以进行下图所示的操作:

clip_image109[4]

注意,千万不要选错了网络,可以观察IP地址,点击属性,出现下图:

clip_image111[4]

Heart网络的配置: 此网络只用于节点间的通讯,所以不应该允许客户端访问,操作同上,取消客户端的访问。允许群集使用,但不允许客户端访问。

clip_image113[4] clip_image115[4]

针对store存储网络: 则是不允许群集使用,如下图所示:

clip_image117[4]

群集已经搭建成功了,下面我们就来看看如何在上面安装具体的应用了,本篇先介绍一个简单的应用,实现文件服务器的故障转移群集,我们另一篇文章会详细介绍如何实现SQL Server 2008 R2的故障转移群集。

文件服务器故障转移群集:

防火墙准备:节点服务器上必须允许远程卷管理,不然无法在群集内创建共享文件夹。操作方法是在public网络所在网络位置上,允许远程卷管理,如下图所示:

clip_image118[4]

从这个图中可以看出public网络属于域网络,所以,我们只需要在域网络上允许远程卷管理即可。

clip_image119[4]

clip_image121[4]

当然,也可以直接将防火墙禁用。注意,所有节点上都要进行此步操作。

安装文件服务器:

两个节点上都需要安装文件服务器角色,安装方法是服务器管理---角色----添加角色。如下图所示:

clip_image123[4]

在如上图所示的界面中,选择文件服输,下一步后,出现下图所示,一定要选择文件服务器。

clip_image125[4]

节点2上进行同样的操作,安装文件服务器角色。

然后,回到群集中,单击服务和应用程序,右边的配置服务或应用程序。

clip_image127[4]

选择配置服务或应用程序后,出现下面的界面:

clip_image129[4]

点中,文件服务器,此时系统会检查所有节点中是否已经安装了该服务,如果安装不正确,会报错。接下来需要输入客户端访问点的信息,如下图所示:

clip_image131[4]

在此界面中,需要输入客户端访问此服务或应用程序时将使用的名称。名称我们就使用clusterFs,IP地址是客户端访问时所要使用的IP地址。此名称和IP地址会被注册到DNS服务器内。

clip_image133[4]

选择分配给文件服务器的存储磁盘,在此,除了仲裁就是群集磁盘2了,如上图所示。出现确认信息后,开始进行配置,出现下图,表示配置结束。

clip_image135[4]

回到故障转移群集管理器中,可以看到目前提供此服务的是Server1。

clip_image137[4]

下面,我们就就来添加共享文件夹,点击下图中的添加共享文件夹按钮。

clip_image139[4]

下面我们准备将资源磁盘中的文件夹TMG2010共享出来,供企业员工使用。如下图所示:

clip_image141[4]

接下来,需要设置此文件夹的NTFS的权限,可以根据需要进行更改,我们在此就不做修改了。

clip_image143[4]

在下图所示的界面中,可以设备此共享名,根据需要设置一个便于记忆的,有意义的名称。

clip_image145[4]

下面根据需要,依次进行SMB设置、SMB权限设置、DFS命名空间发布等,我们在此都使用默认值,然后需要对该设置进行复查,下图所示:

clip_image147[4]

点击创建,如果一切正常,就如下图所示:

clip_image149[4]

客户端测试:

下面需要测试一下客户端是否可以访问到共享文件夹。我们启动一台测试机,在运行中输入:\\clusterfs.dufei.com 或者是直接输入:\\clusterfs,将可以看到刚刚添加的共享文件夹TMG2010,如下图所示:

clip_image150[4]

实现故障转移:刚才我们看到了提供此服务的是 Server1服务器,下面我们就来测试一下故障转移,我们将server1上的网卡禁用,当然也可以是关机,模拟Server1故障后此服务能否顺利切换到Server2上。

clip_image152[4]

然后,我们到Server2上打开故障转移群集管理器界面:

clip_image154[4]

可以看到当前所有者已经是Server2了,我们再次到客户端进行访问:

clip_image155[4]

一切正常!当然,也可以将Server2的网卡禁用,将Server1的网卡启用,可以看到服务再次切换到了Server1上。

clip_image157[4]

管理员也可以通过“将该服务或应用程序移动到另一个节点”实现所有者的切换,如下图所示:

clip_image158[4]

但需要注意的是,一定要保证对方节点可以,不然“将该服务或应用程序移动到另一个节点”操作为灰色,如下图:

clip_image159[4]

实现文件服务器的高可用,需要使用故障转移群集管理器中的添加共享文件夹的方法实现,不要通过windows资源管理器来实现。

群集的其他维护工作:

在本文的最后,我们来看一下如何在群集中添加节点、删除节点以及当删除群集的操作。

添加节点:

当企业需要提供更大的高可用级别时,可以向现有群集中添加新的节点,这里我们准备添加server3,准备做以下准备工作:

Server3安装三块网卡,分别对应public网络、heart网络、store网络;然后将server3加入域;安装文件服务器服务;防火墙配置,根据应用不同,进行相应的防火墙设置。

准备工作完成后,Server3上需要利用iSCSI发起程序添加共享磁盘。

注意,进行此步操作时,需要将群集服务中的现有应用和存储脱机,如下图所示:

clip_image161[4]

然后,通过iSCSI发起程序添加共享磁盘,需要保持盘符和卷标的一致性。如下图所示:

clip_image162[4]

接下来,在Server3上安装故障转移群集:

clip_image164[4]

接下来,我们需要将Server3添加到群集中,在任意节点上都可以,我们就在server3上操作,首先连接到群集,方法是点击管理群集,如下图所示:

clip_image165[4]

clip_image166[4]

输入群集名称后确定,即可。 然后就可以将server3加入到该群集中,如下图:

clip_image167[4]

点击:添加节点,出现下图的界面。

clip_image169[4]

然后,点击下一步。

clip_image171[4]

因为我们要考虑到Microsoft原厂的技术支持,所以一定要保证验证是没有问题的。点击下一步,进行所有项目的验证,此步,也可以通过点击,故障转移群集中的验证群集进行,如下图:

clip_image173[4]clip_image175[4]

然后,就可以顺利的将server3添加到该群集中,如下图:

clip_image177[4]

从这个界面中也可以看到,此群集现在已经具有3个节点和一个仲裁磁盘,但系统建议当有奇数上节点的时候,就不再需要仲裁磁盘,所以建议删除仲裁磁盘。

更改仲裁模式,方法是更多操作中的配置群集仲裁设置,如下图:

clip_image178[4]

然后,出现下图所示:

clip_image180[4]

从这个图中可以看出,推荐的是多数节点。

更改完仲裁配置后,紧接着将服务或应用程序联机,如下图:

clip_image181[4]

通过此步操作后,我们就成功将Server3添加到了该群集中。

删除节点:

添加节点相对复杂的操作完成后,删除节点就显示很简单了。在删除某个节点前一定要确保当前节点不是服务或应用程序的所有者,如果是的话,一定要将所有者转移到其他节点,然后将此节点删除即可,方法:在要删除的节点上如server3----右键-----更多操作---退出,如下图所示:

clip_image183[4]

然后,出现收加节点Server3的提示,如下图所示:

clip_image185[4]

此时,群集中就只有两个节点了,需要将群集仲裁模式改为多节点+磁盘,如下图所示:

clip_image187[4]clip_image189[4]

指定仲裁磁盘。

删除群集:

首先,需要先删除群集中的服务和应用程序,方法是找到群集中服务和应用程序,如下图所示:

clip_image191[4]

点击删除按钮后,将此服务删除。

然后,右击群集---更多操作----破坏群集,如下图所示:

clip_image193[4]

按照提示将此群集销毁,此步操作完成后,即将群集删除,但一般建议到DC上清除和群集相关的信息,如下图所示:

clip_image195[4]

关于群集的相关的操作,我们就介绍到这儿了。在Windows Server 2008以及Windows Server 2008 R2版本中,对故障转移群集进行了改进,其目的是为了简化群集,使它们更加安全、稳定,但配置和管理更加容易,其功能包含于企业版和数据中心版中。