在Windows Server 2012 R2 DataCenter 环境中搭建集群之前,首先要对Windows服务器故障转移集群(Windows Server Failover Cluster,简称WSFC)有基本的了解。WSFC必须部署在域管理环境中,由多台服务器组成,每台服务器称作一个“结点”(Node),每个结点上都运行了Windows服务器故障转移集群服务,整个集群系统允许部分结点掉线、故障或损坏而不影响整个系统的正常运作。集群自动检测结点的健康状态,一旦活跃结点发生异常,变为不可用,则另一台结点服务器自动接管发生故障的服务器,升级为活跃服务器,并继续处理任务,一台服务器接管发生故障的服务器的过程称为"故障转移"。
一,Windows故障转移集群的基本组成要素
结点和活跃结点(Active Node):组成集群的每台Server叫做一个结点,在同一时刻,只能有一个结点处理用户的请求,提供服务,该结点叫做活跃结点;活跃结点是由集群决定的,对用户完全透明;
虚拟服务器(Virtual Server):集群中的所有结点组成一个虚拟服务器,也就是说,从集群的外部看,只能看到一个服务器,而看不到背后的一堆结点服务器,虚拟服务器拥有自己的机器名和IP地址,也称作“虚拟网络名”和“虚拟IP”,用户通过虚拟网络名和虚拟IP地址来访问集群,实际上,虚拟网络名和虚拟IP都在DNS服务器上登记在册,和物理服务器的网络名和IP地址没有任何区别;
共享磁盘(Shared Array):所有需要在结点之间共享的资源,例如,SQL Server数据文件,错误日志等,都被存储在Shared Array上,不需要共享的文件则被存储在每个结点的本地磁盘(Local Disk)上;
私有网络和公共网络:组成集群的多个结点之间,通过私有网络(Private Network)和公共网络(Public Network)连接起来,结点之间通过私有网络发送“心跳信号”来感知彼此是否工作正常;公共网络用来被集群外部的客户端使用的网络,外部客户端通过公共网络访问集群节点;
![](https://i-blog.csdnimg.cn/blog_migrate/53a76c4d5b787dc87cd64798bf28b847.png)
二,Windows 集群提供的功能
Windows集群无法提供负载均衡的能力,在任意时刻,集群中只有一个结点能够处理用户的请求,而其他结点都处于空闲状态,处理用户请求的结点叫做活跃(Active Node),活跃结点是由集群决定的,对用户完全透明。
1,健康检测和自动故障转移
AlwaysOn高可用技术利用Windows服务器故障转移集群的健康检测和自动故障转移特性,因此,AlwaysOn必须建立在WSFC之上:
健康检测:结点之间,通过私有网络互相发送心跳信号来感知彼此是否工作正常,这类信号称作“心跳线”,一旦某台服务器因为异常而无法回应信号,那么剩余的结点就认为该结点“Dead”,把该结点从当前集群排除;集群的整体健康状况,是由集群中结点的仲裁投票决定的。
自动故障转移:以“心跳信号”监视各个结点服务器的健康状况,如果主结点(Primary Node)不能响应心跳信号,那么另一台服务器自动升级为Primary Node,继续处理任务,故障转移的过程不会对应用程序造成影响,用户甚至察觉不到虚拟服务器内部的故障转移;
WSFC提供的功能很多,但是,部署AlwaysOn只需要了解这两个机制,对于WSFC的其他应用,可以暂时不用了解,下面的第三,四,五章节,分步骤搭建WSFC。
2,集群的仲裁配置
仲裁投票(Quorum Voting):Quorum是仲裁,法定数量的意思,在仲裁模式下,仲裁配置决定集群在正常提供服务时,能够容忍多少个结点发生故障。在集群中的故障结点达到仲裁(Quorum)规定的数量之前,集群能够继续提供服务。
WSFC在集群的结点之间进行健康检测和仲裁投票,每一个结点通过周期性地发送心跳信号,检测其他其他结点的健康状态,并和其他结点共享健康数据,无法响应心跳信号的结点被认为处于异常状态,集群的所有健康结点都会很快知道该结点出现故障。
仲裁结点集合是投票结点和见证结点(Witness)结合,仲裁结果由多数(Majority)结点决定,集群整体的健康状态是由周期性的仲裁投票的结果决定的,WSFC根据仲裁投票的结果,执行自动故障转移或者使集群离线:如果仲裁结点集合(Quorum Node Set)的投票结果表明大多数结点是健康的,那么集群将进行故障转移,继续提供服务;如果投票结果是少数结点,那么集群将处于离线状态。关于集群的仲裁配置,请参考我的随笔:《故障转移集群的仲裁》。
3,集群的资源组
资源组:资源组是由一个或多个资源组成的组,故障转移是以资源组为单位发生的,在任何时候,每个资源组都仅属于集群中的一个结点,该结点是活跃结点。在配置资源组时,一个资源所依赖的其他资源必须和该资源配置在同一个资源组中,跨资源组的依赖关系是不存在的。
活跃结点拥有集群的资源组,能够处理客户端的请求,也就是说,拥有资源的结点为用户提供服务。活跃结点也称作主结点(Primary Node),集群中的其他结点称作辅助结点(Secondary Nodes),在Primary Node出现故障时,集群自动将资源转移到其他辅助结点。基于健康检测的策略控制自动故障转移的过程,故障转移实际上是资源拥有关系(Resource Ownership)的转移。
三,安装Windows Server Failover Clustering(WSFC)服务
集群的每个结点服务器都必须在同一域中,并且都安装了Windows Server Failover Clustering(WSFC)服务,安装的过程十分简单,按照该章节的步骤,只需几步就安装成功。
1,打开服务器管理器(Server Manager),选择“Add roles and features”
![](https://i-blog.csdnimg.cn/blog_migrate/45b646a6820a9e3bd29f9a2b92630a07.png)
2,在添加功能向导中,勾选“Failover Clustering”,点击“Next”,开始安装
![](https://i-blog.csdnimg.cn/blog_migrate/900196692785808240f30872dd758d4d.png)
3,在“Confirmation” Tab中,进行确认,点击“Instanll”按钮,进行安装操作
![](https://i-blog.csdnimg.cn/blog_migrate/8ba498b05e669fa905af43bd562ab2d9.png)
四,配置故障转移集群
1,打开故障转移机器管理器
安装Failover Clustering 功能完成之后,打开Server Manager,在菜单Tools中选择“FailOver Cluster Manager”,打开故障转移机器管理器
![](https://i-blog.csdnimg.cn/blog_migrate/b0ba940838a3ac33890bf287a2abebe0.png)
2,在故障转移管理器中,创建集群
用户在故障转移管理器(Failover Cluster Manager)中,能够对已经创建成功的Failover Cluster进行管理,查看集群的信息,监控集群的状态和验证(Validate)集群的配置等。在截图的标记处,点击Create Cluster,开始创建新的集群。
![](https://i-blog.csdnimg.cn/blog_migrate/ea3bf91cec99d3057deac5cb138a15f8.png)
3,添加集群的结点服务器
输入集群的结点服务器名称,节点服务器必须位于相同网段中,能够相互访问;
![](https://i-blog.csdnimg.cn/blog_migrate/b852d583e6a3eb2e63166dcb5a0cad00.png)
4,验证警告
如果需要对集群的基本环境,包括硬件,进行WSFC需求验证,可以选择“Yes”,本例选择“No”,不验证
![](https://i-blog.csdnimg.cn/blog_migrate/2cc3345456d613abc904e59ff99f0d51.png)
5,定义“用于管理群集的访问点”
为集群命名,Cluster Name实际上是虚拟服务器的网络名;集群的IP地址由系统自动配置,该IP地址实际上是虚拟服务器的IP地址;
![](https://i-blog.csdnimg.cn/blog_migrate/b1637599ef17007c4e04c2671e74f70e.png)
6,确认配置信息,点击“Next”,创建新的集群
![](https://i-blog.csdnimg.cn/blog_migrate/cd0ba0094188a8b553ef76e4e9113569.png)
五,配置集群仲裁设置
当集群中的结点发生故障时,会由其他结点接手继续提供服务,不过,当结点之间通信出现问题,或大多数结点发生故障时,集群就会停止服务,可是集群可以容忍多少个结点发生故障呢?这要由仲裁配置(Quorum Configuration)决定,仲裁配置使用多数原则,只要集群中健康运行的结点数量达到仲裁规定的数量(多数结点投赞成票),集群就会继续提供服务,否则集群就停止提供服务。在停止提供服务期间,正常结点持续监控故障结点是否恢复正常,一旦正常结点的数量恢复到仲裁规定的数量,集群就恢复正常,继续提供服务。
1,返回到故障转移集群管理器,在“Failover Cluster Manage”下拉列表中展示创建成功的集群
![](https://i-blog.csdnimg.cn/blog_migrate/2b7e003ce10a42b37aee03625ae02f81.png)
2, 右击群集节点,在上下文菜单中点击“More Actions”,在扩展菜单中选择“Configure Cluster Quorum Settings”为该集群配置仲裁
![](https://i-blog.csdnimg.cn/blog_migrate/652cb0f8941b04c40423c8a676723ab0.png)
3,打开配置集群仲裁的向导
![](https://i-blog.csdnimg.cn/blog_migrate/97f0fb997a37e2bd6f6ce61883133ce4.png)
4,选择仲裁配置选项,使用默认的仲裁配置,由集群决定仲裁管理选项
微软推荐配置一个Quorum Witness,帮助实现集群的最高可用性,如果对仲裁配置不是很了解的话,可以使用默认选项,由集群决定仲裁配置。
![](https://i-blog.csdnimg.cn/blog_migrate/2f67ab6724436d550b32d1f2fd6a4e00.png)
5,确认仲裁配置选项,点击“Next”,开始配置集群的仲裁设置
![](https://i-blog.csdnimg.cn/blog_migrate/de14481cc3c808797243bc504fe40da4.png)
至此,Windows 服务器故障转移集群搭建完成,用户可以在WSFC的基础之上,部署AlwaysOn高可用技术,创建可用性组(Availability Group)。
参考文档:
Failover Cluster Step-by-Step Guide: Configuring the Quorum in a Failover Cluster
从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)