在VM Server中配置SQL Server 2005故障转移群集(2)—配置群集
在VM Server中配置SQL Server 2005故障转移群集(2)---配置群集
4.1.1. 硬件设置
做为SQL Server 2005故障转移群集的节点,至少需要两块共享磁盘:一块做为仲裁盘;另一块用作数据盘。每个Cluster节点需要两块网卡,一块用于节点之间的心跳连接,另一块用于客户端连接。
保 持Node1为操作系统关闭的状态,在"VMware Server Console"选项卡中,选择名为"Node1"的标签,然后单击"Edit virtual machine settings",在随后出现的"virtual machine settings"对话框中,单击选项卡中的"Hardware"标签,接下来添加共享磁盘和网卡。
4.1.1.1. 添加网卡
模板虚拟机已经有一块网卡,因此只需要再添加一块就可以了。
在 已经打开的"virtual machine settings"对话框中单击"Add"按钮,在随后出现的"Add Hardware Wizard"对话框中,单击"下一步"按钮。在接下来的步骤中选择"Ethernet Adapter",然后单击"下一步"按钮。
配置网络类型为:Host only
点完成按钮完成添加第二块网卡。
4.1.1.2. 添加共享磁盘
共享磁盘为所有的群集节点共享使用,因此不宜和某个群集节点的的文件放在一起。
本实验中将共享磁盘的文件放在物理机的E:\Virtual Machines\ShareDisks目录下。
回到"VMware Server Console",准备创建共享磁盘。
首先创建仲裁盘Quorum!
在已经打开的"virtual machine settings"对话框中单击"Add"按钮,在随后出现的"Add Hardware Wizard"对话框中,单击"下一步"按钮。
选择"HardDisk",然后单击"下一步"按钮
新建一个虚拟磁盘
选择SCSI类型
指定仲裁盘的大小
设置仲裁盘的大小为0.5G,仲裁盘不需要太大。取消选择立即分配磁盘空间选项。
指定仲裁盘文件的位置
将仲裁盘的存储目录设置为专门存储共享磁盘文件的文件夹:E:\Virtual Machines\ShareDisks,仲裁盘文件名设置为"Quorum.vmdk"。
在指定仲裁盘文件的位置这个步骤中,单击"Advancel"按钮,随后出现的对话框中,
将"Virtual device node"设置为一个独立的SCSI总线,比如:SCSI 1:0,并将"Mode"设置为"independent"和"Persisten"。
完成上述设置后,单击"完成"按钮以结束仲裁盘的创建过程。
以同样的步骤,完成另外一个虚拟共享数据盘(SharedDisk01)的添加。
因 为共享数据盘中需要保存SQL Server 2005安装文件以及数据文件,所以大小需要设置的大些,设置为2G。"Virtual device node"选择与仲裁盘同一SCSI总线,只是选择不同的ID。将virtual device mode设置为:SCSI 1:1。共享数据盘(SharedDisk01)的虚拟磁盘文件放到专门存储共享磁盘文件的文件夹:E:\Virtual Machines\ShareDisks中,共享数据盘文件名设置为" SharedDisk01.vmdk"。
完成上述配置后,节点Node1的"Devices"列表大概如下图所示。
4.1.2. 操作系统环境设置
接下来进行操作系统环境的配置。
单击"Start this virtual machine"以启动虚拟机Node1。此步骤中仅启动Node1,不要开启Node2,使Node2保持关闭状态。这样有助于保证附加到共享总线的磁盘上的数据不会丢失或遭到破坏。
在Vmware Server Console中启动Node1的时候,提示
选择Create来重新生成新的UUID。
虚拟机Node1启动完成并进入操作系统后,需要配置IP地址、使用newsid重新生成SID、修改计算机名称和初始化共享磁盘。
4.1.2.1. 配置网络连接
虚拟机Node1启动后,在网络连接中可以看到有两块网卡。
将名称为"本地连接 2"的网卡用于客户端连接,重命名为:public,IP地址配置为:192.168.100.101,子网掩码为:255.255.255.0,DNS服务器为:192.168.100.1。
将名称为"本地连接 3"的网卡配置用于群集节点之间的心跳连接,重命名为:private,IP地址配置为:192.168.200.1,子网掩码为:255.255.255.0,不配置DNS服务器。
在配置用于心跳连接的private网卡的时候,在Internet 协议(TCP/IP)属性中,点高级按钮,
切换到DNS选项卡,取消选择在DNS中注册此连接的地址。一定要取消。
然后再切换到WINS选项卡中,取消选择启用lMHOSTS查找,选择禁用TCP/IP 上的NetBIOS。一定要这么做。这样能够消除可能出现的通信问题,也有利于减少不必要的网络流量。因为服务器群集节点间的通信对于群集的顺畅运转至关重要。
在网络连接的高级菜单中,选择高级设置,
调整网络连接被访问的顺序,使得用于客户端连接的public在上面。
4.1.2.2. 共享磁盘设置
打开管理工具中的计算机管理,选择磁盘管理,这时弹出磁盘初始化和转化向导,
默认即可
默认即可
默认即可
所有的配置项均保持默认值即可。
接下来对磁盘进行分区操作。
首先建立仲裁盘,右键第一个大小为510MB"未指派"的磁盘,在弹出的菜单中选择"新建磁盘分区",
开始新建磁盘分区向导,
选择主磁盘分区,
分区的大小为整个磁盘的空间大小
将盘符指定为Q
执行快速格式化,卷标设置为:Quorum
完成磁盘分区创建
共享数据盘分区的建立过程与仲裁盘相同。将数据盘(SharedDisk01)的盘符设置为"R","卷标"设置为"SharedData01" 。
所有分区都创建完成后的磁盘情况如下:
4.1.2.3. 重新生成SID和修改计算机名
执行newsid.exe,在"Rename the Compter"这个步骤中,将计算机名设置为"Node1",其他均保持默认设置即可。
4.1.2.4. 虚拟机Node1配置文件
为 了保证共享磁盘的正常工作,在完成了上述配置后,还需要手工修改虚拟机配置文件。关闭虚拟机Node1,在我的电脑中找到Node1的配置文件(扩展名 为".vmx") D:\Virtual Machines\Node1\ Windows Server 2003 Enterprise Edition.vmx,在文件尾部加入下面的内容。
scsi1.sharedBus = "virtual"
scsi1:0.shared = "true"
scsi1:1.shared = "true"
disk.locking="False"
其 中"SCSI1"是共享磁盘使用的SCSI总线;"scsi1:1"中的最后一个1是设置的ID号,SCSI1:0对应 Quorum.vmdk,SCSI1:1对应SharedDisk01.vmdk,这两个与前面添加磁盘时的"Virtual device node"配置对应。
接下来按照类似的方法对Node2进行配置。
关闭节点Node1,开启Node2。在此期间,请保持Node1处于关闭状态。这样有助于保证附加到共享总线的磁盘上的数据不会丢失或遭到破坏。请尽量按照下图的方式关闭Node1,而不只是简单的关闭系统。
4.2.1. 硬件设置
4.2.1.1. 添加已有磁盘文件
在"VMware Server Console"中Node2的Commands列表中单击"
Edit virtual machine settings"
选择仲裁盘文件的路径:E:\Virtual Machines\ShareDisks\Quorum.vmdk
然后点Advanced按钮,
配 置virtual device mode为:SCSI 1:0,这和Node1中仲裁盘的配置相同。点完成按钮来完成已有仲裁盘的添加工作。按照相似的方法,添加已有共享数据磁盘文件:E:\Virtual Machines\ShareDisks\SharedDisk01.vmdk,配置virtual device mode为:SCSI 1:1
4.2.1.2. 添加网卡
按照和虚拟机Node1添加网卡时相同的步骤,为Node2添加第二块网卡。
4.2.2. 操作系统环境设置
4.2.2.1. 虚拟机Node2配置文件
为 了保证共享磁盘的正常工作,在完成了上述配置后,还需要手工修改虚拟机配置文件。关闭虚拟机Node2,在我的电脑中找到Node2的配置文件(扩展名 为".vmx") I:\virtual-systems\Node2\Windows Server 2003 Enterprise Edition.vmx,在文件尾部加入下面的内容。
scsi1.sharedBus = "virtual"
scsi1:0.shared = "true"
scsi1:1.shared = "true"
disk.locking="False"
其 中"SCSI1"是共享磁盘使用的SCSI总线;"scsi1:1"中的最后一个1是设置的ID号,SCSI1:0对应 Quorum.vmdk,SCSI1:1对应SharedDisk01.vmdk,这两个与前面添加磁盘时的"Virtual device node"配置对应。
启动虚拟机Node2
选择生成新的UUID。
4.2.2.2. 配置共享磁盘
打开Node2的磁盘管理器,可以看到之前创建的共享磁盘同样被系统发现了。只是由于Windows Server 2003系统的设计使然,只是没有自动为其分配驱动器号。我们需要手工对它分配和Node1相同的驱动器号。
分配仲裁盘、数据共享磁盘的驱动器号分别为:Q、R
分别为两个共享磁盘添加卷标:Quorum、SharedDisk01
4.2.2.3. 配置网络连接
按照和虚拟机Node1相同的方法配置Node2的两块网卡,
网卡public的IP地址为:192.168.100.102,子网掩码为:255.255.255.0,DNS服务器为:192.168.100.1。
网卡private的IP地址为:192.168.200.2,子网掩码为:255.255.255.0,不配置DNS服务器。取消在DNS中注册此连接的地址,不启用LMHOSTS查找,禁用TCP/IP上的NetBIOS。
4.2.2.4. 重新生成SID和修改计算机名
执行newsid.exe,在"Rename the Compter"这个步骤中,将计算机名设置为"Node2",其他均保持默认设置即可。
在建立群集之前,需要为组成群集的节点在域中建立用户,并且要将组成域的节点加入到域中。
创建两个域用户,一个为管理员,另一个作为群集服务的启动用户。
首先打开管理工具中的Active Directory 用户和计算机。
5.1.1. 建立组织单元
首先新建一个组织单元来单独管理群集用户。在"Active Directory 用户和计算机"中,右键单击"dbainfo.net",在弹出的菜单中依次选择新建>组织单位。
在随后出现的新建对象 – 组织单位中输入名称为:ClusterSQL。然后点确定按钮。
5.1.2. 建立域用户clusteradmin
首先建立管理员身份的域用户"clusteradmin"。
在"Active Directory用户和计算机"中,右键单击"dbainfo.net"下的"ClusterSQL",在弹出的菜单中依次选择新建>用户。
在随后出现的"新建对象 – 用户"对话框的"姓"、"名"、"用户登录名"中,输入"clusteradmin"。单击"下一步"按钮,在随后的步骤中设置用户密码。然后单击"完成"按钮完成用户创建。
接下来将clusteradmin用户加入到域管理员组中。
在"Active Directory用户和计算机"中,在左边列表中选择组织单位:ClusterSQL,在右边窗口的"clusteradmin"上点右键,在弹出的菜单中选择"属性"。
在 随后出现的"clusteradmin 属性"对话框中,单击选项卡中的"隶属于"标签,然后单击"添加"按钮,在随后弹出的"选择组"对话框中,输入"Domain Admins"(也可能单击"高级"按钮,通过"立即查找"来选择组)。随后单击"选择组"和"clusteradmin 属性"对话框上的"确定"按钮完成操作。
5.1.3. 建立域用户clusterservice
域用户clusterservice用于群集服务的启动帐户。在域中,该用户只需要是"Domain Users"组的成员即可。
创建域用户clusterservice的方法与创建域用户clusteradmin一样。只是不需要将其加到"Domain Admins"组中。
群集中的每个节点都需要添加到域中。启动两个群集节点Node1和Node2,在每个群集节点上完成下述操作,以将节点添加到域中。
打 开操作系统属性对话框,单击选项卡上的"计算机名"标签。然后单击"更改"按钮,在随后出现的"计算机名称更改"对话框中,选择"隶属于"下的"域"单选 项,并输入域名称"dbainfo.net"。单击"确定"按钮,在随后出现的身份验证对话框中,"用户名"中输入域管理员用户 名"dbainfo.net\clusteradmin","密码"中输入该用户的密码。然后单击"确定"按钮,
如果身份验证通过,则会看到欢迎加入域的提示信息框。单"确定"按钮,并根据提示重启操作系统。
操 作系统重新启动后,先以本机管理员用户登录(因为需要把域用户添加到本地管理员组中)。打开计算机管理,在计算机管理控制台中,依次展开"计算机管理(本 地)">"系统工具">"本地用户和组",单击"组"。在右边的列表中,右键单击"Administrators",在弹出的菜单中选择"属 性"。
在 随后弹出的"Administrators 属性"对话框中,单击"添加"按钮,在随后弹出的"选择用户、计算机或组"对话框中,输入"clusteradmin;clusterservice", 单击"确定"按钮,在随后出现的"输入网络密码"对话框中,输入域管理员名称:dbainfo.net\clusteradmin和密码。
以域管理员身份dbainfo.net\clusteradmin登录到虚拟机Node1,同时保持Node2处于关闭状态。展开Node1的"开始"菜单,定位到"程序"à"管理工具",打开"群集管理器"。
5.3.1. 选择创建新群集
点确定按钮后开始新建服务器群集向导,
5.3.2. 输入群集名为:ClusterSQL
5.3.3. 默认添加虚拟机Node1
5.3.4. 分析服务器配置
接下来向导开始分析当前的服务器配置情况。这时会对群集配置进行一个完全分析。如果有任何一项无法通过检测,务必检查原因、排除问题。故障排除后,不需要重新再来,只需点一下"重新分析"按钮就行。
5.3.5. 输入群集的IP地址
设置群集的IP地址 :192.168.100.110,该地址是Node1和Node2共同虚拟出来的群集IP。其FQDN地址对应于前面的ClusterSQL.dbainfo.net
5.3.6. 设置群集服务的启动用户
输入前面创建的群集服务帐号作为群集服务的启动用户。该帐号可以不是域管理员,但是必须是各节点的本地管理员。将其设置为"clusterservice",并输入该用户的密码和选择所在的域。
5.3.7. 配置信息汇总
显示之前配置的一些信息,单击"仲裁"按钮,如果当前默认选择的不是作为仲裁盘的磁盘 Q:,则改为选择"磁盘Q:",然后单击"OK"按钮返回"新建服务器群集向导"对话框。
如果发现配置有错误,可以点击"上一步"进行更改。否则点击"下一步",开始群集创建。
确认列出的所有信息都没有问题后,单击"下一步"按钮。
5.3.8. 开始创建群集
接下来开始创建群集,一般来说,只要前面群集前的分析没有问题,创建过程一般都不会有问题的。群集创建完成后,可以单击"查看日志"来查看群集的安装日志。
5.3.9. 完成新建服务器群集向导
至此,我们已经成功得在Node1上配置了群集服务。
5.3.10. 重命名群组为SQL2005
群集创建好后,群集管理器会自动连接到刚才创建的群集,可以看到群集创建向导自动为共享数据盘创建了一个组(组0)。其中,仲裁盘Q、群集的名称和群集IP地址在同一个组(群集组)中;共享数据盘在组0中。群集资源所有者均为Node1,并均处于联机状态。
将组0重命名为:SQL2005
成功完成上述步骤后,群集就建立起来了。
开启Node2节点,同时不要关闭Node1,否则无法加入现有群集。打开Node2的群集管理器,选择"添加节点到群集","浏览",找到之前创建的群集名ClusterSQL。点击"确定"。
进入添加节点向导
选择要添加到现有群集的节点。这里选择Node2
同样,节点加入前会进行群集配置分析。如果分析结果中有任何问题,请着手解决后再往下继续。
输入群集服务帐号
群集配置信息汇总,返回修改请点击"上一步",继续请点击"下一步"
开始"添加节点到群集"的配置操作
完成节点添加工作
所有的节点都添加到群集后,在群集管理器中,可以看到类似下面的结果。
至此,我们成功地在Node1上新建了一个名为ClusterSQL的群集,并成功将Node2加入该群集中。
进行专用网络配置。打开群集管理器,单击"群集配置",单击"网络",右键选择private的属性。
选择"为群集使用启用这个网络"和"只用于内部群集通讯(专用网络)"。
对上图中的几个选项,我稍微做一下解释:
为群集使用启用这个网络: 如果选定了该复选框,群集服务将使用该网络。默认对所有网络选定该复选框。
只用于客户端访问(公用网络):如果您想让群集服务仅使用该网络适配器与其它客户端进行外部通信,那么选择该选项。该网络适配器将不进行节点对节点通信。
只用于内部群集通信(专用网络):如果您想让群集仅使用该网络进行节点对节点通信,那么选择该选项。
所有通信(混合网络):如果您想让群集服务使用该网络适配器进行节点对节点通信和外部客户端通信,那么选择该选项。默认对所有网络选定该复选框。
对公用网络选择"为群集使用启用这个网络"和"所有通讯(混合网络)"。
由于群集服务总是尝试使用列于首位的网络适配器进行节点间的远程过程调用(RPC)通信。只有当群集服务无法使用第一个网络适配器进行通信时,才会使用列表上的下一个网络适配器。所以我们需要调整一下心跳适配器的优先级。
启动群集管理器。右击群集名称CLUSTERSQL,然后单击"属性",在弹出的对话框中单击"网络优先级"选项卡。将private上移至顶部。
启动"群集管理器"。右击左上角的群集名称CLUSTERSQL,然后单击"属性"。单击"仲裁"选项卡。在"仲裁资源"列表框中,选择"磁盘Q"。
此操作非必需!
当 出现所有的群集节点均同时启动并尝试附加到仲裁资源的情况时,群集服务可能无法启动。例如:在发生电源故障后,同时对所有节点恢复电力时,可能出现这种情 况。(尽管可能性比较低,但是还是有可能发生的。)要避免这种情况,可以编辑boot.ini文件。将Timeout设置不同的值,以避免两个节点同时启 动。
(1) 打开Node1上系统盘根目录下的boot.ini文件,按下图修改。
也许您会问,为什么要添加一行同样的记录。这是因为如果是单操作系统,无论你如何设置timeout的值都是没有用的。只有多系统才会读取这个值。所以我们复制同样的记录来实现启动延迟的目的。
(2) 同样的方法,将Node2上的boot.ini文件的timeout值设置为其他数值。如果您想在恢复电力时, Node1能够优先启动,就把Node2上的timeout值大于10。以错开同时启动。
前面我们在Node1和Node2新建群集和加入现有群集操作完成后,都分别给出了一张截图用来验证群集安装的正确性。如果您觉得验证不周全,还可以采用如下几个方法来验证。
最简单的验证就是通过群集管理器。打开群集管理器,查看是否能够打开到群集的连接。
查看群集服务是否启动
查看相关事件日志
相关注册表键值
在这一环节中,准备将测试分为初级测试和高级测试两块来验证群集的故障转移功能。
打开群集管理器,从图中我们可以看出,目前组SQL2005中的数据共享磁盘的所有者为Node1,状态为联机。
右键选择SQL2005的"属性",再选择"移动组"。
可以看到此时磁盘 R:的状态为"脱机"。
共享数据磁盘R的所有者很快转移到Node2上了,状态为联机。
此实验说明,在群集服务中,资源能够从一个节点手动转移到另一个节点。(当然也能够自动转移,后面的实验均属于自动转移)
7.2.1. 手工模拟故障1次
打开群集管理器,对磁盘Q进行一次"初始故障"操作。此时磁盘Q的所有者为Node1。
磁盘Q会经历联机挂起的阶段,持续的时间非常短暂
经过很短的时间后,磁盘Q又自动联机了,所有者还是Node1。
此实验说明,群集节点的资源,在遇到初始故障后,能够自我修复,重新回到联机状态。虽然在这个实验中没有体现出能够初始故障多少次,但是我可以告诉大家,是3次。如果初始故障次数超过3次,就不会自我修复了,而是会进行故障转移。下面的实验会证明这一点。
7.2.2. 手工连续模拟故障4次
打开群集管理器,对磁盘R进行"初始故障"操作,重复4次。此时磁盘R的所有者还属于Node1。
4次模拟故障后,定位到"资源",在右边窗口中可以看到,所有资源已自动迁移到Node2上,处于联机状态。
由于心跳侦测机制的作用(心跳信息大约每1.2秒一次),群集服务会发现Node1并不是真正的宕机,所以Node1会自动尝试联机。
节点Node1已恢复正常
此实验说明,在群集服务中,当某个节点故障超过3次后,则不会自动恢复,而是进行故障转移。同时也说明,当群集服务检测到原节点可用时,原节点会再次自动回到群集中。此过程的专业术语叫"故障回复"
7.2.3. 停止群集服务测试
在停止Node2上的群集服务前,先打开群集管理器,可以观察到,目前资源的所有者是Node2。
停止Node2上的群集服务。
再次回到群集管理器,发现资源的所有者已经切换到Node1上。因为Node2上的服务已停止,不可能自动恢复过来。仍旧通过心跳侦测机制,当丢失4次心跳信息后,(大约5秒),则会宣告该节点失败。所以图中显示红叉,表示Node2这个节点目前不可用。
此实验说明,当某个节点上的群集服务停止后,运行在该问题节点上的资源会自动转移到其他正常节点。
7.2.4. 模拟意外断电时故障转移
打开群集管理器,可以看到资源的所有者是Node1。
直接关闭虚拟机后,打开Node2上的群集管理器,发现资源已经为脱机状态,且群集组已显示不正常。
群集服务试图将资源所有者切换到Node2上。
资源已全部迁移到Node2上,且显示Node1不正常。
此实验说明,当群集中的节点遇到突发性的意外事件(如意外断电等。)后,资源会自动从问题节点转移到正常节点。
至此,我们已经完成了两个虚拟机节点上的群集服务配置。服务器群集已经完全可以运作了。下面准备安装SQL Server 2005故障转移群集!
链接:
在VM Server中配置SQL Server 2005故障转移群集(1)—创建虚拟机
在VM Server中配置SQL Server 2005故障转移群集(2)---配置群集
在VM Server中配置SQL Server 2005故障转移群集(3)—安装实例