搭建iSCSI文件服务器故障转移群集

故障转移群集(Failover Cluster)可以提供一个高可用性应用程序或服务的网络环境,本章将接受如何搭建iSCSI SAN文件服务器故障转移群集。

故障转移群集概述
我们可以将多台服务器组成一个故障转移群集,这些服务器会协同工作以提高一个高可用性的应用程序或群集内每台服务器被称为一个节点(Node),节点之间通过网络硬件与软件连接在一起对用户提供服务,这个过程被称为故障转移,它让用户能够不中断的继续享有服务器提供的服务。

群集仲裁配置

当群集中的节点发生故障时,会由其他节点接手继续提供服务。不过,当节点之间通信出现问题或太多节点发生故障时,群集就会停止服务,可是群集可以容忍多少个节点发生故障,这要由仲裁配置(Quorum Configuration)决定,Quorum中文就是法定数量的意思,也就是只要群集中仍然正常运行的节点数量达到法定数量,群集就会继续提供服务,否则就停止服务。在停止服务期间,仍然正常的节点会继续监听故障节点是否恢复正常,一旦正常节点的数量恢复到法定数量时,群集就会继续提供服务器。

在计算法定数量时,有的仲裁配置会用到仲裁磁盘,又称为见证磁盘(Witness Disk)。仲裁配置分为以下几种。

多数节点(Node Majority)
此种配置不会用到仲裁磁盘,而所谓多数节点就是正常节点数量占多数的情况下,群集才会提供服务,否则就停止服务。此种配置适用于奇数节点的群集。例如,5个节点的群集,其正常节点的数量必须至少3个,群集才会提供服务。

多数节点与磁盘(Node and Disk Majority)
适用于偶数节点的群集,它在计算法定数量时会将仲裁磁盘计算进来,例如,4个节点+1个仲裁磁盘的群集,可以将其视为5个节点的群集,此时正常节点的数量必须至少3个,群集才会服务。

多数节点与文件共享(Node and File Share Majority)
它和多数节点与磁盘类似,不过将仲裁磁盘改为共享文件夹内的文件。

没有多数:只有磁盘(No Majority :Disk Only)
只要仲裁磁盘脱机·,群集就会停止提供服务(不建议采用)。

创建故障转移群集实例演示

我们将通过下图来演示如何搭建一个iSCSI SAN两节点的文件服务器故障转移群集,其仲裁配置默认为多数节点与磁盘。

软硬件需求
要创建上图的两节点群集,其软硬件配备必须符合以下要求。可以使用我以前所得vmware workstation来实验,也可以用hyper-v来实验,因为这个现在windows 2012的实验没有涉及虚拟化。

服务器
架设群集需要AD域,群集中的节点服务器必须隶属于同一个域,并且应该扮演同样的域角色,也就是都是成员服务器或都是域控。我们的环境域名contoso.com,左上角DC为域控,Node1和Node2两个节点,最下面的服务器为目标服务器,其中将安装Windows Server2012 内置的iSCSI目标服务器软件,不需要加域。

为了让群集能正常运行,因此群集中的两台节点服务器应该都要配备相同或类似的硬件,而且需要安装相同版本的操作系统,包含相同的硬件版本(32位,64位),同时也要安装相同的SP与软件更新。在windows Server 2012系统产品中只有Datacenter与Enterprise版本才具备群集功能,因此2个节点服务器都安装了Windows Server2012 Datacenter。为了方便,域控与目标服务器也都安装Datacenter。

网络设置
图中两台节点服务器各有三块网卡,分别连接到Public,Private和iSCSI网络。

Public网络:两台节点服务器各有一块网卡连接到public网络,并通过public网络与域控通信,客户端也通过public来连接节点服务器。
Private网络:两台节点服务器之间需要随时监听对方的心跳(Heartbeat)情况,以便得知对方心跳状态,因此建议节点之间通过专用网络进行通信。
为了提高故障恢复能力,我们会设置让节点之间也可以通过前面的public网络来通信,她在节点之间因故无法通过private网络通信时,还可以选择public网络。

