WIN2003+SQL2008故障转移群集实施手册

WIN2003+SQL2008故障转移群集实施手册
1前言

此文档的目标结果为:在英文WinServer2003EER2sp2上成功运行简体中文slq2008std故障转移集群,在真实生产环境整个部署周期大概2天完成。

环境搭建采用的是WinServer2003EER2sp2_EN+slq2008std_CS,硬件部分使用WM6.0来模拟。

注意要点:

1.微软默认slq2008std故障转移集群的任何一个节点都不能安装在域控上,大家搭建测试环境时请注意此点以免浪费时间。

2.截止200959日微软SQL2008故障转移集群不支持中文的WinServer2003操作系统环境,实施时请使用英文版本,并在部署SQL2008故障转移集群之前为操作系统安装KB937444系统补丁。

3.部署完成后若需要更改节点IP或虚拟IP时,需重装端点的操作系统(详情咨询微软)。所以实施前的沟通和规划工作十分重要。

4.仲裁磁盘内不能存放数据,并且必须使用单独的一块硬盘。硬盘上的某一分区作为仲裁磁盘后此硬盘将不能再做其他用途。

2知识介绍 2.1群集介绍

服务器群集是一组协同工作并运行 Microsoft 群集服务(Microsoft Cluster ServiceMSCS)的独立服务器。它为资源和应用程序提供高可用性、故障恢复、可伸缩性和可管理性。它允许客户端在出现故障和计划中的暂停时,依然能够访问应用程序和资源。如果群集中的某一台服务器由于故障或维护需要而无法使用,资源和应用程序将转移到可用的群集节点上。(说明:本文档编写的目的是为了帮助大家实现所关心的如何完成典型SQL群集的配置步骤,不会涉及到其他,例如:如何安装群集应用程序,如 Exchange 群集等)

2.2群集专业术语

      :  构建群集的物理计算机

群集服务    :  运行群集管理器或运行群集必须启动的服务

      :  IP地址、磁盘、服务器应用程序等都可以叫做资源

共享磁盘    :  群集节点之间通过光纤 SCSI  电缆等共同连接的磁盘柜或存储

仲裁资源    :  构建群集时,有一块磁盘会用来仲裁信息,其中包括当前的服务状态各个节点的状态以及群集转移时的一些日志

资源状态    :  主要指资源目前是处于联机状态还是脱机状态

资源依赖    :  资源之间的依存关系

               :  故障转移的最小单位

虚拟服务器: 提供一组服务--如数据库文件和打印共享等

故障转移    :  应用从宕机的节点切换到正常联机的节点

故障回复    :  某节点从宕机状态转为联机状态后,仍然继续宕机前的工作,为其他节点分流

3安装群集前的准备工作 3.1环境搭建及要求

在生产环境中实施时要事先做好规划,并征求客户的意见,确保一次部署成功。大多数返工都是可以事先避免的。

并在部署完成后为客户做好系统备份。

3.1.1拓扑图 3.1.2软件配置说明

1. DC 软件配置信息

OS:Windows Server 2003  R2 SP2  中文企业版

Role: Active Directory 域控制器

Domain:edentest.com

ServerName:www.edentest.com

IP:192.168.0.254   (以“桥接”方式连接)

Netmask:255.255.255.0

Gateway:192.168.0.254

2. Cluster Node A 软件配置信息

OS: Windows Server 2003 R2 SP2 英文企业版

Role: Member Server

ServerName:ClusterNodeA.edentest.com

IP1:192.168.0.1

Netmask1:255.255.255.0

Gateway1:192.168.0.254   (以“桥接”方式连接)

Dns1:192.168.0.254

IP2: 1 0 . 0 . 0 . 1            (以“VMnet2”方式连接)

Netmask2:255.0.0.0

Gateway2:None

DNS2:None

3.Cluster Node B 软件配置信息

OS: Windows Server 2003 R2 SP2 英文企业版

Role: Member Server

ServerName:ClusterNodeB.edentest.com

IP1:192.168.0.2

Netmask1:255.255.255.0

Gateway1:192.168.0.254   (以“桥接”方式连接)

Dns1:192.168.0.254

