上半年的任务, 有一项是关于 sql server advanced topic 的,advance topics 里面又有一项重要的是关于集群。那就有的研究了。

sql server 的集群,英文全名称叫 Failover Clustering, 属于高可用性的范畴。 简单来说,提供的作用, 就是保证 7 X 24 小时持续不断的提供服务,及时当中有个别服务器宕机了,其他服务器会无缝的顶上去,继续保证应用的可用性,而用户在这宕机的过程是没有太明显的感觉的,除了当前运行的一些操作有一些停顿。在切换已经宕机和可用服务器的过程中,代码可以是在异常部分做了切换的操作。

这里面牵涉到两个方面,一是代码如何编写,这部分我是从来没有涉及过,也就是没有这样的编程经验,得补上;二是如何搭建这么一个 Failover Cluster ,以及怎么个自动切换或者手动切换,如何去监控这些服务器的运行状态。 曾经在 Windows Server 2003 做过一次 sql server 2000 的集群搭建,搭建过程比较粗糙,完全按照网络的日志或者博客,一步一步实验下来。对其中涉及到的概念没有做深入的研究,比如什么叫域,域控,虚拟子网,心跳,故障集群(这里是不是还得有 load balance 集群,提供多台服务器的网络负载?1 台服务器的性能及服务对象是有限的,但是多台服务器就能解决并发问题了。 这里是不是有分布式服务的概念了?),以及仲裁磁盘,ISIC , SAN , Hyper-V 等。 看吧,只有多问自己几个问题,在技术上还是完全有晋升空间的。

那么,针对这次的 sql server failover clustering 就多问自己几个问题吧:

