浙江省电力办公自动化系统(以下简称:OA系统)是全省推广,统一软件、统一平台、统一规划与实施的一套大型应用系统。它的硬件平台采用IBM的小型机AS/400,软件采用Lotus Domino/Notes,并实施了在一台小型机上配置多个Domino的方案。
嘉兴电力局随着市局、县(市)OA系统单轨制的实施,对网络、服务器的要求不断提高,而以往采用的单机运行配置模式,已经无法满足连续运行的要求。因此嘉兴电力局在全省电力系统第一个实现了在AS/400服务器环境下双机运行、Domino群集方案。在软件级解决了系统的双工问题,使得任何一台单机无法运行时,都不影响全局OA的正常应用,从而实现系统和数据的高可用性。
嘉兴电力局群集的规划
嘉兴电力局OA系统有两台AS/400 820小型机,每台AS/400上配置两块千兆网卡,操作系统版本是V5R1,分别运行3个和4个Domino服务,Domino的版本是R5.0.5。实施群集后,两台AS/400分别又增加了4个和3个Domino服务,使每台服务器运行7个Domino服务。在此,主要以一个Domino实施群集为例进行介绍。由于每台AS/400配置双网卡,我们考虑为群集创建私有局域网,将群集通过服务器探测和群集复制产生的网络通讯分离到私有局域网,这样可更多地保留主局域网的可用带宽。
群集的配置
配置Domino服务器
以JXPHEPMA01/Serves/ZPEPC为例,首先,在同一Domino域中注册另外一个Domino服务器:JXPHEPMA02/Serves/ZPEPC。在JXPHEPMA01上安装和配置JXPHEPMA02。
权限设置
设置Domino群集中Administrator以及服务器所需要的权限:
(1) 设置创建数据库副本的权限
在JXPHEPMA01及JXPHEPMA02服务器配置文档的安全性页面上,把创建数据库副本的权限赋予系统管理员。
(2) 增加群组
群组名称:JXPHEP_Cluster_01;
群组类型:多用途;
成员:JXPHEPMA01/Serves/ZPEPC ,JXPHEPMA02/Serves/ZPEPC。
(3) 修改数据库存取控制
修改JXPHEPMA01服务器上数据库names.nsf、admin4.nsf、catalog.nsf、cldbdir以及所有应用数据库的存取控制列表。在基本页面上,添加JXPHEP_Cluster_01群组,
用户类型:服务器组;
存取级别:管理者。
在高级页面上,
管理服务器:JXPHEPMA01/Serves/ZPEPC
选中此数据库的所有副本并采用相同的存取控制列表。完成存取控制设置后,群集服务器就对数据库及其副本有一致的控制权限。
在群集服务器上创建连接。
创建JXPHEPMA02/Serves/ZPEPC到JXPHEPMA01/Serves/ZPEPC一个连接。
创建群集
在 Domino Administrator 中,单击“配置”附签,展开“服务器”,并单击“所有服务器文档”,选择要添加到群集的服务器:JXPHEPMA01/Serves/ZPEPC,JXPHEPMA02/Serves/ZPEPC,单击“添加到群集中”,当询问选择要添加服务器到其中的群集时,选择“新建群集”,键入新群集的名称:JXPHEP_Cluster_01。将上面的数据库及所有应用数据库都创建副本到JXPHEPMA02服务器上。
创建私网
(1) AS/400增加IP地址。
在两台小型机的另外一块网卡上分别增加IP地址192.168.64.1 和 192.168.64.2,作为每个Domino的第二个IP地址。
(2) 群集服务器添加端口。
在“服务器”“设置端口”中新建端口,名称:tcp;驱动器:TCP。在“服务器”每个群集成员的“服务器”文档的“端口”“Notes 网络端口”附签中,添加为私有局域网,启用新端口,如图1所示。
图1 (3) 修改NOTES.INI文件。
从相应的子网为每个端口分配 IP 地址并且将信息以下列格式写入 NOTES.INI 文件中:
PORT1_TcpIPAddress=0,a.b.c.d:1352
PORT2_TcpIPAddress=0,e.f.g.h:1352
其中 PORT1 和 PORT2 是端口名称,a.b.c.d 和 e.f.g.h 是这些端口的 IP 地址。如:JXPHEPMA01端口名称为 TCPIP 和 tcp,这些信息如下所示:
TCPIP_TcpIPAddress=0, *.*.*.*:1352
tcp_TcpIPAddress=0,192.168.64.1:1352
Server_Cluster_Default_Port=tcp
然后重新启动服务器,让修改的配置生效。
群集测试
状态测试
在Domino服务器的控制台上键入:show cluster,出现Domino群集信息,如图2所示:
可以看出,群集中的服务器状态都正常。
复制分析
从“服务器”、“分析”、“群集分析”,如图2所示进入:
图2 产生群集的分析报告,如图3所示。
图3 通过群集分析报告显示的问题,对数据库的存取控制列表进行修改,保证数据库副本的完全一致性。
私网测试
为了确保群集复制使用私有局域网,为此,可以查看群集统计信息。单击“服务器”“统计信息”附签,展开群集的端口名,私有局域网端口tcp的下列统计信息:BytesReceived,BytesSent;展开 Replica,Cluster,SessionBytes,并查看下列群集复制统计信息:In,Out。比较 tcp.portname.BytesReceived 和 Replica.Cluster.SessionBytes.In的值,tcp.portname.BytesSent 和 Replica.Cluster.SessionBytes.Out 的值,这些值应彼此非常接近,但并不相同,因为私有网络不仅用于群集复制。
邮件测试
(1) 在任意一个Domino服务器上以某一身份向某用户User1的邮箱发信,两个服务器刷新后,能立即收到,速度也很快。
(2) 关掉管理服务器JXPHEPMA01后,向User1发邮件,以User1的身份进去后能马上收到邮件。
根据实际应用,再进行邮件的转发、删除等一系列测试工作,均可实现同步,则可以证明邮件的群集是成功的。
收发文的测试
在任意一个Domino服务器上新建一个收发文的流程后,此流程的数据库马上在另一个Domino服务器上得到更新。以相应权限进去后,也能进入流程进行操作。关掉任意一个Domino服务器后,收发文应能正常收取。
失效转移测试
关掉JXPHEPMA01服务器后,客户端会自动连接到JXPHEPMA02服务器上,在用户层面上,没有感觉,其它应用操作均正常,只有查看当前数据库属性时才会发现目前使用的是JXPHEPMA02服务器上的数据库。
群集应用中存在的问题
(1) 应用数据库新建后,副本不会自动在群集的另外一台服务器上创建,需要手工复制。而且新建的数据库在复制前,首先要按照群集的要求修改数据库存取控制列表,保证今后Domino群集中数据库副本的一致性。
(2) 有些应用数据库实时性很强,群集不能保证每一秒看到的两个数据库副本一摸一样。两个用户分别在两个群集服务器上,对同一个数据库的同一条文档进行操作时,两边的内容有可能会存在不一致性。针对这种情况,可以通过设置服务器的有效阈值来解决,如果服务器有效指标小于有效阈值,则服务器被标记为 BUSY。服务器标记为 BUSY 时,打开数据库的请求将重新定向到群集中的其它服务器。在JXPHEPMA02服务器NOTES.INI文件中添加:
server_availability_threshold=100
这样服务器被标记为 BUSY。平常情况下,用户只对JXPHEPMA01上的数据库进行操作,不过群集间数据库的复制照常进行,当JXPHEPMA01服务器失败时,用户的操作转移到JXPHEPMA02上。这样保证了数据库文档的一致性,不过群集的负载均衡就无法实现。
(3) 应用数据库的副本不能实现文档的完全一致。这主要是数据库设计时使用“读者”域限制对特定文档的存取。在存取控制列表中具有“编辑者”(或更高)存取级别的用户,若未列入“读者”域中,也不能读文档,更无法复制该文档。所以把服务器增加到每个“读者”域中,保证群集中的服务器对数据库的每个文档有读取权限,实现副本的一致。
Domino群集在AS/400上的实现,使得用户可以实现无间断的访问数据,平衡服务器间的工作负载,并且在扩大企业规模时保持运行。但是,Domino群集的真正实现还是体现在应用数据库的群集实现,所以在数据库设计阶段就要把群集方案考虑进去,这样才能达到真正意义上Domino群集的成功,