数据库集群

    集群的存在意义是为了保证高可用、数据安全、扩展性以及负载均衡。

什么是集群?

由二台或更多物理上独立的服务器共同组成的"虚拟"服务器称之为集群服务器。一项称做MicroSoft集群服务(MSCS)的微软服务可对集群服务器进 行管理。一个SQL Server集群是由二台或更多运行SQL Server的服务器(节点)组成的虚拟服务器。如果集群中的一个节点发生故障,集群中的另一个节点就承担这个故障节点的责任。认为一个 SQL Server集群能够给集群中的两个节点带来负载平衡,这是一种常见的误解。虽然这似乎很有用,但却是不正确的。这也意味着SQL Server集群不能真正提高性能,只能提供故障转移功能。故障转移就是当系统中的一台机器发生故障失去其功能时,另一台机器将接手运行它的SQL Server实例。这种功能失效可能是由于硬件故障、服务故障、人工故障或各种其它原因。

对于在SQL Server 2008\2008R2下安装SQLServer 实例的集群似乎有越来越多的问题。与2005相比安装方法要求每个节点都被独立执行。下面我我们一起看一下如何实现集群的部署。

部署

本篇针对Share-Disk架构的集群进行介绍,为了更好展现,我们假定一下几个场景(http://www.it165.net/admin/html/201403/2499.html--配置步骤):

有3台计算机作为节点,分别叫做NodeA, NodeB 和NodeC ,IP地址如下。

  • NodeA - IP Address 10.10.10.10
  • NodeB - IP Address 10.10.10.11
  • NodeC - IP Address 10.10.10.12.

三个节点是Windows集群SQLFAILSET01 (虚拟IP地址是10.10.10.20)的成员。在安装集群应用程序之前需要安装和配置这个基于Windows 集群的平台包括虚拟网络和IP。三个节点有独立的硬件(处理器,内存,NIC等等)和软件(操作系统)。安装两个新的SQLServer集群实例,使用唯 一的虚拟网络名称和实例名称。两个虚拟网络名称和虚拟IP地址如下:

  • SQLCLUST01 - Virtual IP Address 10.10.10.21
  • SQLCLUST02 - Virtual IP Address 10.10.10.22.

实例名:

  • INST1 (SQLCLUST01)
  • INST2 (SQLCLUST02)

为了实现集群按照以下文档部署(配置步骤请参考连接或者其他文献):

  • 虚拟网络名称: 与你的计算机在Windows域中的名称一样。它一定是唯一并且命名遵循常规的名称命名限制如字符长度和特殊字符的使用,
  • 虚拟IP地址: 与分配客户\公共网络IP一样。这是一种共享的IP节点,用来接收跟指定实例通信的IP。
  • 共享驱动器: 这些共享存储是典型的通过光纤通道或者iSCSI连接的逻辑单元。这些逻辑单元对所有的集群几点公开并且分配唯一的逻辑驱动字符。不要与本地驱动器(通常由物理磁盘直接附加到服务器上)混淆。
  • NIC: 网络接口卡。

如果你没有这样做,则需要将集群磁盘资源R、S和T故障转移部署到NodeA,同样也会安装软件组件和数据库到这些驱动器上。从在NodeA开启 SQLServer2008的安装开始,选择"New SQL Server failover cluster installation"。然后安装相关的基础选项配置以及许可。来到实例配置启动的安装部分。

从功能列表中选择你想去安装的项目。下一个屏幕就是你说提供的实例配置,由实例名称和虚拟网络名称组成。对于NodeA使用如下配置:

network name - SQLCLUST01

instance name - INST1

在下一个屏幕详细展示集群资源组和共享磁盘资源(分配给新实例的)。对于NodeA如下配置:

SQL Server data - R:

SQL Server logs - S:

SQL Server backups - T:

一旦这些信息被提交,系统将提示网络配置将使用之前选择的虚拟IP地址。剩下的安装明细包括了集群的安全策略,服务配置(服务账户明细)和数据库引擎配置 (包括账户配置、文件流设置和数据目录)。在数据目录的标签下,展示你选择的之前提供的驱动盘符--“驱动\目录” 结构。继续安装,只要安装成功你就会拥有第一个集群实例在NodeA上。

接下来是NodeB,需要将故障转移集群磁盘资源L,M和N部署到NodeB上准备安装。

现在在NodeB上开启SQLServer2008的安装并且再次点击"New SQL Server failover cluster installation"。根据之前的步骤安装,用网络名SQLCLUST02替换之前的,实例名称为INST2,逻辑磁盘驱动器为L(数据),M(日 志)和N(备份)。

此刻,我们已经有了两个故障转移实例,分别部署到了NodeA和NodeB上。两个实例使用完全不同的磁盘驱动器和盘符,不同的Windows2008程序组和独立的虚拟网络名称,实例名称和虚拟IP地址。激活节点的信息如下:

  • SQLCLUST01\INST1 active on NodeA.
  • SQLCLUST02\INST2 active on NodeB.

但是,目前对于每个实例都没有可以利用的故障转移服务器,现在来解决这个问题。为了让NodeC作为每个实例的转移节点,需要在NodeC上多次安装SQLServer实例。

首先在C上开启2008的安装,并且选择"Add node to a SQL Server failover cluster"。安装程序将完成多个选择和提示等关键信息。之后,安装将提示集群节点配置。在这里选择你希望加入的SQLServer实例 (SQLCLUST01\INST1)。继续完成安装,就有了NodeC作为SQLCLUST01\INST1的故障转移“搭档”。

接下来,第二次安装SQLServer 2008在NodeC上,选择"Add node to a SQL Server failover cluster"。再一次按照如上步骤,再一次按提示配置集群节点。选择(SQLCLUST02\INST2) 作为集群实例并且按照安装步骤完成。这是NodeC就成为了SQLCLUST02\INST2的故障转移“搭档”。

下面就是安装中心的截图以及选择的选项:

下面的截图展示的是安装定义加入实例的地方:

如上所示,安装已经完毕,整个流程更加易于管理。当然利用新的气流特性和集成服务包或累积更新来减少可以减少部署新SQL服务器实例的时间。这里就不展开讲了。

总结

本篇只是简单介绍了最简单的故障转移集群如何搭建。集群有很多种形式如本篇这种共享磁盘模式的数据库集群,以及实现负载均衡的集群等等,但是正如文章一开 始我提到的SQL Server集群不能真正提高性能。业务的应用场景各有不同还是需要不断地配置升级来完成匹配适应的集群。

最新文章

  1. Qt for Android开发环境搭建及测试过程记录
  2. [deviceone开发]-do_Http组件示例
  3. WD硬盘型号信息
  4. 牛人整理分享的面试知识:操作系统、计算机网络、设计模式、Linux编程,数据结构总结 转载
  5. Linux C 创建目录函数mkdir相关(转-清新居士)
  6. 【转】win7(windows7)下java环境变量配置方法
  7. c# datagridview与DataSet绑定, 列与数据库表里面的列一一对应
  8. Java 简单算法--打印回文数字
  9. 我用Emacs,后来转向Vim——Vim学习之Vim键盘图(绝对值得珍藏)
  10. 专访雷水果国:离1.5K至18K 一个程序猿5每年的成长之路
  11. C setjmp和longjmp
  12. flask-login使用笔记
  13. python笔记:#008#变量的命名
  14. 新数据革命: 开源C#图形化爬虫引擎Hawk5发布
  15. CUDA编程之快速入门
  16. Kruskal算法(题目还是:畅通工程)
  17. CAS登陆过程UML中文版
  18. 让 div中的div垂直居中的方法!!同样是抄袭来的(*^__^*)
  19. vue Element-UI 分页使用(1)
  20. 点击一个div ,把div里的某个参数的值,传到一个input里面

热门文章

  1. JS代码实现的聊天框
  2. RadioGroup、RadioButton、CheckBox、Toast用法
  3. OpenCV2邻域和模板操作
  4. jQuery-1.9.1源码分析系列(十三) 位置大小操作
  5. GridView的使用
  6. 基于Metronic的Bootstrap开发框架经验总结(10)--优化Bootstrap图标管理
  7. 【NopCommerce源码架构学习-一】--初识高性能的开源商城系统cms
  8. 微信JSApi支付~订单号和微信交易号
  9. EC笔记,第二部分:7.为多态基类声明虚析构函数
  10. border:0与border:none区别与联系