1 搭建这么个集群,需要多少组件,包括硬件的,软件的:
凭空现在想象的有:
windows server 2008 ( 及以上 ) Failover Clustering,
sql server 2005(及以上) Enterprise Edition ; sql server 2012 以上有 AlwaysOn 这个概念了,而不仅仅是 High Availability.
步骤:
1.1 准备 3 台虚拟服务器,1 台用来做域控,共享存储(但是后来发现还是要单独拿出一台做共享存储,因为 windows server 2008 不支持将共享存储服务放在域控或者任何一台集群节点上),2 台用来做 Failover Cluster nodes.
安装域控,Active Directory Domain Service, DNS.
安装中出现的问题:
1.1.1 Active Directory Domain Services (简称 ADDS) 不是Feature 而是 Role, 所以要在 Add Roles 里面新建,并且不能和其他 role 一起安装。必须先安装 Active Directory Domain Services。
1.1.2 ADDS 安装过程中会重启服务器,安装完毕之后,运行 dcpromo.exe 来配置 Domain Controller.
1.1.3 A delegation for this DNS server cannot be created because the authoritative parent zone cannot be found or it does not run Windows DNS server. 安装 DNS Server 的时候碰到类似这种提示,我猜他的大意是,你不需要做任何操作,如果你只是在内网里搭建的话。因为我确实只是在虚拟机里面做实验,所以不管它。
1.1.4 有一步需要配置 Active Directory Domain Controller 的 database, log files 和 SYSVOL 对应的文件夹,那么我们默认给出的就好了:
c:\windows\ntds; c:\windows\sysvol
1.1.5 Directory Services Restore Mode Administrator Password: 和 Domain Administrator account 不同,重新指定一个密码: Smart123456.
1.1.6 ADDS 安装完成: this active directory domain controller is assigned to the site “Default-First-Site-Name”. You can manage sites with the Active Directory Sites and Services administrative tool.
1.1.7 将其他 2 台 server 添加到这个域的时候,本以为只要修改域名,将其指定为已经搭建好的 ADDS 服务器就可以了。但是报错了:An Active Directory Domain Controller(AD DC) for the domain “smartoffice.com” could not be contacted.
更新:2016/3/26
解决方法是将这两台要加入域的计算机的 DNS 指定为我们新建的这台 DNS 服务器的 IP。然后再加入域。
1.1.8 创建 iSCSI: 启动 Microsoft iSCSI service 即可。在启动 iSCSI Service 之前,必须先下载 iSCSI Target, 在微软官方网站即可下载。
1.1.8.1 创建一个 iSCSI Target, 名为: smartofficetarget, IQN(标识符,可被访问的资源名)为 smartofficetarget.smartoffice.com.
1.1.8.2 为上面创建的 target 附上 2 个虚拟的文件当做存储,指定文件大小
1.1.8.3 然后指定 iSCSI identifier, 这里很要小心,iscsi identifier 与 target 之间是双向绑定,现在 target 创建的时候,就要指定可以访问的 iscsi identifier(也就是可以访问这个 target 对应存储的服务器)。而且,尽量不在 Domain Controller 上建立 target, 我这里卡了很久,直到换了一台非域控的服务器。最后需要给“硬盘”(这里是虚拟出来的)格式化。有个问题留在这里,这个 iSCSI 指定的硬盘到底用来派什么用场?答案是派两个用途:一块用来仲裁,一块用来放数据。基本配置 2 快就够了,但是如果是生产,那么就多多益善了。
更新 : 2016/3/27
1.2 安装 windows server failover cluster
1.2.1 这里需要特别指出,因为在这里耗费了大量的时间:
首先,我是创建了个 windows server 2008r2 的 VM, 然后拷贝 2 份当做 cluster node. 本来图个方便用 domain administrator 账户来配置 failover cluster , 结果提示不能 load 拓扑。就是传说中的 ox80070005,看指示 ” access denied” 应该是访问不通,然后开了一堆的 services, 凡是跟 network, remote 相关的服务都开启来,把防火墙关掉。结果不行,这一次尝试失败了。
然后开始建立域用户,尝试了往 local administrators group 里面加域用户,也尝试了用 group policy 的方法来添加组,给域用户授权,结果还不行。相当搞笑的是,每次忘 local administrators group 里面加了域用户之后,下一次打开,发现只有 administrator 在里面,其他新增加的域用户都没了。重新添加的时候,会报该用户已经在这个列表里面了。好奇怪的错误,还以为是微软的 bug. 其实答案在下面。
最后 bing.com 提示,还能尝试用 sysprep 来搞定,具体是什么鬼,试试再说。bing.wikipedia 上的解释,sysprep 就是让你分发你手中的 windows,好吧,那 sysprep 相当于是 system prepare 了。经过一番折腾,安装了一系列服务之后,果然,在 local administrators group 里面看到我要添加的域用户了。互联网时代的东西,你想了解的都可以在网上找到,你不是一个人!
更新:2016/3/28
1.2.2 Access Point for a Cluster:
cluster name: smartofficedb
networks: 192.168.2.0/24 address: 192.168.2.110
这个步骤因为 duplicate physical address of windows failover cluster virtual adapter 的问题,也耽误了一下。原因是我用了同一个虚拟机拷贝出来的三个 VM 做节点,并且在 failover cluster feature 安装的情况下做了 sysprep 导致的。所以重做一个 VM 并且 sysprep 下看看是不是有解决问题。
更新:2016/3/29
另外,这里需要意识到的一个问题就是共享磁盘的问题:到底需要多少磁盘,以及每个 node 对磁盘的挂载。创建一个 iscsi storage server, 配置 iscsi target 以及虚拟磁盘,让每个 Node 都可以 initialize 到这些虚拟磁盘上。比较郁闷的是安装有 iscsi target 的服务器是不能用 initializer 来自己创建的 target。
更新:2016/3/30
这里碰到一个心跳的问题:作为心跳的两块网卡(vmware 里面只要新增两块虚拟网卡),只允许做一件事,就是 communication. 其他都不能做,把网卡属性里除了 IP4 的其他都去掉,设置两个相邻的 IP 地址,比如 10.10.10.1 / 10.10.10.2 , 并且设置为不在域里面自动加入后缀,禁用 NetBIOS. 否则,即使所有的 validation 都过了,cluster 还是不能创建成功,可能会报超时的问题。在创建 cluster 之前把 iscsi 的磁盘都 bring online 会提高速度。
更新:2016/3/31
1.3 安装 AlwaysOn Failover Cluster Instance
相对简单,一路 next.

