前言:


本文将更加深入地讲解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. 简单聊聊java中的final关键字

    简单聊聊java中的final关键字 日常代码中,final关键字也算常用的.其主要应用在三个方面: 1)修饰类(暂时见过,但是还没用过); 2)修饰方法(见过,没写过); 3)修饰数据. 那么,我们 ...

  2. Java面试题—初级(3)

    21.ArrayList和Vector的区别 这两个类都实现了List接口(List接口继承了Collection接口),他们都是有序集合,即存储在这两个集合中的元素的位置都是有顺序的,相当于一种动态 ...

  3. PHP 常用header头定义

    在php的开发中,我们常常需要使用到header函数头来进行做标记 header() 函数向客户端发送原始的 HTTP 报头. 常用header设置列表如下: header('HTTP/1.1 200 ...

  4. 音频增益响度分析 ReplayGain 附完整C代码示例

    人们所熟知的图像方面的3A算法有: AF自动对焦(Automatic Focus)自动对焦即调节摄像头焦距自动得到清晰的图像的过程 AE自动曝光(Automatic Exposure)自动曝光的是为了 ...

  5. Python selenium 三种等待方式详解

    1. 强制等待第一种也是最简单粗暴的一种办法就是强制等待sleep(xx),强制让闪电侠等xx时间,不管凹凸曼能不能跟上速度,还是已经提前到了,都必须等xx时间.看代码: # -*- coding: ...

  6. es6第一章 continue

    块级作用域 ES6内允许块级作用域任意嵌套 {{{{let insane = 'Hello World'}}}} 这段代码使用了一个五层的作用域. {{{{ {let c = ''hello worl ...

  7. 深入解析浏览器的幕后工作原理(三) 呈现树和 DOM 树的关系

    呈现树和 DOM 树的关系 呈现器是和 DOM 元素相对应的,但并非一一对应.非可视化的 DOM 元素不会插入呈现树中,例如"head"元素.如果元素的 display 属性值为& ...

  8. Flask博客开发——Tinymce编辑器

    之前Flask博客的文本编辑器比较简陋,这里为博客添加个优雅易用的Tinymce文本编辑器. 1.项目中添加Tinymce 下载好Tinymce包以及语言包,并添加到项目中.添加到项目的方法,参考了这 ...

  9. 实验吧_拐弯抹角(url伪静态)&Forms

    拐弯抹角 先贴代码 <?php // code by SEC@USTC echo '<html><head><meta http-equiv="chars ...

  10. codevs 1006 等差数列

    提交地址:http://codevs.cn/problem/1006/ 1006 等差数列  时间限制: 1 s  空间限制: 128000 KB  题目等级 : 黄金 Gold   题目描述 Des ...