Chinaunix首页 | 论坛 | 博客
  • 博客访问: 10202667
  • 博文数量: 1669
  • 博客积分: 16831
  • 博客等级: 上将
  • 技术积分: 12594
  • 用 户 组: 普通用户
  • 注册时间: 2011-02-25 07:23
个人简介

柔中带刚,刚中带柔,淫荡中富含柔和,刚猛中荡漾风骚,无坚不摧,无孔不入!

文章分类

全部博文(1669)

文章存档

2023年(4)

2022年(1)

2021年(10)

2020年(24)

2019年(4)

2018年(19)

2017年(66)

2016年(60)

2015年(49)

2014年(201)

2013年(221)

2012年(638)

2011年(372)

分类: 服务器与存储

2012-11-13 18:27:42

结合openfiler网络存储构建SQL Server故障转移集群

2010-12-28

引言:

许多企业采用了SQL Server提供业务系统后台数据服务,随着企业运作对这些业务系统的依赖,如何提高这些系统的高可靠性、高可用性已越来越引起企业的关注。

为满足企业系统高可用性容错业务需求,微软强力推荐用户采用Windows Server 2003企业版、SQL Server 2000企业版来构建其业务应用与协作办公平台。由于Windows Server 2003SQL Server 2000中内置Cluster群集功能,外加一共享磁盘柜或SAN2台服务器就能实现群集配置,SQL Server 2000(节点服务器1)互为热备地对外提供服务,即充分利用了服务器硬件资源,又大大提高了整个业务应用与协作办公系统的高可用性,其结构如下:

需求:

1系统请求环境

硬件要求

· 群集里的每台计算机有两块PCI网络适配器。

· 对于所有节点的所有硬件,每个插槽,每个卡,都应该尽可能是一样的。这将简化配置,消除潜在的兼容性问题。

网络要求

· 唯一的NetBIOS群集名。

· 对于服务器集群,要求有五个独立的、静态的IP地址:两个用于内部网(private)的网络适配器,两个用于外接公众网(public)的网络适配器,一个用于群集本身。

· 一个群集服务的域名用户帐号(所有节点必须是同一个域的成员)。

· 每个节点应该有两个网络适配器,一个用于外接公众网(public),另一个用于点对点的群集内部网(private)。

共享磁盘要求

· 所有的共享磁盘,包括定额磁盘,都必须跟共享总线保持物理连接。

· 将所有的共享磁盘都设置为基本(不是动态的)。

· 将所有的磁盘分区都格式化为NTFS

· 建议对所有的磁盘,都使用容错的RAID配置(这不是强制要求)。这里的关键是容错RAID配置-不能是无奇偶校验的阵列集。

 

构建步骤:

一、           构建openfiler网络存储服务器(NAS/SAN

Openfiler 驱动,它是一个基于浏览器的免费存储管理实用程序,可以在单一框架中提供基于文件的网络连接存储 (NAS) 和基于块的存储区域网 (SAN)。整个软件包与开放源代码应用程序(例如 ApacheSambaLVM2ext3Linux NFS Enterprise Target)连接。Openfiler 将这些随处可见的技术组合到一个易于使用的小型管理中,该解决方案通过一个基于 Web 且功能强大的管理界面实现。

Openfiler 支持 CIFSNFSHTTP/DAV FTP,但是,我仅使用它的 iSCSI 功能为SQL Server故障转移集群需要的共享存储组件实现低成本的 SAN

Openfiler 服务器将配置为使用该磁盘进行基于 iSCSI 的存储,并且将在 SQL Server故障转移集群配置中用于存储SQL Server集群件所需的共享文件。

 

安装 Openfiler

本部分概述了用于安装 Openfiler 软件的各个屏幕。在本文中,我选择了使用所有默认选项安装 Openfiler。所需的唯一手动更改是为了配置本地网络设置。

安装完成之后,服务器将重新引导以确保启动并识别所需的所有组件、服务和驱动程序。重新引导之后,Openfiler 服务器应该将外置硬盘驱动器识别为设备/dev/sda

在下载并将 Openfiler ISO 镜像(ISO 文件)刻录到 CD 之后,将该 CD 插入网络存储服务器(在本例中是openfiler1),启动,并按照以下说明来回应安装屏幕的提示。

引导屏幕:

第一个屏幕是 Openfiler 引导屏幕。在 boot: 提示符处输入“linux text”启动安装过程。

介质测试:

当要求测试 CD 介质时,用 Tab 键切换到 [Skip] 并按 [Enter] 键。如果有错误,则介质刻录软件会向我们发出警告。在几秒钟后,安装程序将会检测视频卡、显示器和鼠标。然后安装程序进入 GUI 模式。

Openfiler NAS/SAN Appliance 欢迎屏幕:

在欢迎屏幕上,单击 [Next] 继续。

键盘配置:

下一个屏幕将提示您进行键盘设置。为您的配置作出合适的选择。

磁盘分区设置:

下 一个屏幕将询问使用“Automatic Partitioning”还是“Manual Partitioning with Disk Druid”执行磁盘分区。这里,您选择哪种方法都可以,官方 Openfiler 文档建议使用手动分区。由于用于此安装的内置硬盘驱动器很小,并且该驱动器将仅用于存储 Openfiler 软件,因此可以选择使用“Automatic Partitioning”。但由于这次配置仅做测试,网络存储空间和openfiler的磁盘空间处于同一块硬盘上,因此采用手动配置,并留下30G的空闲磁盘空间(free space)。

网络配置:

首先,确保将每个网络设备设置为 [Active on boot]。默认情况下,安装程序可能选择不激活 eth1

第二步,按照以下方法对 eth0 eth1 进行 [Edit] 操作。您可能要为 eth0 eth1 使用不同的 IP 地址,没问题。但是,您必须将 eth1(存储网络)配置为与 Server 1Server 2 上的 eth1 位于同一子网中:

eth0
取消选中 [Configure using DHCP] 复选项
选中 [Activate on boot]
— IP
地址:192.168.1.213
网络掩码: 255.255.255.0

eth1
取消选中 [Configure using DHCP] 复选项
选中 [Activate on boot]
— IP
地址:192.168.200.3
网络掩码: 255.255.255.0

接着,手动设置您的主机名。我使用的主机名是“openfiler1”。然后提供您的网关和 DNS 服务器,最后关闭该对话框。

设置根口令:

选择一个根口令,然后单击 [Next] 继续。

完成:

大功告成。您已经成功地在网络存储服务器上安装了 Openfiler。安装程序将从 CD-ROM 驱动器中弹出 CD。取出 CD,单击 [Reboot] 重新引导系统。

配置网络存储服务:

可以使用Openfiler Storage Control Center(一个基于浏览器的工具,通过端口 446 上的 https 连接实现)执行 Openfiler 管理。例如:

    Openfiler Storage Control Center 主页,以管理员身份登录。Openfiler 的默认管理员登录凭证为:

用户名:openfiler

密码:password

管理员看到的第一个页面是 [Accounts] / [Authentication] 屏幕。配置用户帐户和组对本文不是十分重要,因此对此不进行讨论。

要将 Openfiler 用作 iSCSI 存储服务器,我们需要执行三个主要任务:设置 iSCSI 服务、配置网络访问以及创建物理存储

配置iSCSI服务:

要控制服务,我们使用 Openfiler Storage Control Center 并导航到 [Services] / [Enable/Disable]

要启用 iSCSI 服务,单击“iSCSI target”服务名称下面的“Enable”。之后,“iSCSI target”状态应更改为“Enabled”

ietd 程序将实现 iSCSI Enterprise Target 软件的用户级部分,以便在 Linux 上构建 iSCSI 存储系统。启用 iSCSI 目标之后,我们应该能够通过 SSH 进入 Openfiler 服务器,并看到 iscsi-target 服务正在运行:

[root@openfiler1 ~]#service iscsi-target statusietd

(pid 3784) is running...

网络访问限制:

下一步是配置 Openfiler 中的网络访问,使两个 SQL Server 节点都有权通过存储(专用)网络访问我们的 iSCSI 卷。(我们将在下一部分中创建 iSCSI 卷!)

导航到 [System] 来完成。利用 System 屏幕,管理员可以设置允许其访问 Openfiler 设备导出的资源的网络和/或主机。就本文而言,我们希望单独添加两个 Oracle RAC 节点,而不是允许整个 192.168.1.0 网络访问 Openfiler 资源。

输入每个节点时,请注意“Name”域只是一个逻辑名称,仅供参考。根据输入节点的惯例。接下来,在“Network/Host”字段中输入实际节点时,始终使用其 IP 地址,即使其主机名已经在/etc/hosts文件或 DNS 中定义。最后,在我们的 Class C 网络中输入实际主机时,应使用子网掩码 255.255.255.255

记住,您要为集群中的每个节点输入网络 (eth0) IP 地址,这一点很重要。

 

物理存储:

在本部分中,我们将创建两个 iSCSI 卷,一个作为windows 2003 群集的仲裁盘,另一个作为SQL Server 2000的共享存储单元。

存 储设备(如内置 IDE/SATA/SCSI 磁盘、外置 USB FireWire 驱动器或者任何其他存储设备)可以连接到 Openfiler 服务器,并供客户端使用。如果在 OS 级发现这些设备,就可以使用 Openfiler Storage Control Center 设置和管理所有这些存储设备。

在本例中,我们将一个硬盘上30G的空闲空间用于存储。要看到该驱动器并启动 iSCSI 卷的创建过程,导航到 [Volumes] / [Block Devices]

对物理磁盘进行分区:

我们将执行的第一步是在/dev/sda上的空闲空间创建一个主分区。通过单击/dev/sda链 接,我们可以看到“Edit”“Create”分区的选项。大多数选项保留为默认设置,唯一的修改是将“Partition Type”“Extended partition”更改为“Physical volume”

现在,大小将显示 31.41 GB。要接受该设置,单击 Create 按钮。这将在我们的外置硬盘驱动器上生成一个新的分区 (/dev/hdc4)

卷分组管理:

下一步是创建卷分组。我们将创建一个名为rac1的卷分组,其中包含新创建的主分区。

导航到 [Volumes] / [Volume Groups]。我们将看到所有现有的卷分组,或者什么也看不到。在 Volume Group 页面,输入新卷分组的名称 (mssql),单击/dev/hdc4前面的复选框以选择该分区,最后单击“Add volume group”按钮。之后,我们会看到一个列表,其中将显示我们新创建的名为“mssql”的卷分组:

逻辑卷:

现在,我们可以在新创建的卷分组 (mssql) 中创建两个逻辑卷。

导航到 [Volumes] / [Add Volume]。我们将看到新创建的卷分组 (mssql) 及其块存储统计信息。该屏幕底部还提供了用于在选定的卷分组中创建新卷的选项。使用该屏幕创建以下两个逻辑 (iSCSI) 卷。在创建每个逻辑卷之后,应用程序将转至“List of Existing Volumes”屏幕。然后,您需要单击后退到“Create New Volume”选项卡以创建下一个逻辑卷,直至所有 iSCSI 卷全部创建完毕:

iSCSI / 逻辑卷

卷名

卷描述

所需空间 (MB)

文件系统类型

cluster

windows群集仲裁盘

1024

iSCSI

mssql

网络共享存储

31136

iSCSI

现在可以将它们呈现给网络上的 iSCSI 客户端。“List of Existing Volumes”屏幕如下:

授予节点新的逻辑卷的访问权限:

需要先授予 iSCSI 客户端相应的权限,它才能访问新创建的 iSCSI 卷。在前面,我们将 Openfiler 配置为具有两个主机,这两个主机可以配置为具有访问资源的权限。现在,我们需要授予这两个节点访问每个新创建的 iSCSI 卷的权限。

导航到 [Volumes] / [iSCSI target]。点击 Add new iSCSI Target 中的 Add ,生成一个新的 iSCSI Target ,如果需要几台服务器能同时访问 iSCSI 卷,则需要生成多个 iSCSI Target

点击 LUN Mapping ,把每一个分区设置为 Map 状态。

       点击 Network ACL ,根据需要赋予不同的节点权限,建议每个Target只对一个节点设为 Allow。设置好后,点击 update

使 iSCSI 目标可供客户端使用:

每次添加新的逻辑卷之后,我们都需要在 Openfiler 服务器上重新启动相关服务。在本例中,我们创建了 iSCSI 逻辑卷,因此需要重新启动 iSCSI 目标 (iscsi-target) 服务。这将使新的 iSCSI 目标可供网络上有权访问它们的所有客户端使用。

要重新启动 iSCSI 目标服务,导航到 [Services] / [Enable/Disable]iSCSI 目标服务应该已经启用(几部分以前)。如果是这样,应禁用该服务,然后再启用它。

通过 Openfiler 服务器上的 SSH 会话也可以完成该任务:

[root@openfiler1 ~]#service iscsi-target restartStopping iSCSI target service:[OK]

Starting iSCSI target service:[OK]

注意点:

第一,在General中的Local Networks中设置可以访问Openfiler的客户端ip地址,使用其他功能时,Netmask按实际的网段设置,但使用iSCSI时,此部分必须设为:255.255.255.255,否则在使用iSCSI Initiator时,不能正常访问,这个地方可能是Openfiler的一个bug,或许是系统某个地方的限制。

第二,在Volumes中创建一个iSCSI类型的卷后,默认是禁止访问的,必须在edit里面iSCSI host access configuration for volume“卷名”部分把你要访问的ip设为allow才行(就是设的那个四个255掩码的ip)。

第三,然后就是使用iSCSI Initiator了,这里说的必须设置可能是虚拟机的原因,因为我的Openfiler一直都是在虚拟机下运行的。以下使用2.04版的iSCSI Initiator,另外在1.06版上也类似。在Discovery中添加,ip地址添Openfiler的地址,然后在Advanced中,Local adapterSource ip不能使用Default,否则iSCSI功能是不能正常使用的,Local adapter选择Microslft iSCSI InitiatorSource ip选择那个设置位四个255ip,然后在Targets里面就会看到设置好的逻辑卷了,登录,在Windows下面就可以看到新的磁盘了。

 

Microsoft iSCSI Initiator

iSCSI 客户端可以是提供 iSCSI 支持(驱动程序)的任何系统(LinuxUnixMS WindowsApple Mac 等),可以下载Microsoft iSCSI InitiatoR来事先验证openfiler的功能!!

 

二、           配置windows server 2003群集服务

配置网络连接

每个群集节点都至少需要两个网络适配器-一个连接公众网,一个连接内部网。为明确起见,我们建议改变网络连接的名称,助于区分网络,并正确地指定其角色。

注:哪个网络适配器是内部的,哪个是外部的,取决于布线。在本文中,第一个网络适配器(局连接)是连接到公众网上的,命名为 public ;第二个连接(局域连接2)是连接到内部网上的,命名为 private

本例子中,ip设置如下:

MSSQL-01192.168.1.116(public) 192.168.200.1(private)

MSSQL-02192.168.1.150(public) 192.168.200.2(private)

其中,public的网关为192.168.1.250DNS为空。private的网关和DN均为空。

在专用连接中禁用WINSDNS注册。检测专用网卡(private)中WINS的地址为空。选中private单击右键,并选择属性,选择Internet协议(Tcp/Ip)的属性。选择高级,选择WINS选项卡。如果已经定义一个WINS地址。则将它删除。并选择禁用TCP/IP上的NETBIOS服务,选择DNS选项卡,取消选择“在DNS中注册此连接的地址”。

 

 

挂载网络存储设备

       安装 Microsoft iSCSI Initiator ,一般情况下,一路默认即可。

       配置 Microsoft iSCSI Initiator 。运行 Microsoft iSCSI Initiator ,在配置界面,选择 Discovery 标签,点击 Add ,添加iSCSI服务器的ip

       选择 Targets 标签,选择其中一个有连接权限的目标,点击 Log On ,该目标的状态从 Inactive 变成 Connected

       一次点击“开始”—>“程序”—>“管理工具”—>“计算机管理”—>“磁盘管理”,即可发现新增的网络磁盘。此时,这些磁盘的状态应该是掉线的。右键点击新增磁盘,点击“导入外部磁盘”。确保磁盘为基本磁盘,而且是活动的。把新增磁盘格式化为NTFS格式。

安装Active Directory

       首先,把服务器MSSQL-01作为域控制器,新建一个名为MSSQL的域。

       因为Active Directory安装时需要同时安装DNS服务,所以需要把Windows 2003 安装盘放进光驱。

“开始”—>“运行”—>输入dcpromo,进入Active Directory安装向导。

选择域控制器类型。选择“新域的域控制器”。

填写新域的名字,如MSSQL.com

指定数据库和日志文件的位置。如果C盘空间足够的话,默认路径即可。

指定共享的系统卷的位置,默认。

DNS诊断。选择第二项,自动安装DNS服务。
      
当要求输入 目录服务器还原模式的管理员密码 时,输入域管理员的密码(可以使用本机的管理员密码)。

最后,屏幕会跳出一个摘要界面,确认信息无误后,单击下一步完成。安装完成后,需要。重新启动服务器。

成功新建MSSQL域后,需要把服务器MSSQL-02作为域控制器添加到域中。同样的,在MSSQL-02中运行Active Directory安装向导,不同的是,在选择控制器类型时,选择“现有域的额外域控制器”一项。

填写网络凭据。正确输入域管理员的账号、密码,填写域名称。

接下来的步骤和以上新建域的步骤一样,全部默认即可。

新建Windows群集

       “开始”—>“程序”—>“管理工具”—>“群集管理器”—>“文件”—>“新建”—>“群集”,进入新建服务器群集向导。

       填写正确的域名称,默认就是服务器当前加入的域。输入合适的群集名。

       输入新群集中的第一个节点的计算机名。输入当前服务器的计算机名。

       检测相关配置。

检测完成后选下一步,会提示输入IP地址,这个地址是集群服务所用的集群IP,集群IP只用于管理,而不用于客户端的连接。

       输入账号、密码。

       选择仲裁盘。点击“仲裁”,出现仲裁盘选择菜单。选择网络存储设备中的z盘作为仲裁盘。不推荐选择本地仲裁,可能会出现切换问题。

       再一次检测配置,完成后及成功新建Windows群集。

       第一台机器配置完成后,对于第二台机器的配置,同样是打开集群服务,只是要选择 添加节点到集群 的选项,然后选择相应的集群名称,填入新节点的名字就可以根据向导完成配置。

配置MSCS资源

       打开群集管理器,选择“文件”—>“新建”—>“资源”,进入添加资源向导。名称、描述可以随便起,最好有一定意义,如“DTC。资源类型选择“分布式事物协调器(DTC)”。组选择“群机组”。

       可能的所有者。默认即可。

       选择依存关系。选择仲裁盘和群集名。

       点击“完成”后,新建资源能在群机组的资源里看到。右键点击该资源,选择“联机”,使其联机激活。

配置SQL Server储存资源

       打开群集管理器,点击“文件”—>“新建”—>“组”。输入组名“group0,可能的所有者选择所有节点,点击完成,则新建了一个名为“group0的组。右键点击“group0,点击“联机”,使group0组联机激活。

       点击“文件”—>“新建”—>“资源”,进入添加资源向导。和建立DTC资源一样,名称、描述可以随便起,有意义即可。不同的是,资源类型选择为“物理磁盘”,组选择“group0

       可能的所有者,默认。依存关系,默认。

       选择磁盘。选择作为SQL Server存储的磁盘,本例中是Y盘。

       点击“完成”,完成磁盘资源的建立。联机激活该资源。

       到此,Windows 2003的群集服务配置完毕,下面进入SQL Server 2000故障转移集群的构建。

三、           构建SQL Server 2000故障转移集群

进入群集管理器,点击“资源”,查看当前windows群集的控制权属于哪一个节点,登录该节点进行SQL Server 2000故障转移集群的构建。也可以登录到本域的公共ip进行操作。

下载SQL Server 2000 Enterprise sp4安装包到本地,运行安装程序。选择“安装SQL Server 2000 组件”—>“安装数据库服务器”。

       输入计算机名。输入需要安装SQL Server的计算机名。选择“虚拟服务器”,并输入虚拟服务器名,如“KENFOR-MSSQL”。

       输入用户信息,随便。

       软件许可证协议。

       填写虚拟服务器ip信息。“要使用的网络”选择“public”,ip地址选择与节点同网段的,如192.168.1.233注意,该ip是作为外部访问SQL Server所设置的统一ip,和域的ip要区分开来。填写好后点击“添加”。

       群集磁盘选择。选择SQL Server文件存储磁盘,选择Y盘。

       群集管理。在指定的节点服务器上安装SQL Server。全选。

       远程信息。输入域管理员的账号、密码。

       安装文件路径选项。默认即可。需要注意的是,由于选择了网络磁盘Y盘作为群集磁盘,所以数据文件的安装路径自动设置为Y盘下的路径。

       设置服务账户。

       选择身份验证模式。选择混合模式并设置sa密码。

       选择许可证模式。选择“处理器许可证”模式。

       配置完毕,开始安装。

       安装完成后,可以在群集管理器的gourp0组中看见新添加了SQL Server的四个资源。

       成功安装SQL Server后,升级到SP4

测试结果:

1、当两台服务器都正常的时候,SQL Server能正常访问,控制权位于MSSQL-01

2、MSSQL-01节点断开,从群集管理器上能看到MSSQL-01节点被断开,经过一点时间(约30秒到1分钟),资源转移到MSSQL-02上,SQL Server服务正常使用。

3、再次连接MSSQL-01节点,资源的所有者没有变化,还是MSSQL-02SQL Server服务正常运行。

4、MSSQL-02节点断开,资源转移到MSSQL-01上,SQL Server服务正常运行。

问题与总结

1、故障转移速度比较慢。当群集资源所有权需要转移的时候,转移速度比较慢,常常是需要1分多钟,这在生产环境中是十分不理想的。这问题应该是测试机器性能低下的原因导致的。

2、从新建域开始到SQL Server故障转移集群构建完毕,务必保持以下服务一直保持启动状态,否则可能导致一系列安装问题:

Distributed File System

Remote Access Auto Connection Manager

Remote Access Connection Manager

Remote Procedure Call (RPC)

Remote Procedure Call (RPC) Locator

Server

Workstation

阅读(1008) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~