2 怎么去监控这个集群的运行状态?

2.1    运行的集群可以提供多少并发量: 其实这里犯了一个概念性的错误,这个集群是为高可用搭建的,高可用是保证服务在线可用的持续时间,而数据库特别是 OLTP 型,有大量的写操作存在,必然会使用很多锁,这里的 failover 集群,即使服务器再多,也不能提供再多锁的并发,所以 failover 集群,并不是提高并发量。 并发量的提高,只能靠 Network Load Balance 特性,而这个特性是建立在数据库只有大量读操作基础上的。
2.2    运行的集群宕机的记录以及现状模拟宕机最简单的办法就是直接拔掉电源,这个时候,会有段时间的不可用。但是这个时间可以忽略。
2.3    如何手工去切换集群的活动节点我们建立了这个集群之后,在 Failover Cluster Manager 里面会有一个 service,只要把这个 service 从一台集群节点上移到另一个节点上就可以了。这里我也碰到一些小小的问题,就是当用 2 个不同的域账户在 2 台节点上的时候,是不能切换成功的。用了域用户而且是域管理员账户,就可以切换成功了。

3 模拟宕机过程
3.1 编程去实现访问这个集群
3.2 刻意让其中一台机器宕机
3.3 观察并发量,找到最大并发数及系统指标参数。这应该是个平衡点。

逐一解答:
1 首先要明白 域 的概念
1.1 为什么有域,域的作用与创建
域是一种分而治之的思想,所有在网的计算机资源都有自己的 IP, 访问这些计算资源,靠着 IP 来定位,就不那么容易被人类识别了,容易忘。所以域服务器是用来记录 IP 与资源名的对应关系。
在 windows server 中,DNS 是实现的底层,管理和配置这些 DNS,应该是由 Active Directory Domain Service 来实现的。首先 AD DS 用 Dynamic DNS 来发布自己的 IP ,使得其他 DNS 知晓自己的服务存在,也同时拉取其他服务器提供的服务及对应 IP。 AD DS 使得几台 DNS 之间的记录共享并不断同步更新。 在 Dynamic DNS 发明之前,只有靠人工手动同步 DNS 之间的映射信息。
所以 DNS Server 的创建也可以由添加 AD DS Feature 的时候同时创建。
1.2 如何加入一个域
1.3 域的管理:增删改
1.4 域控的高可用?集群还是双机?
1.5 DNS 和 Active Directory DomainService 的区别

2 仲裁 Quorum (这里翻译为仲裁人数或者仲裁数目,更能被好理解些)
2.1 仲裁的作用:决定了 Cluster 是不是起作用,能不能跑起来;
2.2 仲裁的创建:
从 windows server 2008 开始,不再是单一的仲裁磁盘了。而是提供了多种模式的仲裁,比如文件,磁盘,节点等。这样就避免了单一的磁盘仲裁缺陷。在 windows 2003 仲裁只用磁盘,那磁盘一旦失联,整个 cluster 就要当机。
仲裁是由 cluster software 配置的。这里有俩个概念需要弄清楚,一是 Failover Cluster Manager SnapIN,二是 Cluster Software。
2.3 仲裁的管理
2.4 仲裁的机制:这里有个概念叫做【多数】,英文名叫做 Majority. 他有两个特点,一是自动被决定,二是动态的。
自动被决定,是指在一开始确定 cluster nodes 数量的时候就被指定了,就是比一半的 nodes 数量多一。假如有 5 个服务器,当有 3 台当机的时候,这个 Cluster 就不能继续跑了。而只有两台服务器宕机的时候,这个 Cluster 还是可以跑的。所以服务器数量最好是基数,这样比较好判断。
动态,基于第一个特点,随着服务器数量的增多,仲裁数目也就相应增加了。

