前言:


本文将更加深入地讲解WSFC所需的核心组件。由于AlwaysOn和FCI都需要基于WSFC之上,因此我们首先要了解在Windows群集发生了什么。不仅可以优化SQL Server的高可用设计和部署高,也可以为后续问题侦测过程提供支持。
本节将涉及以下内容:
  • Windows Server Active Directory Domain(Windows Server活动目录域)
  • DNS Server
  • DHCP Server
  • TCP/IP 网络
  • Windows Server 企业版(2008)或标准版(2012)的最小计算机节点数。
但是我们首先需要了解“什么是WSFC”及其工作机制。


WSFC简介及工作机制:

首先看看在一个没有任何应用的裸群集包含一些什么配置。在这里,我们使用5个节点、无共享存储,将在后续用于部署无FCI的AlwaysOn的群集。Windows Server Failover Cluster(下称WSFC)是一种特殊的Windows Server 功能,在使用之前必须先启用。可以在Windows中使用PowerShell或者【角色和功能】向导中启用。一旦功能被启用,那么Failover Cluster(故障转移群集)会使用一个在每台群集机器中的Windows 服务(Cluster service)作为伙伴节点中通讯之用。同时还可以作为节点同步和监控已集群的应用的健康状况。
当由于某些原因导致应用无法响应时,基于资源策略的一系列步骤就会被触发执行。故障从大类分为软件和硬件故障。如果是软件故障比如已集群的SQL Server服务被终止,那么会自动尝试在同一台机器上重启服务。但是如果是硬件故障,那么故障转移就会马上启动。
不管软硬件故障,如果Failover需要重启已集群的应用的服务,通常这个服务会在一个伙伴节点中重启。也就是说,服务上的所有连接(这里特指数据库引擎)会中断。然后在伙伴节点上,SQL Server数据库引擎会重启并恢复所有数据库,回滚、重做必要的日志。
前面提到过,集群服务同样监控操作系统及已集群应用的常规状态和健康情况。对于SQL Server引擎就是周期性检测服务是否“IsAlive”,对于操作系统,“isAlive”的周期为5秒一次。
IsAlive检测每60秒触发一次,然后在5秒内测量。如果在5秒内没有响应,意味着该节点的群集服务不可用。未能在指定事件作出响应将会启动对应用、资源的故障转移。详细资料可在官方文档中查阅:在故障转移群集在 Windows Server 中的新增功能
Windows Server 2012 R2群集节点健康侦测默认时间值

群集通用属性 非Hyper-V的群集角色默认值 Hyper-V群集角色默认值
相同子网阈值 5 秒 10 秒
跨子网阈值 5 秒 20 秒

那么,一个常规的配置会是怎样的?大家可以看下下面的这个图,可以看到一个基于WSFC的典型网络。其中有域控制器(Domain Controller,包含了DNS区域的功能)、TCP/IP网络及群集节点。





我们也不妨一起看看基础设施的依赖关系,这里建立了一个树状结构。依赖树的组件如下图:



蓝色虚线意味着是可选项,AlwaysOn和FCI是可以独立部署互不依赖的。


TCP/IP 网络:

我们从基础开始,首先需要一个固定的TCP\IP网络。通常由以太网交换机和网线(传统的铜线,1Gbps)组成。计算机对象通过patch\CAT5网线插入各种网络交换机。Windows Server 群集模型在持续改进,已经不再强制需要专用心跳适配器。在Windows Server 2003时代,这个为必须项,从2008开始发生了很大的改变。新的群集模型使用一个特定的虚拟适配器,这个适配器绑定到可用的物理网卡上用于内部节点之间心跳流量的传输。这个虚拟适配器类似下图:




注意:虽然不在强制需要专用的心跳网卡,但是还是必须有多个冗余的TCP/IP网络。
在第一个图中的5个节点通过public网络互联,这个网络是提供给SQL Server实例用于为客户端提供服务。同时这个网络也用于群集监控和SQL Server资源在启动故障转移时使用。并且这里也有一个冗余的TCP/IP网络用于快速恢复。虽然这个冗余网络并非强制要求,但是作为最佳实践,一个可用的、独立的冗余网络能提供最佳的可用性。并且这个冗余网络还可以用于SQL Server备份(特指网络备份)、镜像端点流量传输时使用。群集虚拟适配器使用一个在APIP(Automatic Private IP,自动专用IP)范围中的地址,以便在群集节点之间隔离通讯。


Domain Name System,DNS:

一个可靠的微软客户端网络还需要有一个Domain Name System(DNS,域名系统)服务器的存在。在微软客户端网络中,计算机对象(服务器和工作站)都有一个唯一的计算机名,并分配一个唯一的IP地址。这个计算机名和IP地址在计算机本地网卡中注册信息。但是当你在TCP/IP网络中需要通过计算机名引用另外一台计算机时,你就需要解决计算机名到IP地址之间的解析问题。这就是DNS出现的原因。
DNS服务器可以是一台网络中的计算机,也可以是Windows Server域控中启用了DNS角色的机器。DNS使用区域(zones)来解决计算机组名问题。一个区域可以是正向查找区域(强制的)或者一个反向查找区域(可选的),它们的操作如下:
  • 正向查找区域:解析机器名→IP地址
  • 反向查找区域:解析TCP/IP地址→计算机名

Dynamic Host Configuration Protocol,DHCP:


虽然在上面树状图中没有出现并且不是必要要求,但是我们还是要看看DHCP。如果希望自动管理服务器TCP/IP地址分配工作,那么就需要一个DHCP服务器。在常规部署中,通常会部署在NDS服务器上。DHCP是从DHCP管理员指定的保留池中在一台新电脑启动时分配IP地址的协议。典型的通过DHCP的网络配置绑定的网卡大概如下:






Active Directory Domain:活动目录域

在整套环境中,必须要有一台启用了Active Directory Domain服务角色的Windows Server 计算机。这个角色由DCPROMO.EXE这个cmd命令创建在Windows域中。按着向导一步一步继续下去之后,就可以为网络客户端提供Active Directory 身份验证和管理网络资源。常见的资源有:
  • Windows Server Failover Clusters
  • 文件共享
  • 打印机
  • 用户
注意在把一台Windows Server提升到域控制器(Domain Controller)时,如果没有DNS服务器绑定到本地网卡,会提示你安装DNS角色。同时也会提示你在AD目录中存储DNS区域。这个可以提高DNS区域复制的性能及安全性。
AD域提供了对用户、计算机、打印机等的中央管理功能。可以使得一个账号,用于运行Windows服务并访问网络资源同时又减少权限方面的管控开销。



Windows Server Failover Cluster:


在部署Windows Server Failover Cluster(WSFC)之前,需要满足以下最低要求:
  • 一个TCP/IP网络
  • 一个AD域
  • 一个DNS服务器
没有上面的资源,域和群集都无法工作。作为DBA,对这些有基本的了解是必要的。WSFC把一系列节点组合成到一个中央管理实体中。Windows 群集的第一个操作是创建一个客户端接入点(Client Access Point)。这个接入点要求一个唯一虚拟网络名和一个唯一虚拟IP地址。这里的“虚拟”意味着这个对象不绑定到任何物理计算机中。之所以要为虚拟是因为这个资源可能需要从一台计算机节点转移到另外一台计算机节点中。
当这些资源(名字和IP)在节点间故障转移时,首先需要在当前节点中解除注册,然后再到目标伙伴节点中重新注册。意味着从一个服务器的网卡中解绑然后在另外一个服务器的网卡中绑定。
在WSFC创建后,群集节点由一个单独的接入点管理。这个在群集安装过程中就会定义。假设对共享存储没有要求,那么群集现在就已经可用于应用程序的集群,如Exchange、SQL Server或文件服务器服务。

SQL Server Failover Cluster Instance:FCI

SQL Server FCI在发生软硬件故障时进行实例级别的故障转移,避免SQL Server实例永久脱机。在过去,FCI是在过去SQL Server高可用的主要技术,但是共享存储的硬性要求成为它的唯一缺点。共享存储的故障会直接导致FCI脱机并无法启动。
另外需要了解的是每个新实例的部署都需要有自己的唯一虚拟网络名和唯一虚拟IP地址。实例不可共享硬盘文件路径、虚拟IP地址或虚拟网络名,他们必须是“唯一”的。FCI完全取决于WSFC提供的资源管理。


SQL Server AlwaysOn Availability Group:

AlwaysOn 可用组是SQL 2012引入的新的高可用技术。它借助WSFC进行资源组的管控。AlwaysOn组通常包含一个主数据库集合。而数据库的副本被封装到可用组(Availability Groups)中,成为“副本”并传送到其他实例上提供只读功能。
SQL Server 可用组的其中一个新功能是创建侦听器服务。用于提供一个中央客户端接入点用于访问Availability Group中绑定到侦听器的数据库。配置完只读路由后,侦听器会把意向读的流量重定向到次要只读数据库,分摊主副本的流量。
这部分内容是本系列的主题,将在后续继续介绍。



小结:

本节对整个环境进行了概要介绍,下节开始会着重对这些内容/技术进行专门的详细讲解。首先将会是作为基础的WSFC。


SQL Server AlwaysON从入门到进阶(4)——分析和部署Windows Server Failover Cluster