IP2: 1 0 . 0 . 0 . 2            (以“VMnet2”方式连接)

Netmask2:255.0.0.0

Gateway2:None

DNS2:None

3.1.3硬件配置说明

1.网卡

A.群集中的每个节点需要有两个网卡。一个用来连接您的公共网络,一个用来进行群集节点间的通讯,俗称“心跳连接”

B.心跳线必须通过交叉线直接连接群集节点,不能通过任何路由设备。因为群集心跳数据包的生存时间 TTL 值为1。我们知道数据包在每经过一个路由节点时,TTL 值都会减一。

2.共享磁盘

A.除操作系统所在磁盘外,还需要两个额外的 SCSI 磁盘。一个用来做仲裁磁盘,另一个用来充当数据共享磁盘。

B.共享磁盘必须位于系统驱动器所用的控制器以外的另一个控制器上。不要和操作系统所在的磁盘使用同一总线。

C.所有共享磁盘,包括仲裁磁盘,必须在物理上附加到一个共享总线。

D.仲裁磁盘空间大小最小 50 MB为了得到最佳的 NTFS 文件系统性能,建议采用最小 500MB 的磁盘分区。

E.所有共享磁盘必须配置为基本磁盘,而不能为动态磁盘。

F.共享磁盘不支持软件容错,不要再试图对共享磁盘做软 RAID

G.如果您使用的是 64 位版本的 Windows Server 2003 的系统,需要注意的是,所有共享磁盘必须配置为主引导记录(MBR),也就是建立主分区。也不要试图配置为 GPT 磁盘,因为它不能作为群集磁盘得到支持。

H.群集磁盘上的所有分区必须格式化为 NTFS

I.群集节点的操作系统必须采用同架构的版本,不能节点 A 采用 32 位系统,而节点 B 却使用 64 位系统。

(说明:在本文档中,模拟的 SCSI 共享磁盘柜均是通过 VMware Workstation 自带的相关工具来创建)

3.2创建共享磁盘 3.2.1创建仲裁磁盘

进入 VMware Workstation软件安装目录,在命令提示符窗口敲入如下命令:

vmware-vdiskmanager.exe -c -s 600Mb -a lsilogic -t 2 “D:\VirtualMachines\ShareDisks”\Quorum.vmd

3.2.2创建共享磁盘

进入 VMware Workstation软件安装目录,在命令提示符窗口敲入如下命令:

vmware-vdiskmanager.exe -c -s 2Gb -a lsilogic -t 2 “D:\VirtualMachines\ShareDisks”\ShareDisk.vmdk

3.2.3完成后检验

进入 D:\Virtual Machines\ShareDisks中,可以看到步骤 23 创建的 4 个虚拟磁盘文件。

3.2.4共享磁盘

通过前面的操作,我们已经成功的创建了群集所需要的共享磁盘。接下来将虚拟磁盘文件附加到 ClusterNodeA ClusterNodeB 上。

1.进入 ClusterNodeA 所对应的虚拟系统目录(不是虚拟机软件安装目录),找到.vmxVMware 配置文件),用记事本打开,添加如下记录:

disk.locking = "false"

diskLib.dataCacheMaxSize = "0"

scsi1.present = "TRUE"

scsi1.virtualDev = "lsilogic"

scsi1:5.present = "TRUE"

scsi1:5.fileName = "D:\Virtual Machines\ShareDisks\Quorum.vmdk"

scsi1:6.present = "TRUE"

scsi1:6.fileName = "D:\Virtual Machines\ShareDisks\ShareDisk.vmdk"

2. ClusterNodeB上重复前一个操作,并做相应的修改

3.关闭 VMware Workstation 软件后再次打开,会发现先前创建的共享磁盘均附加到ClusterNodeA ClusterNodeB 上了

4.   验证:

1) 共享磁盘属于 SCSI 通道 1,和系统盘 SCSI 通道 0 不在一个共享总线上,符合集群需求

2) 共享磁盘的仲裁磁盘和数据磁盘均位于 SCSI 通道 1 上,亦符合集群需求

4网络以及系统配置 4.1SQL群集用户组和帐户