3 两种 clustering 方式
3.1 Failover Clustering : 主要提供高可用 High Availability 。
硬件要求:必须由微软认证。
软件要求:服务器(版本,补丁,机器硬件配置等);网络(统一子网,同域,心跳,IP);存储(共享存储)。AD DS( Active Direcory Domain Services) 角色(roles) . 存储,在生产环境,肯定是要用 SAN 的,以光纤级传输。但是开发测试环境,我们用 iSCSI 来创建一个共享存储就够了。windows server 2008 自带。
安装:从 windows server 2008 起,系统组件 (components) 都从 Add-feature 安装,这里要装的系统组件就是 Failover Cluster. 装完 Failover cluster 之后,会有 Failover Cluster Manager SnapIn 来管理Failover . 底层的服务是 Cluster Service. 软硬件的验证也是由 Failover Cluster Manager SnapIn 来完成。可见配置软硬件在前,设置 Failover Cluster 在后,最后启动管理 Cluster Node 。
从安装方法就看得出来,windows server 的管理方式也在改变,与时俱进掌握最新的特性是很有必要的一件事情。时刻关注新动向,写下新特性的分析,动手做些个实验,记录下心得。要有这个意识!
安装步骤:
3.1.1 验证必要条件:软硬件配置
除了软硬件,还有其他的配置需要提前创建好。
比如,clustered storage, 可以在创建集群的时候制定,也可以在集群创建好之后再创建;所有的服务器必须加入同一个域下面;创建域用户并赋予这些用户管理员级别权限,以便他们在服务器上创建集群。
3.1.2 在每台服务器上,添加 Failover Cluster feature.
3.1.3 通过 failover cluster manager snapin 的 Validation 去验证各类配置
3.1.4 通过 failover cluster manager snapin 来配置和启动 cluster
这里有个概念:Access Point for Administrating the cluster. 这个 AP 需要给他配置一个 NetBIOS Name 和 一个专用的 IP.
3.1.5 创建 AD DS Clustered Roles。
很有必要,通过 powershell 来自动化掉一部分重复操作!
3.2 Network Load Balance : 主要提供高扩展性 Scalability ,负载均衡。仔细想来,那么多 cluster 还不是为了高可用,至于水平扩展,瓶颈还是在写,多几台机有啥用?还是各种锁。把读通过 replication 剥离出来,搞那么 7,8 个从库,并发妥妥的。但是写就惨了,ACID 得让你按规矩来,该排队还是要排队。
3.3 各自的搭建方法
4. AlwaysOn availability Group
单点故障最有可能是发生在存储这一级。因为存储没有做多点冗余。靠 SAN 只能支持本地高可用,极端的例子就是本地机房地震了,就歇菜了。
针对这个问题,AlwaysOn 提出了availability group. 做到数据库级别的冗余,异地数据同步之后,高可用就提高了一些。
当然 availability group 与 Failover cluster 能结合起来用。

欢迎关注个人微信公众号