SQL Server AlwaysON从入门到进阶(3)——基础架构的更多相关文章

  1. SQL Server AlwaysON从入门到进阶(2)——存储

    本文属于SQL Server AlwaysON从入门到进阶系列文章 前言: 本节讲解关于SQL Server 存储方面的内容,相对于其他小节而言这节比较短.本节会提供一些关于使用群集或者非群集系统过程 ...

  2. SQL Server AlwaysON从入门到进阶(1)——何为AlwaysON?

    本文属于SQL Server AlwaysON从入门到进阶系列文章 本文原文出自Stairway to AlwaysOn系列文章.根据工作需要在学习过程中顺带翻译以供参考.系列文章包含: SQL Se ...

  3. SQL Server AlwaysON从入门到进阶(6)——分析和部署AlwaysOn Availability Group

    前言:   本节是整个系列的重点文章,到现在,读者应该已经对整个高可用架构有一定的了解,知道独立的SQL Server实例和基于群集的SQL Server FCI的区别.上一节已经介绍了如何安装SQL ...

  4. 宣布正式发布 Windows Azure Notification Hub,新增 SQL Server AlwaysOn 可用性组侦听器支持

    今天,我们非常高兴地宣布,针对使用 Windows Azure 的移动和企业开发人员推出一些新功能.这些新功能可以减少构建移动应用程序的开发时间和成本,并能帮助企业开发人员实现高可用性和全球业务连续性 ...

  5. 最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目

    最近帮客户实施的基于SQL Server AlwaysOn跨机房切换项目 最近一个来自重庆的客户找到走起君,客户的业务是做移动互联网支付,是微信支付收单渠道合作伙伴,数据库里存储的是支付流水和交易流水 ...

  6. 从0开始搭建SQL Server AlwaysOn 第一篇(配置域控)

    从0开始搭建SQL Server AlwaysOn 第一篇(配置域控) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www.cnb ...

  7. 从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群)

    从0开始搭建SQL Server AlwaysOn 第二篇(配置故障转移集群) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

  8. 从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn)

    从0开始搭建SQL Server AlwaysOn 第三篇(配置AlwaysOn) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://w ...

  9. 从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点)

    从0开始搭建SQL Server AlwaysOn 第四篇(配置异地机房节点) 第一篇http://www.cnblogs.com/lyhabc/p/4678330.html第二篇http://www ...

随机推荐

  1. Android:认识R类、findViewById方法查找组件、@string查找字符、@color查找颜色、@drawable查找图片、@dimen某个组件尺寸定义、项目引入资源国际化

    导入 之前都是断断续续的看了一些于如何使用android开发的文章.资料等,到目前位置很多基础的东西都不清楚,于是去学习了别人的课程,才了认识了R类.findViewById方法查找组件.项目引入资源 ...

  2. view-xpath

    https://addons.mozilla.org/en-US/firefox/ WebDriver Element Locator

  3. nginx location的命中过程

    1 先判断精准命中,立即返回结果并结束解析过程 2 判断普通命中,如果有多个命中,"记录"下"最长"的命中结果(注意:记录但不结束,最长的为准) 3 继续判断正 ...

  4. 0418 jQuery笔记(添加事件、each、prop、$(this))

    1.添加点击事件.each.prop.$(this) //全选框的被动操作 //定义一个标志保存最终状态 var flag = false; //为每一个选择框添加点击事件,数组.click() $( ...

  5. [LeetCode] Find Smallest Letter Greater Than Target 找比目标值大的最小字母

    Given a list of sorted characters letters containing only lowercase letters, and given a target lett ...

  6. 各种电脑进入BIOS快捷键

    组装机主板 品牌笔记本 品牌台式机 主板品牌 启动按键 笔记本品牌 启动按键 台式机品牌 启动按键 华硕主板 F8 联想笔记本 F12 联想台式机 F12 技嘉主板 F12 宏基笔记本 F12 惠普台 ...

  7. Event 发布与订阅(一)

    前言 主要讲的是发布与订阅在Event中的一个简单实现用来加深理解. C #中的事件(Event)的理解: 事件具有以下属性:(From Events) 发行者确定何时引发事件:订户确定对事件作出何种 ...

  8. [NOI 2014]动物园

    Description 题库链接 \(t\) 组询问.每组询问给出一个字符串 \(S\) .要求求出一个 \(num\) 数组一一对于字符串 \(S\) 的前 \(i\) 个字符构成的子串,既是它的后 ...

  9. STL rope

    rope的部分简单操作 函数 功能 push_back(x) 在末尾添加x insert(pos,x) 在pos插入x erase(pos,x) 从pos开始删除x个 replace(pos,x) 从 ...

  10. ●BZOJ 1444 [Jsoi2009]有趣的游戏

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=1444题解.1: 概率dp,矩阵乘法,快速幂. 对所有串建立AC自动机, 那么如果在trie树 ...