1.群集服务需要一个属于可运行群集服务的每个节点上的本地管理员组成员的域用户帐户。因为安装群集服务时需要用到这个用户名和密码,所以该用户帐户必须在配置群集服务前予以创建。该用户帐户只能专门用于运行群集服务,而不能属于个人。出于安全考虑该账户应是普通的域账户,而不是域管理员账户。

2.创建域用户组sqlenginesqlagent和用户sqladmin

3.并将域组添加到两台节点的本地管理员组。

4.2添加群集 A 记录

如果您需要将运行在群集服务上的应用程序服务(该服务器即为虚拟服务器)以域名的形式对内或对外发布,您可能需要在域控制器的 DNS 管理器中添加群集名的 A记录。例如,本次试验中,我给节点 A 和节点 B 通过群集虚拟出来的地址 192.168.0.10 分配一个对应的 A记录名:ClusterTest.edentest.com

4.3ClusterNodeA上的共享磁盘配置

1.启动 ClusterNodeA(不要开启 ClusterNodeB,使其保持关闭状态。这样有助于保证附加到共享总线的磁盘上的数据不会丢失或遭到破坏。)

2.打开 ClusterNodeA  “磁盘管理”系统会自动找到先前创建的两个共享磁盘。进入“磁盘初始化和转化向导”。

3.将两块磁盘格式化成“基本磁盘”,并分别建立“主磁盘分区”

4.给仲裁磁盘分配一个约定成俗的驱动器号 Q,同时把卷标改成“Quorum(使用其他盘符有可能在安装SQL群集时通不过校验)。

5.按照同样的方法,对共享数据磁盘进行操作。分配驱动器号为 R,卷标名为 Data(具体过程略)。另外,需要补充一点的是,通常,驱动器盘符“Q”用于仲裁磁盘,而“RS”等字母则常用于数据磁盘。尽管您可以按照个人喜好随意更改,但是建议采用约定成俗的规定。

6.对共享磁盘的操作完成后,建议验证一下磁盘是否可读写。方法是新建一些文件后再删除,看看是否都正常。

4.4网络配置

1.为了接下来的实验更加直观,建议把节点的两块网卡进行重命名操作。生产环境要求这样操作。

2.Cluster 网卡(以下改称为心跳网卡)的 TCP/IP 属性如下。不要对心跳网卡设置默认网关和 DNS 地址。

3.点击网卡的高级按钮按照下图修改心跳网卡的TCP/IP 属性,目的是禁止心跳网卡的 DNS NetBios查询。这样能够消除可能出现的通信问题,也有利于减少不必要的网络流量。因为服务器群集节点间的通信对于群集的顺畅运转至关重要。

4.按照微软官方推荐的做法,如果您拥有一个能够以不同速度进行传输的网卡,那么您应该手动指定同一个速度及双工模式。不要对传输速度应用自动选择设置,因为某些适配器在确定速度时可能丢掉一些数据包。这直接影响到群集节点之间的通讯质量。                       Microsoft 建议您将同一路径上的所有设备设定为“10 M”和“半双工”。同时,如果您的网卡支持 Teaming冗余,而您又无法确保该特性和群集之间的兼容性时,建议取消该特性。(以下为生产环境中的HP Server 截图,第一张图片中的卸载的红圈有误,应点击属性,因为没有真机所以无法再次截图)

5.至此,有关 ClusterNodeA的前期网络和系统的相关配置已结束。接下来按照类似的方法对 ClusterNodeB进行配置。

4.5ClusterNodeB上的共享磁盘配置

1.关闭 ClusterNodeA,开启 ClusterNodeB。在此期间,请保持 ClusterNodeA处于关闭状态。原因前面已经说明,不再赘述。

2.打开 ClusterNodeB 的磁盘管理器,可以看到之前创建的共享磁盘同样被系统发现了。只是由于 Windows Server 2003 系统的设计使然,没有自动为其分配驱动器号。我们需要手工对它分配和 ClusterNodeA相同的驱动器号,建议将卷标也进行修改。卷标名建议和 ClusterNodeA 上的保持一致。

4.6语言问题

因为操作系统为英文但是SQL是中文,所以很显然的要考虑到中文显示。

1.打开控制面板选择“区域和语言”

2.按照下图修改默认属性,之后操作系统即可正常显示中文。