iSCSI网络:两个节点各有一块网卡连接到iSCSI网络,并通过此网络来连接目标服务器并访问存储媒体内的文件,这个网络应该仅用于节点与目标服务器之间使用iSCSI协议来通信的专用网络,请勿作其他用处。两个节点用来连接iSCSI网络的网卡应该相同,而且iSCSI网络内应采用高速交换机(1G,10G,或更高)。
注:为了避免单一点故障而影响到群集的运行,建议在两个节点与客户端之间,两个节点与目标服务器之间的通信管道采用适当的故障恢复措施,例如以节点与客户端之间来说,可以在节点中利用两块网卡来连接到两个网络,而通过这两个网络都可以和客户端通信。还可以采用具备teaming功能的网卡来提供故障恢复功能,例如可以在public网络采用teaming网卡,但是不要再private网络采用teaming网卡,以免因为延迟问题而影响节点之间的通信的实时性。此外,iSCSI并不支持teaming,因此iSCSI网络不要使用teaming网卡。Teaming就是将一台计算机内的多块网卡,通过驱动程序将其变成一块虚拟网卡,其他计算机通过此虚拟网卡与这台计算机通信,但是数据实际上通过多块物理网卡来传送。Teaming网卡可以提高网络传输速度,提供负载平衡与故障处理功能。Windows Server2012 已经内置网卡teaming功能。

目标服务器与存储媒体
Windows Server 2012 要求存储媒体必须遵照SCSI Primary Command-3 (SPC-3)的标准,尤其是必须支持SPC-3 Persistent Reservation(SPC-3持续保留)。我们要利用Windows Server 2012内置的iSCSI目标服务器来搭建iSCSI目标服务器,通过他创建的iSCSI磁盘支持上述的SPC-3要求。

本例为两个节点的文件服务器群集,因此仲裁配置为多数节点与磁盘,此时除了存储文件的文件磁盘外,还需要一个仲裁磁盘,这两个磁盘要求如下:

必须是基本磁盘,不可以是动态磁盘。
仲裁磁盘必须被格式化为NTFS,但是文件磁盘并没有强制规定,不过建议NTFS。
磁盘分区样式可以是MBR或GPT。
本列中的仲裁磁盘和文件磁盘都直接使用本地计算机c:磁盘内的文件来模拟,文件名分别是C:\iSCSIVirtualDisks\Quorum.vhd和C:\iSCSIVirtualDisks\Files.vhd
iSCSI SAN两节点文件服务器群集实例演示
我们按部就班的来说明如何搭建群集,以减少出错的机会。

准备网络环境与4台服务器

DC的网卡连接到public网络,目标服务器的网卡连接到iSCSI网络,两个节点的3快网卡分别连接3个网络。

目标服务器必须多准备两个磁盘
在这4台服务器上安装windows Server2012 datacenter
安装完成后,分别改为DC1,Node1,Node2,Target。

建议更改两台节点服务器内3块网卡的连接名称,以便于识别。
务必执行ping测试来确认服务器之间可以正常通信。
将DC升级为域控。
将Node1和Node2分别加入域。
Node1与Node2防火墙例外开放远程卷管理的流量,否则无法在群集内创建共享文件夹。
适当的节点设置
为了让群集运行的更有效率,建议调整两台节点服务器的设置。例如,为了让两台节点服务器能够实时通过private网络来监听对方的心跳情况,因此应该避免在这个网络上发送其他不相干的流量;还有iSCSI网络仅用于节点与目标服务器之间使用iSCSI protocol来通信的专用网络,因此也应该避免在这个网络上发送其他不相干的流量。例如,我们最好将节点服务器上连接这两个网络的网络连接的dns和wins流量禁用。

登陆Node1 打开private网卡去掉Microsoft网络客户端和Microsoft网络的文件和打印机共享,只使用ipv4

注:Microsoft网络客户端用来访问网络上其他计算机内的共享文件与打印机;Microsoft网络的文件和打印机共享让网络上其他计算机来访问本地计算机上的共享文件与打印机。由于不需要通过private和iSCSI网络与其他计算机有此类型的互动,因此可以禁用。

不要设置DNS

不勾选在DNS中注册此连接的地址

取消Netbios有关的功能

对于iSCSI网卡也重复上面设置
由于private和iscsi网络都有专用用途,因此我们需要设置所有其他类型的流量都优先使用public网络。

继续到Node2重复以上步骤
注:两个节点需要安装相同的更新程序,然而在此建议不要启动自动更新功能,而是由系统管理员手动更新,以便能够确保两个节点拥有相同的更新程序。

目标服务器与存储媒体的设置

到目标服务器上添加服务器角色,iSCSI目标服务器

单击文件和存储服务

新建iSCSI虚拟磁盘

选择磁盘路径

输入磁盘名称

输入磁盘大小,我们实验环境小点无所谓,有个说法,仲裁磁盘的大小和机器的物理内存一样

我们需要将此虚拟磁盘分配给一个iSCSI目标,安装在Node1和Node2上的iSCSI发起程序需要通过iSCSI目标来连接虚拟磁盘。由于目前尚未有任何iSCSI目标,因此必须新建。

输入名称

添加iSCSI发起程序