搭建 Sql Server 2008 R2 Failover Cluster相关推荐

  1. PowerShell 2.0 实践(十二)管理 SQL Server 2008 R2(1)

    DBA可以使用的工具很多,对于SQL Server来说,有查询分析器.事件探查器.命令行工具等,其中SQL语句是重中之重,但是PowerShell的出现使得DBA又多了一种选择. 测试脚本下载 本系列 ...

  2. SQL Server 2008 R2如何开启数据库的远程连接

    SQL Server 2008 R2如何开启数据库的远程连接 转载于:https://www.cnblogs.com/macT/p/10213025.html

  3. SQL Server 2008 R2中文版快速安装

    SQL Server 2008 R2中文版快速安装 1 实验环境 1)域: 域名为fengxja.com: 域功能级别和林功能级别为Windows server 2003模式. 2)DC01服务器: ...

  4. 2008 r2 sn sqlserver_sqlserver 下载地址(SQL Server 2008 R2 中英文 开发版/企业版/标准版 下载)...

    注:企业版无法安装在xp和win7,开发版才可以! 一. 简体中文 1. SQL Server 2008 R2 Developer (x86, x64, ia64) - DVD (Chinese-Si ...

  5. 完全卸载SQL Server 2008 R2(转)

    系统:Windows 10 以下方法转自:http://www.cnblogs.com/qanholas/p/3804123.html 1.在控制面板卸载Miscrosoft SQL Server 2 ...

  6. SQL Server 2008 R2 安全性专题(一):安全原则

    原文:SQL Server 2008 R2 安全性专题(一):安全原则 本系列主要专注与SQL Server 2005以后的DBMS,由于本人工作使用2008 R2,所以目前就针对2008 R2来做说 ...

  7. SQL Server 2008 R2占用内存越来越大解决方法

    SQL Server 2008 R2占用内存越来越大解决方法 参考文章: (1)SQL Server 2008 R2占用内存越来越大解决方法 (2)https://www.cnblogs.com/pe ...

  8. 如何解决SQL Server 2008 R2中“阻止保存要求重新创建表的更改”的问题!

    今天在讲解SQL Server 2008  R2课程中,有学生遇到一个问题,在SQL Server 2008  R2管理控制台中创建一个新表后,如果再次打开该表进行修改保存时,发现对每个表的修改都不成 ...

  9. SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败解决方案

    SQL SERVER 2008 R2 SP1更新时,遇上共享功能更新失败的问题,可作如下尝试: 更新失败后,在windows的[事件查看器→应用程序]中找到来源为MsiInstaller,事件ID为1 ...

  10. 安装 SQL Server 2008 R2 的硬件和软件要求(转)

    以下各部分列出了安装和运行 SQL Server 2008 R2 的最低硬件和软件要求.有关 SharePoint 集成模式下的 Analysis Services 的要求的详细信息,请参阅硬件和软件 ...

最新文章

  1. Java垃圾回收之老年代垃圾收集器
  2. 苹果手机透明桌面_苹果官网上,一个透明手机壳卖300多块钱,是不是在耍我们?...
  3. Crawler:基于BeautifulSoup库+requests库实现爬取2018最新电影《后来的我们》热门短评
  4. HDU 5308 I Wanna Become A 24-Point Master
  5. Workaround for Search for my account in MyAppointment
  6. 关于.NET HttpClient方式获取微信小程序码(二维码
  7. 3.数据类型和变量---用Python做数学运算
  8. 汲取 IE6、IE8 消亡的经验,如何“杀死” IE11?
  9. learning linux
  10. IDea更改主题和部分修改主题方法
  11. html阴影效果骰子,flex布局案例(骰子)
  12. 借助libbpf/libxdp使用AF_XDP,我们都需要做什么——以一个简单程序为例
  13. 草根SEO如何做好企业网站的优化
  14. 1024程序员节,有的公司竟然送漱口水!
  15. webix .datatable 表格分页
  16. Android拍照识别车牌号SDK
  17. 一些常用命令和快捷键总结,详见目录
  18. 【mysql】sql时间查询
  19. web前端踩坑小妹border-radius
  20. 嵌入式linux轻量级sshd服务工具Dropbear移植

热门文章

  1. 海康视频监控解决方案
  2. 线性调频信号(chirp signal)
  3. 【CNN回归预测】基于matlab卷积神经网络CNN数据回归预测【含Matlab源码 2003期】
  4. 数据产品经理面试提问集
  5. 使用UE4基于Hololens开发MR应用
  6. PMP第六版5大过程组49个过程
  7. 双网口工业路由器 网络传输层的“常青树”
  8. 视频和视频帧:H264编码格式整理
  9. 解决拼音汉字混合搜索,由于同音字导致搜出不相干的内容
  10. TextWatcher使用