5安装WinServer群集服务 5.1新建一个群集

(时间关系此部分没有重新截图,真实环境下应为英文操作系统)

1.开启 ClusterNodeA,同时保持 ClusterNodeB 处于关闭状态。展开 ClusterNodeA 的“开始”菜单,定位到“程序”“管理工具”,打开“群集管理器”

2.选择“创建新群集”

3.输入您公司的域名和事先准备好的群集名。并且在 DNS 中对该群集名建立对应的 A记录。

4.输入新群集中的第一个节点的计算机名,这里我们选择 ClusterNodeA

5.这时会对群集配置进行一个完全分析。如果有任何一项无法通过检测,务必检查原因、排除问题。故障排除后,不需要重新再来,只需点一下“重新分析”按钮就行。

6.输入群集的 IP地址,该地址是 ClusterNodeA ClusterNodeB 共同虚拟出来的群集 IP FQDN 地址对应于前面的 ClusterTest.test.com.

7.输入前面创建的群集服务帐号。该帐号可以不是域管理员,但是必须是各节点的本地管理员。

8.下图是配置信息汇总。如果发现配置有错误,可以点击“上一步”进行更改。否则点击“下一步”,开始群集创建。

9.可以查看创建过程是否顺利。一般来说,只要前面群集前的分析没有问题,创建过程一般都不会有问题的。

10.完成新建服务器群集向导。至此,我们已经成功的在 ClusterNodeA上配置了群集服务。

11.打开群集管理器,验证 ClusterNodeA上的群集服务已成功安装。资源所有者均为ClusterNodeA,并均处于联机状态。

5.2B节点加入现有群集

1.开启 ClusterNodeB 节点,同时不要关闭 ClusterNodeA,否则无法加入现有群集。打开群集管理器,选择“添加节点到群集”“浏览”,找到之前创建的群集名 ClusterTest。点击“确定”

2.进入添加节点向导。

3.选择您要添加到现有群集的节点。我这里选择 ClusterNodeB

4.下一步至完成

5.至此,我们成功的在 ClusterNodeA 上新建了一个名为 ClusterTest 的群集,并成功将

ClusterNodeB 加入该群集中。

6.细心的您在 ClusterNodeB加入到现有群集后,可能会发现无法在 ClusterNodeB 上访问原有的共享磁盘。如下图所示。不要奇怪,只是正常现象。因为在群集服务中,同一时刻只能有一个节点对资源拥有所有权。在我这个例子中,此刻仲裁磁盘的所有者是 ClusterNodeA,所以 ClusterNodeB无法访问。反过来,如果所有者是 ClusterNodeB,则会变成 ClusterNodeA无法访问共享磁盘。

5.3配置群集服务 5.3.1群集网络配置

1.进行专用网络配置。打开群集管理器,单击“群集配置”单击“网络”右键选择 Heartbeat的属性。

2.选择“为群集使用启用这个网络”和“只用于内部群集通讯(专用网络)

对上图中的几个选项,我稍微做一下解释:

为群集使用启用这个网络: 如果选定了该复选框,群集服务将使用该网络。默认对所有网络选定该复选框。

只用于客户端访问(公用网络):如果您想让群集服务仅使用该网络适配器与其它客户端进行外部通信,那么选择该选项。该网络适配器将不进行节点对节点通信。

只用于内部群集通信(专用网络):如果您想让群集仅使用该网络进行节点对节点通信,那么选择该选项。

所有通信(混合网络):如果您想让群集服务使用该网络适配器进行节点对节点通信和外部客户端通信,那么选择该选项。默认对所有网络选定该复选框。