输入Node1的iSCSI卡ip地址

注:类型处也可以选择节点的DNS名称,MAC地址或iSCSI发起程序的IQN,IQN必须先到节点Node处查询(在启动iSCSI发起程序后,位于设置标签下的发起程序名处)。

添加Node2的网卡ip

出现验证服务界面直接单击下一步
注:可以要求iSCSI发起程序端(群集节点)必须经过验证后才可以连接iSCSI虚拟磁盘,其方法为 勾选启用验证服务界面中的启用CHAP,然后设置用户名与密码,在iSCSI发起程序端必须提供此处的用户名与密码才可以连接iSCSI虚拟磁盘。

反过来说,iSCSI发起程序端也可以验证iSCSI目标,此时需要勾选启用验证服务界面中的启用反向CHAP,然后输入iSCSI发起程序端指定的用户名与密码。

确认设置无误后单击创建

完成后,上半部为创建的iSCSI虚拟磁盘,下半部为iSCSI目标
注:如果要更改iSCSI虚拟磁盘或iSCSI目标的设置,可以直接对着iSCSI虚拟磁盘或iSCSI目标单击鼠标右键,然后再弹出的快捷菜单进行设置。

单击上图的新建iSCSI虚拟磁盘来新建另一块虚拟磁盘
为磁盘命名

设置磁盘大小

分配给磁盘一个iSCSI目标,新建iSCSI目标

输入名称Files

添加Node1和Node2发起程序的ip与前面一样

验证配置无误后创建

完成
注:iSCSI目标所使用的连接端口号为TCP 3260,在通过服务器管理器安装iSCSI目标时,系统就已经自动在防火墙上开放了端口的流量。

让节点服务器可以连接iSCSI虚拟磁盘

分别到两台节点服务器上设置iSCSI发起程序,以便通过它来连接目标服务器的目标,然后通过目标访问iSCSI虚拟磁盘。

先到节点Node1上管理工具-iSCSI发起程序,启动iSCSI服务

单击发现门户

输入目标服务器ip。默认连接端口3260

注:如果连接失败,请确认目标服务器的Windows防火墙已经关闭或有例外开发iSCSI流量。

选择目标标签下要连接的目标后单击链接

直接单击确认

注:如果目标服务器端有要求身份验证,单击高级勾选启用CHAP登陆,输入用户名和密码。

下图为iSCSI目标连接成功后的界面

重复上面步骤在连接另一块磁盘,全部连接完成后入下图
(前面上图我们只看到一块盘,后来检查了下,发现quorum磁盘iSCSI目标中Node1的ip打错,所以没有显示出来)

打开磁盘管理,将两块磁盘进行联机

初始化磁盘

新建简单卷,并分配盘符Q和F

可以直接在节点Node1上在两块磁盘内添加文件,以便测试是否可以正常访问这两个硬盘。
到节点服务器上重新执行上述步骤,但是不要执行从第8步开始的步骤,防止数据丢失。

在节点服务器上安装故障转移群集功能

分别到两台节点服务器安装故障转移群集功能,添加功能-故障转移群集

验证群集设置
在开始创建群集之前,强烈建议执行群集验证程序,他会检查节点服务器,网络与存储媒体等是否符合群集的要求。

在Node1或Node2打开故障转移群集管理器,单击验证配置

输入选择要验证的节点Node1和Node2

选择运行所有测试

确认要验证的项目无误后单击下一步

如果完全验证通过,就可以直接单击完成按钮开始创建群集

注:

如果验证结果只有警告,可能不会影响群集的创建,例如,如果群集节点之间zhi通过一块网卡进行通信(没有通过多块网卡或没有绑定功能等),则验证向导会列出警告信息,但是它不会影响群集的创建。
如果验证结果显示有其他未通过验证的失败事件,则请排除此问题后再重新验证,否则所创建的群集可能无法正常运行。

创建群集

我们将利用群集创建向导来创建群集。

输入加入群集的名称和IP(它隶属于Public网络)。你将通过此IP地址来管理群集,群集名称与ip会被记录到DNS服务器内。

确认配置无误后下一步

出现摘要界面单击完成
下图为完成后的界面,从界面中可以看出其仲裁配置自动被设置为多数节点与磁盘,因为此群集为偶数节点(两个节点)。括号内Cluster Disk 1表示仲裁盘为群集中的第1个磁盘。
注:如果要改用其他磁盘来扮演仲裁磁盘:单击群集右侧的更多操作-配置群集仲裁设置。

配置两节点的文件服务器故障转移群集

配置群集网络的用途
我们要调整群集内Public,Private,iSCSI网络的用途。

