一 WSFC 简介
1.1 WSFC 概述
“Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性。SQL Server 2012 利用 WSFC 服务和功能支持 AlwaysOn 可用性组和 SQL Server 故障转移群集实例。
Windows Server 故障转移群集提供了各种基础结构功能来支持所承载的服务器应用程序(如 Microsoft SQL Server 和 Microsoft Exchange)的高可用性和灾难恢复方案。 如果一个群集节点或服务失败,则该节点上承载的服务可通过“故障转移”的过程自动或手动转移到另一个可用节点。
WSFC 群集中的节点协同工作,共同提供如下所示功能:
群集中的每个节点上维护着 WSFC 服务和承载的应用程序元数据。除了承载的应用程序设置之外,此元数据还包括 WSFC 配置和状态。对一个节点的元数据或状态进行的更改会自动传播到群集中的其他节点。
群集中的各节点可能提供物理资源,如直接连接存储、网络接口和对共享磁盘存储的访问。承载的应用程序将其本身注册为群集资源,并可配置启动和运行状况对于其他资源的依赖关系。
节点间和主节点运行状况检测是通过结合使用信号样式的网络通信和资源监视来实现的。群集的总体运行状况是由群集中节点仲裁的投票决定。
每个资源都配置为由主节点承载,并且每个资源均可自动或手动转移到一个或多个辅助节点。基于运行状况的故障转移策略控制节点之间资源所有权的自动转移。在发生故障转移时通知节点和承载的应用程序,以便其做出适当的响应。
1.2 WSFC 术语和定义
“Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性。
- 故障转移群集实例 (Failover cluster instance)
一个 Windows 服务实例,用于管理 IP 地址资源、网络名称资源和运行一个或多个应用程序或服务所需的其他资源。客户端可以使用网络名称访问组中的资源,类似于使用计算机名称访问物理服务器上的服务。但是,因为故障转移群集实例是一个组,所以该实例可以故障转移到另一个节点,而不会影响基础名称或地址。
作为服务器群集的活动或非活动成员的 Microsoft Windows Server 系统。
节点可以拥有的物理实体或逻辑实体,可联机和脱机、在节点间移动和作为群集对象进行管理。在任何时间点,群集资源只能为单个节点所拥有。
作为单个群集对象管理的群集资源集合。通常,资源组包含运行特定应用程序或服务所需的所有群集资源。故障转移和故障回复始终作用于资源组。
- 资源依赖项 (Resource dependency)
一个资源所依赖的另一个资源。如果资源 A 依赖于资源 B,则 B 是 A 的依赖项。
- 网络名称资源 (Network name resource)
作为群集资源进行管理的逻辑服务器名称。网络名称资源必须与一个 IP 地址资源结合使用。
资源组优先运行的节点。每个资源组都按优先顺序与首选的所有者列表关联。在自动故障转移过程中,资源组将移动到首选所有者列表中的下一个首选节点。
可在其上运行资源的辅助节点。每个资源组都与一系列可能的所有者关联。资源组仅可故障转移到作为可能的所有者列出的节点。
故障转移群集中的仲裁配置,用于确定群集可以承受的节点故障数。
即使仅有仲裁所需的少数元素进行通信,该过程也会启动群集。
二 SQL Server AlwaysOn 和 WSFC
2.1 结合概述
SQL Server 2012 AlwaysOn 是一个充分利用 WSFC 的新的高可用性和灾难恢复解决方案。AlwaysOn 提供一个集成、灵活的解决方案,用于提高应用程序可用性,并提供更好的硬件投资回报,还简化高可用性部署和管理。
AlwaysOn 可用性组和 AlwaysOn 故障转移群集实例将 WSFC 用作一种平台技术,将组件注册为 WSFC 群集资源。相关的资源将合并为一个“资源组”,这些资源可能依赖于其他 WSFC 群集资源。这样,WSFC 群集服务就可以感测并标明是否需要重新启动 SQL Server 实例,或自动将其故障转移到 WSFC 群集中的不同服务器节点上。
2.2 实例级高可用性以及 AlwaysOn 故障转移群集实例
一个 AlwaysOn“故障转移群集实例”(FCI) 是一个安装在 WSFC 群集中的节点上的 SQL Server 实例。这种类型的实例的资源依赖于共享磁盘存储(通过 Fibre 通道或 iSCSI SAN)和虚拟网络名称。虚拟网络名称的资源依赖于一个或多个虚拟 IP 地址(每个地址位于不同子网中)。SQL Server 服务和 SQL Server 代理服务均注册为资源,且都依赖于虚拟网络名称资源。
发生故障转移时,WSFC 服务将实例的资源所有权转移到指定的故障转移节点。然后,SQL Server 实例在故障转移节点上重新启动,数据库恢复如常。在任何给定时刻,群集中只有一个节点可以承载 FCI 和基础资源。
注意:AlwaysOn 故障转移群集实例要求使用对称共享磁盘存储,如存储区域网络 (SAN) 或 SMB 文件共享。 共享磁盘存储卷必须可用于 WSFC 群集中所有可能的故障转移节点。
2.3 数据库级高可用性与 AlwaysOn 可用性组
“可用性组”是一组共同实现故障转移的用户数据库。一个可用性组包含一个主“可用性副本”和一至四个辅助副本,这些副本通过基于 SQL Server 日志的数据移动来实现数据保护以进行维护,无需共享存储。每个副本均由 WSFC 群集的不同节点上的 SQL Server 实例承载。可用性组和相应的虚拟网络名称注册为 WSFC 群集中的资源。
主副本节点上的“可用性组侦听器”响应要求连接到虚拟网络名称的传入客户端请求,侦听器基于连接字符串中的属性将每个请求重定向到相应的 SQL Server 实例。
当发生故障转移时,不是将共享物理资源的所有权转移到另一个节点,而是利用 WSFC 重新配置另一个 SQL Server 实例上的辅助副本,使其成为可用性组的主副本。然后,将可用性组的虚拟网络名称资源转移到该实例。
在任何给定时刻,只有单个 SQL Server 实例可承载可用性组数据库的主副本,而所有关联的辅助副本都必须分别驻留在单独的实例上,并且每个实例必须驻留在单独的物理节点上。
注意:AlwaysOn 可用性组不要求部署故障转移群集实例或使用异步共享存储(SAN 或 SMB)。
故障转移群集实例 (FCI) 可与可用性组结合使用,以提高可用性副本的可用性。但是,为了防止 WSFC 群集中出现潜在的争用情况,不支持可用性组自动故障转移到驻留在 FCI 上的副本,也不支持从驻留在 FCI 上的副本自动故障转移到可用性组。
三 WSFC 运行状况监视和故障转移
3.1 概述
AlwaysOn 解决方案的高可用性是通过积极主动地监视物理和逻辑 WSFC 群集资源的运行状况,以及自动故障转移到冗余硬件和重新配置冗余硬件来实现的。系统管理员还可以对可用性组或 SQL Server 实例启动从一个节点到另一个节点的“手动故障转移”。
3.2 节点、故障转移群集实例和可用性组的故障转移策略
“故障转移策略”是在 WSFC 群集节点、SQL Server 故障群集实例 (FCI) 以及可用性组级别配置的。这些策略基于非正常运行的群集资源状态和节点响应的严重性、持续时间和频率,它们可以触发服务重新启动或将群集资源从一个节点“自动故障转移”到另一个节点,或者可以触发将可用性组主副本从一个 SQL Server 实例移到另一个此类实例。
可用性组副本的故障转移不影响基础 SQL Server 实例。FCI 的故障转移将随实例一起移动所承载的可用性组副本。
3.3 WSFC 资源运行状况检测
WSFC 群集节点中的每个资源都可以定期或按需报告其状态和运行状况。很多情况可以指示资源故障;例如,电源故障、磁盘或内存错误、网络通信错误或服务不响应。
WSFC 群集资源(如网络、存储或服务)可能彼此依赖。资源的累计运行状况由持续汇总其运行状况和其每个资源依赖项的运行状况来确定。
3.4 WSFC 节点间运行状况检测和仲裁投票
WSFC 群集中的每个节点都参与周期性信号通信,以便与其他节点共享该节点的运行状况。未响应的节点被认为是处于故障状态。
“仲裁”节点集是 WSFC 群集中的大多数投票节点和见证服务器。WSFC 群集的总体运行状况和状态是由定期“仲裁投票”确定的。仲裁的存在意味着群集运行状况正常,且能提供节点级别的容错能力。
“仲裁模式”在 WSFC 群集级别配置,用于指示用于仲裁投票的方法以及执行自动故障转移或使群集脱机的时间。
提示:WSFC 群集中最好始终有奇数数目的仲裁投票。为进行仲裁投票,不必在群集的所有节点上安装 SQL Server。其他服务器可以充当仲裁成员,或者可以将 WSFC 仲裁模式配置为将远程文件共享用作补救措施。
3.5 通过强制仲裁进行灾难恢复
根据操作实践和 WSFC 群集配置,您可以引发自动故障转移和手动故障转移,同时仍保持可靠、容错的 SQL Server AlwaysOn 解决方案。但是,如果 WSFC 群集中合格投票节点的仲裁彼此之间无法通信,或者 WSFC 群集无法执行运行状况验证,则 WSFC 群集可能会脱机。
如果 WSFC 群集由于计划外灾难或由于持续的硬件或通信故障而导致脱机,则需要管理员手动干预才能“强制仲裁”,并在非容错配置中将仍有效的群集节点变为联机状态。
之后,还必须执行一系列步骤来重新配置 WSFC 群集,恢复受影响的数据库副本,并重新建立一个新仲裁。
四 SQL Server AlwaysOn 组件与 WSFC 的关系
SQL Server AlwaysOn 和 WSFC 功能和组件之间存在多层关系。
- AlwaysOn 可用性组承载于 SQL Server 实例上。
指定将连接到主数据库或辅助数据库的逻辑可用性组侦听器名称的客户端请求将重定向至基础 SQL Server 实例或 SQL Server 故障转移群集实例 (FCI) 的相应实例网络名称。
- “SQL Server 实例”当前承载于单个节点上。
如果存在,则独立的 SQL Server 实例始终驻留在具有静态实例网络名称的单个“节点”上。如果存在,则 SQL Server FCI 在两个或多个具有单个虚拟“实例网络名称”的可能的故障转移节点之一上处于活动状态。
每个节点上存储了所有节点的WSFC 配置元数据和状态。每个服务器都为用户或系统数据库提供非对称存储或共享存储 (SAN) 卷。在一个或多个 IP 子网上,每个服务器都至少具有一个物理网络接口。
- WSFC 服务监视一组服务器的运行状况和管理它们的配置。
“Windows Server 故障转移群集 (WSFC)”服务将对“WSFC 配置”元数据和状态的更改传播到群集中的所有节点。部分元数据和状态可能存储在 WSFC 仲裁见证服务器远程文件共享上。两个或更多活动的节点或见证服务器构成一个仲裁,以便对 WSFC 群集的运行状况进行投票。
- AlwaysOn 可用性组注册表项是 WSFC 群集的子项。
如果您删除后重新创建了 WSFC 群集,则必须在原始 WSFC 群集上启用了 AlwaysOn 可用性组的每个服务器实例上都禁用然后重新启用 AlwaysOn 可用性组功能。
SQL Server AlwaysOn 组件上下文关系图
参考官方:https://docs.microsoft.com/zh-cn/previous-versions/sql/sql-server-2012/hh270278(v%3dsql.110)
- Windows故障转移群集(WSFC)的备份和恢复
使用wbadmin进行备份和恢复将C盘数据备份到E盘查看备份的版本以及包含的items模拟群集角色被误删除进行恢复操作检查恢复的效果 WSFC群集的备份和恢复功能是使用Windows Server B ...
- Windows 2008 故障转移群集介绍
转载:http://dufei.blog.51cto.com/382644/902026 今天有客户问起Windows 群集的相关内容,毕竟Windows Server2008所支持的群集技术和Win ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术之 -- Windows故障转移群集
WSFC 群集 (WSFC cluster)“Windows Server 故障转移群集”(WSFC) 群集是一组独立的服务器,它们共同协作以提高应用程序和服务的可用性. 故障转移群集实例 (Fail ...
- SQL Server ->> 高可用与灾难恢复(HADR)技术 -- AlwaysOn(实战篇)之建立活动目录域、DNS服务器和Windows故障转移群集(准备工作)
因为篇幅原因,AlwaysOn可用性组被拆成了两部分:理论部分和实战部分.而实战部分又被拆成了准备工作和AlwaysOn可用性组搭建. 三篇文章各自的链接: SQL Server ->> ...
- Windows 2016 无域故障转移群集部署方法 超详细图文教程 (二)
上一章我们配置了一台设备,接着根据那个配置,配置其它设备.这里我配置了三台设备: 创建故障转移群集,并添加设备. 之前的操作都是每台服务器都要做的,而这个操作,只需要任选一台去做即可,我这里选d1 1 ...
- 01-WIN2012R2+SQL2016故障转移群集的搭建
一.前期准备 1.1.准备4台机器 机器名 IP 功能 jf-yukong 192.168.10.200 做域控服务器 Jf-storage 192.168.10.201 做ISCSI存储服务器 J ...
- 搭建Windows故障转移群集
标签:SQL SERVER/MSSQL SERVER/数据库/DBA/windows 概述 本章内容主要讲述搭建windows故障转移群集 环境: 域服务器:windows server 2008 R ...
- SQL Server--疑难杂症之坑爹的Windows故障转移群集(转)
估计是春节前最后一次写博客,也估计是本年值班最后一次踩雷,感叹下成也SQL SERVER,败也SQL SERVER. --======================================= ...
- SQL Server--疑难杂症之坑爹的Windows故障转移群集
--============================================================== 估计是春节前最后一次写博客,也估计是本年值班最后一次踩雷,感叹下成也S ...
随机推荐
- 2019CCPC秦皇岛 K MUV LUV UNLIMITED(博弈)
MUV LUV UNLIMITED Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Othe ...
- CSS修饰文档
定义字体类型 <html> <head> <meta http-equiv="Content-Type" content="text/htm ...
- 了解web漏洞-sql注入
1:为什么要学web漏洞? 作为一个运维人员,日常工作就是保障服务器和网站的业务正常运行,平时也需要对服务器的安全工作加固,说到防护攻击问题,那么久必须去了解攻击者是怎么对服务器发动的一个流程,这样才 ...
- 《Java基础知识》Java多态和动态绑定
在Java中,父类的变量可以引用父类的实例,也可以引用子类的实例. 请读者先看一段代码: public class Demo { public static void main(String[] ar ...
- test-hellow world!
//for C #include<stdio.h> int main() { printf("hellow world!"); return 0; } #for pyt ...
- SpringBoot微服务电商项目开发实战 --- api接口安全算法、AOP切面及防SQL注入实现
上一篇主要讲了整个项目的子模块及第三方依赖的版本号统一管理维护,数据库对接及缓存(Redis)接入,今天我来说说过滤器配置及拦截设置.接口安全处理.AOP切面实现等.作为电商项目,不仅要求考虑高并发带 ...
- 小白的springboot之路(九)、集成MongoDB
0.前言 MongoDB是一个高性能.开源的文档型数据库,是当前nosql数据库中最热门的一种,在企业中广泛应用:虽然前段时间更改了开源协议导致被很多企业舍弃,但主要是对云服务商影响较大,对我们来说其 ...
- 记一个AbstractMethodError
如下,引入FastJsonHttpMessageConverter 之后,导致了新的错误: @Override public void configureMessageConverters( List ...
- Java方法之重载
Java方法之重载 本篇探究Java中的方法重载.那么,什么是重载呢?先上一串代码: package com.my.pac06; /** * @author Summerday * @date 201 ...
- Docker + WordPress搭建个人博客
WordPress是目前非常受欢迎的开源博客系统,今天使用Docker + WordPress搭建个人博客,整个过程非常丝滑. 搭博客先要准备域名和服务器,昨天在阿里云买了个.top的域名花了5块钱( ...