在本次实验中,我们仅使用到了两个网络:Public Connection(内网连接网卡名称为LanHeartbeat Connection(心跳线网卡名称为Cluster)。基于最常见的配置,我们将这两个网络分别作为混合网络和专用网络。

3.同样,进行公用网络配置

4.配置心跳网络优先,由于群集服务总是尝试使用列于首位的网络适配器进行节点间的远程过程调用(RPC)通信。只有当群集服务无法使用第一个网络适配器进行通信时,才会使用列表上的下一个网络适配器。所以我们需要调整一下心跳适配器的优先级。启动群集管理器。右击群集名称,然后单击“属性”,在弹出的对话框中单击“网络优先级”选项卡。将 Cluster 上移至顶部。

5.3.2仲裁磁盘配置

启动“群集管理器”。右击左上角的群集名称,然后单击“属性”。单击“仲裁”选项卡。在“仲裁资源”列表框中,选择“磁盘 Q

5.3.3创建一个启动延时(此操作非必须)

当出现所有的群集节点均同时启动并尝试附加到仲裁资源的情况时,群集服务可能无法启动。例如:在发生电源故障后,同时对所有节点恢复电力时,可能出现这种情况。(尽管可能性比较低,但是还是有可能发生的。要避免这种情况,可以编辑其中一台节点的 boot.ini 文件。 Timeout设置不同的值,以避免两个节点同时启动。

打开 ClusterNodeA 上系统盘根目录下的 boot.ini 文件,按下图修改。

因为如果是单操作系统,无论你如何设置timeout 的值都是没有用的。只有多系统才会读取这个值。所以我们复制同样的记录来实现启动延迟的目的。

6安装SQL Server前的准备

1.在两个节点上添加DTC服务

2.在服务器A中打开集群管理工具,在集群中创建组--SQL Group”,并将用于存储共享数据的磁盘资源移动到“SQL Group”中。

3.在“SQL Group”中添加新资源,资源名称为“MSDTC IP”资源,资源类型选择“IP Address”,点击下一步继续。两台服务器均为资源的可能所有者,点击NEXT继续。

4.此处按照默认设置,没有资源依赖关系,点击NEXT继续即可。

5.设置MSDTC IP资源自身的IP地址。此地址用户自行设定。至此,MSDTC IP资源添加完成。

6.在“SQL Group”中添加MSDTC NAME资源,资源类型选择Network Name

7.两台服务器均为资源的可能所有者。

8.此处将MSDTC IP作为MSDTC NAME所依赖的资源。

9.勾选DNS Registration Must Succeed,点击Finish完成MSDTC NAME资源的添加。

10.在“SQL Group”中添加MSDTC资源,资源类型选择Distributed Transaction Coordinate

11.两台服务器均为资源的可能所有者。

12.将所有资源包括磁盘、MSDTC IP MSDTC NAME 全部作为MSDTC资源的依赖资源。

13.MSDTC服务进行移动组测试,确认可以正常工作。如果出现建立的MSDTC服务在移动过程中两个节点不断失败,可使用“msdtc -resetlog”命令将MSDTC日志传送到Q盘上(注,只需在MSDTC服务当前联机的节点上运行一次即可)。

7安装SQL2008故障转移集群 7.1准备工作

插入SQL 2008光盘后,安装向导会自动对系统进行检查,并安装PowerShell.Net3.5.

7.2创建故障转移集群

1.在节点A上打开安装界面,选择创建 SQL Server故障转移集群

2.系统配置检查全部通过。

3.选择下一步,勾取需要安装的组件。本次仅安装SQL数据库引擎服务和 SQL复制,此部分安装内容需和客户沟通我方只负责建议,由客户来决定具体安装内容。

4.若需更改安装路径可点击“浏览来更改”

5.单击下一步,选择安装路径

6.下一步至IP地址配置,将SQL群集IP地址设置为0.170

7.在安全策略中输入之前在域控上添加的组名。

8.在服务器配置中设置SQL使用的帐户,此帐户就是我们之前设置的域帐户。

9.设置完成后选择“排序规则”,将数据库的默认排序规则设置为

10.继续下一步,数据库引擎配置。选中sqladmin添加为sql管理员。

11.继续下一步至安装完成。

12.打开群集管理器界面,查看sql group的属性检查两个节点是否都为资源所有者,如没有需要手动添加。并在故障回复标签中设置为“允许立即回复”。

7.3添加节点并完成

1.MSDTC资源转移到节点B上,并检查群集服务是否运行正常。

2.在节点B上运行添加节点向导。

3.大部分配置参数与创建新节点是相同此处不再复述,然后一路下一步至完成。


你可能感兴趣的:(windows,群集部署,虽然很老,详读可以用以解惑)