Public网络:我们要让客户端可以通过此网络与群集节点通信,也要让群集节点之间可以通过此网络进行通信(当作private网络的备用网络)。
Private网络:此网络专供群集节点之间通信使用。
iSCSI网络:它是群集节点利用iSCSI通信协议与目标服务器通信的专用网络,不可以作为群集节点之间通信的网络,当然也不可以用来与客户端通信。
打开群集管理器选择网络
注:如果在窗口中没有看到要管理的群集,请单击连接到群集,然后选择要管理的群集。

对着代表Public的网络单击属性-选择允许此网络上进行群集网络通信。勾选复选框

对着代表Private的网络勾选允许此网络上进行群集网络通信,不勾选复选框

对着代表iSCSI的网络勾选不允许在此网络上进行群集网络通信

创建与测试两节点的文件服务器故障转移群集

在Windows防火墙开放所需流量
在创建文件服务器故障转移群集之前,需要在两台节点服务器的Windows防火墙开放远程卷管理流量,否则无法在群集内创建共享文件夹。由于两个节点之间通过Public网络进行通信,因此首先我们需要找出Public网络的网络位置,然后只需要针对此网络位置来开放远程卷管理即可。

到Node1上打开网络和共享中心,查看可知Public网络的位置为域网络

打开Windows防火墙,选择允许应用或功能通过Windows防火墙

勾选远程卷管理并勾选域

继续到Node2上重复以上步骤
创建文件服务器故障转移群集
两个节点服务器需要先安装文件服务器角色服务。

添加角色-文件和iSCSI服务-文件服务器

打开故障转移群集-配置角色

选择文件服务器

单击下一步

为文件服务器命名,并设置ip地址(和创建群集一样)

勾选要指派给文件服务器来使用的磁盘

确认无误后单击下一步

单击完成

完成后的界面,可知服务器目前所有者是Node1,因此当客户端连接时,有Node1提供服务

单击文件服务器MyClusterFS右边的添加文件共享
注:如果两台节点服务器的Windows防火墙未关闭或没有开发远程卷管理流量,此时将无法添加共享文件夹。

单击下一步

单击下一步采用默认即可,他会将F:\shares内的指定文件夹设置为共享文件夹。你还可以自行制定文件夹路径。

设置共享名,例如Database,系统会见F:\Shares\Database设置为共享文件夹。客户端可以通过\MyClusterFS\Database访问此文件夹。

注:通过故障转移群集管理器控制台来共享群集磁盘内的文件夹,不要通过其他方法,例如不要通过文件资源管理器。

直接单击下一步

直接单击下一步来采用默认权限设置(开放完全控制的权限给系统管理员,开发读取写入的权限给日头用户等)。如果要更改权限,可以单击自定义权限按钮。

出现确认选择项目界面时直接单击创建按钮,完成后单击关闭
下图为完成后的界面

到客户端计算机测试是否可以访问文件服务器共享文件夹database内的文件,我们使用DC来访问,并且创建文件夹,添加文件。

尝试将节点移动到Node1.

注:如果将某个节点暂停,此节点当前拥有的角色仍然会继续提供服务,但是你无法将由其他节点拥有的角色转移到这个被暂停的节点。

可以进一步验证群集的故障转移功能:将当前的所有者关机,此时另一个节点会自动检测到所有者已经下线,因此他会接受来对客户端提供服务,因此在客户端上还是可以访问到刚才创建的文件。
注:如果要让群集停止对客户端提供服务-对着群集右键-其他操作-关闭群集,以后选择启动群集服务来重新启动。

在群集中添加节点,移除节点与删除群集

添加节点

通过单击文件服务器MyClusterFS 右边停止角色来暂停文件服务器

在新节点服务器上完成所有设置:例如安装网卡,设置防火墙等。
到其他节点上通过故障转移群集管理器验证设置来验证此行节点是否符合要求
完成验证后,点击添加节点添加

添加完成后,界面会提示现在的节点数量变成奇数(3个节点),所以应该更改仲裁配置(例如改为节点多数)。配置群集仲裁设置-使用默认设置让系统自动决定仲裁配置。

单击文件服务器MyClusterFS 右边启用角色来重新启动服务器

移除节点

如果要从群集中移除某个节点服务器,先查看该节点是否为文件服务器的所有者,如果是,转移到其他节点。

接着通过逐出来移除此节点

删除群集

请按照以下步骤来删除群集。

必须先删除群集内的角色后才可以将群集删除。

然后销毁群集

群集删除后,建议到域控上确认,确认computers容器内与群集名称相同的计算机对象已经被禁用或不存在此对象,否则下一次重建相同名称的群集时,或出现警告。