U8设计之初被用在局域网单服务器环境下工作,而有客户为了保证业务的低故障延迟性做了sqlserver2008R2的双机热备(比较过时的做法)。但他们并没有使用2008自带的故障转移特性而是使用了第三方的双机控制软件,导致数据库服务切换时出现严重问题,只能说对自己手头的工具不熟悉,害死人啊。
使用vmware workstation8虚拟机搭建测试平台环境:
win server2003 R2 x86_64
sqlserver2008R2 x86_64
ufida U8v10.1
我设计的是3机集群环境,server1 域控制器、集群控制器;server2、server3 作为ufida应用服务器,外加两个共享磁盘(没那么多资金,就不做磁盘阵列了)。
一、建立域、建立集群(都有资料就不怎么详细说了,这里只说要点)
win server2008 已经装备了更为好用的故障转移集群管理工具,比2003自带的管理器好用得多!创建仲裁盘V,共享数据磁盘W(数据库文件的存放位置),数据盘的空间规划一定要充分,我到现在还没研究出来如何在win2003已经建立的集群中增加新的磁盘,除了重建集群还没找到更好的办法,有知道的不吝赐教,感激不尽啊!网上大多是在win server2008的故障转移集群管理器中直接添加,太方便了!
win2003 在安装sqlserver2008R2的故障转移集群前需要安装补丁(到最后一步才提示,还得推倒重来,坑爹啊!)
集群资源的所有者要求比较苛刻,除了对对群组的可能所有者要设置外,还要对组内的成员所有者属性进行设置,这一步至关重要,否则可能在集群服务切换的时候由于某些资源的所有者没有明确而导致服务启动失败甚至于集群服务不可用等严重的后果。
二、创建sqlserver2008R2故障转移集群
测试过server1、2资源切换,服务业能够正常切换之后就可以安装和创建sqlserver2008R2故障转移集群了。
首先在server12新建sqlserver2008的故障转移集群,此时server2 要关机或者断开网络连接。将集群的资源切换为server2,在集群控制器中增加数据库集群管理用户sqladmin(cluster)该用户也要添加到集群各个节点的主机上的administrator组中、集群管理用户群组sqlegine、sqlagent(全局)然后开始安装软件。软件的安装路径不要随便更改,否则无法继续。
设置集群名称和对外IP。
如果在检查时出现MSDTC服务没有开启的问题,首先在集群管理器的集群组中增加DTC资源,所有者设置为各个节点,再在server1上进行检查就能通过了(该服务也是很重要的)
server2上创建了sqlserver故障转移集群后,就可以将server3添加进这个集群了,安装步骤大同小异,只是要确认之前设置的用户和群组是否可用。
server3节点添加成功之后,在server1的集群管理器中查看各个节点的状态和集群归属是否设置正确,检查完成后做节点的资源切换实验,如果数据库服务、代理服务能正常启动,就算是成功了。
二、安装在集群中用友U8
这里有个不小的问题,前面说过U8是被设计在局域网单机环境下使用的,在软件设计上存在不小的缺陷,比如说刚装好的系统进行初始化时,生成的基础帐套文件必须在admin\主机名 目录下(开发者就没想过,或者说没法做基础帐套库的路径设置功能),然而集群的数据库是在共享磁盘上的,这时如果直接进行初始化操作必定失败!其实解决方法很简单,不过也比较烦,就是在另一台安装有sqlserver2005/2008的PC上装好U8,进行初始化,然后将其生成的基础帐套库文件挂载到集群数据库中。
U8v10.1要成功安装到转移集群上必须在各个服务节点上安装SQLServer2005_BC 补丁。之后的安装步骤跟单机版安装一模一样,每个节点都要安装完整的服务端(非常漫长的等待),安装完成后逐个节点重启(不要全部重启哦!否则整个集群就可能在第二次启动时崩溃,为啥地球人都知道),初始化帐套数据库那一步直接无视,然后用客户端连接用友服务器,测试通过,之后再做各个节点的停机服务切换启动实验,看U8能否正常连接服务器。
三、U8客户端登录测试
server2 作为资源所有者时,关闭server2,则服务资源自动切换到server3,这时如果已经登录U8软件会有有倒计时的提示然后退出。之后只要重新选择数据源就可以重新登录了。
好了不少时间研究这个故障转移集群,但是感觉配置上并没有oracle的RAC来的干脆。ms的集群工具还有很长的路要走。