【IT168 技术文章】
Domino 群集简介(一)
概述
----随着Lotus Domino群件系统的普遍应用,Domino系统的规模不断扩大,基于Domino的关键应用也不断增多。Domino系统的可用性和可扩展性就成了许多用户关注的问题。针对这些方面的需求,Lotus提供了Domino群集的功能。当群集中的一个Domino服务器出现故障或需要进行维护时,用户将转向群集中的其他服务器,这样整个系统的可用性就大大提高了。
----一般来说,用户在Domino系统中使用群集有以下原因:
提高关键应用的可靠性
提高负载的可伸缩性
迁移服务器
灾难备份
Domino群集的优点包括:
失效转移
----用户的关键数据库、关键服务器,包括中继服务器都可以转移到群集中其他服务器。发生失效转移时,用户的请求被重定向到其他服务器,这样,用户在服务器当机时仍可以访问数据库。
负载平衡
----服务器间的负载平衡可以保证用户对服务器的请求较均匀地分布在群集里的各个服务器上,优化整个系统的性能。
群集复制
----要建立有效的群集,关键之一就是在两个或多个服务器上建立数据库的副本。 群集复制保证了所有的修改都能立即传播到群集中其他副本上。它利用事件驱动的机制使数据库严格同步,保证了信息的高可用性和一致性。
系统扩展
----当用户数增加时,利用群集可以方便地对Domino系统进行扩展。用户帐户可以均匀地分布在群集中,这样,对突发的负载高峰能够进行负载平衡。数据库也可以建立多个副本,提高数据的可用性。
群集的规划
----规划一个Domino群集系统,主要需考虑以下方面:
确定Domino系统需要提供的服务
----Domino 服务器上的任务包括邮件邮递、复制、Internet邮件、LDAP目录服务、Web、中继服务等等。确定了需要提供的服务之后,才能决定是否需要群集,因为并不是所有的任务都支持群集。例如,Domino R4.6x的群集不支持Web用户,因此,将Web数据库放在R4.6x群集上并不能提高可用性。而对于使用Notes客户端访问服务器的用户来说,将邮件和应用数据库放在群集上可以实现高可用性和负载平衡,是值得考虑的方案。
分析数据库的特点
----确定了Domino系统需要提供的服务之后,需要分析系统中要用到的数据库的特点,以帮助进行硬件的规划。数据库的主要特点包括:
系统中数据库的数量和类型
数据库的大小
数据增加、修改和删除的频率
数据的时效性
数据库的用户的数量和分布
数据库副本在群集中的位置
服务器之间的网络连接
----分析了上述特点后,可以据此决定哪些数据库需要在群集中建立多个副本。一般说来,邮件数据库建立两个副本就足够了,内容需要频繁更新的应用数据库也不应超过三个副本,以免数据同步所需要的开销太多,影响系统的性能。
分析用户的特点
----根据所使用的服务器功能,用户可以分为四类
仅使用邮件
邮件和日程安排
数据库用户
Web用户
网络协议和拓扑结构
----Domino 支持TCP/IP、SPX/IPX和NetBEUI等协议,但群集内部的通讯只能使用TCP/IP协议。因此,Notes用户可以用其他协议访问 Domino服务器,而服务器之间的群集复制则基于TCP/IP。在同一群集中的服务器必须使用相同的协议集。Lotus推荐用户在群集环境中只使用 TCP/IP,因为失效转移等功能专门针对TCP/IP作了优化。
----Domino群集对网络拓扑没有限制,只要是能够支持Domino本身的网络都可以。建议使用专门的局域网来进行服务器之间的通讯,这样,可以减少群集内部的通讯对整个系统性能的影响。
规划硬件环境
----群集硬件的规划原则与单个Domino服务器基本相同,主要的区别在于需要预留一些内存和CPU处理能力,用来处理群集内部的通讯,以及负载平衡。群集中的各服务器不一定要使用相同的硬件,规划时主要考虑硬件能否提供需要的性能指标就可以了。硬件的瓶颈通常出现在以下地方:
内存
CPU
磁盘I/O
磁盘空间
网络带宽
其中,内存可以按用户数量进行估算:
---- 服务器需要的基本内存 + (并发用户数 / 2)MB
复制器需要的内存为:
---- 复制器数量 * 16 MB + 群集复制器数量 * 16 MB
---- 所需的磁盘空间主要用于操作系统、Domino程序文件、Domino数据库等,Windows NT系统还需要页面文件(大小等于实际物理内存+10%)。
群集的设计
---- 以下从技术的角度对群集进行说明。
Domino 群集简介(二)
群集的构成
----随首先,管理进程(AdminP)对Domino群集的建立和运行起着极为重要的作用。将服务器加入群集的过程就是由管理进程完成的。
----群集的主要组成部分包括:
群集管理进程
----群集管理进程 (CLADMIN) 是Domino的服务器任务之一,它负责配置(包括增加、删除)和启动其他群集组件。群集管理进程在服务器启动和群集成员变动时都会自动运行。
群集管理器
----群集管理器运行在群集中的每个服务器上,用来跟踪群集中所有成员的状态,包括每个服务器是否可用,负载如何等信息。当一个服务器被加入群集中时,Domino会自动启动群集管理器。
群集管理器的任务包括:
确定哪些服务器属于同一群集
监测服务器的可用性及负载
将服务器状态的改变通知其他群集管理器
根据群集中服务器的状态,重定向对数据库的请求
根据群集中服务器的状态,平衡服务器的负载
将失效转移和负载平衡事件记录到服务器的日志中
群集复制器
----群集复制器任务(CLREPL)负责进行群集中数据库副本间的数据同步。它是事件驱动的,利用CLDBDIR.NSF数据库来确定哪些服务器上的数据库需要复制。
----一旦某个服务器不再响应,群集复制器会重试几次,并不断增加重试的间隔,直到间隔达到一小时。因此,当服务器从故障中恢复后,群集复制器不会再尝试进行复制,最好立即强制进行常规复制,以保证数据的同步。
群集统计信息
----群集的统计信息保存在每个服务器的统计信息缓存中。群集共有两类统计信息:
----Server.Cluster,与服务器的活动相关的统计信息,如失效转移事件、群集中服务器的状态等
----Replica.Cluster,与群集复制事件相关的统计信息,如更新的文档数等。
群集数据库目录
----群集数据库目录(CLDBDIR.NSF)在群集中的每个服务器上都有一个副本,它是由群集数据库目录管理器任务(CLDBDIR)自动创建和更新的。它包含群集中所有数据库的目录,及每个数据库的简要表。其他群集任务和组件会从CLDBDIR.NSF中读取所需的信息。
Notes客户端群集组件
----Notes客户端包含两个群集组件,群集缓存和Notes API。群集缓存就是data目录中的CLUSTER.NCF文件,其中保存了群集中其他服务器的列表。Notes API使应用程序可以使用Domino群集的失效转移和负载平衡功能。Notes客户端不需要作专门的配置。
失效转移
----Notes客户端第一次访问群集中的服务器时,会自动产生CLUSTER.NCF文件,记录群集中服务器的列表。从一个服务器到另一个服务器失效转移的过程为:
用户视图打开服务器上的数据库
客户端收到"服务器没有响应"消息,之后搜索CLUSTER.NCF文件,找到并访问列表中的下一个服务器
服务器的群集管理器确定所请求的数据库的副本在哪里
如果此数据库副本不在当前服务器上,群集管理器将告知客户端副本所在的服务器的名称,客户端由此去访问该服务器
用户看到所需的数据库已打开
----失效转移通常是按副本来进行的,实际上还可以按路径来进行,这主要用于同一服务器上有同一数据库的多个副本的情况。
----当某个系统不可用时,以下用户活动会触发失效转移:
对数据库的操作:
打开数据库
打开文档链接、视图链接或数据库链接
使用@commanf([FileOpenDatabase])
运行LotusScript程序,其中调用了Db.OpenWithFailover
从Java程序调用打开数据库的函数
工作站复制
对宿主服务器的操作:
查找服务器地址
发送邮件
查找邮件地址
邮件邮递
通过服务器打开URL时
----不会发生失效转移的情况:
用户正在编辑文档,只有重新打开数据库才能触
发失效转移,因此用户的修改不能直接保存
选择菜单"文件" - "数据库" - "属性","存取控
制","打开",或"新建拷贝"
选择菜单"查看" - "转到"
指定在已不可用的服务器上运行的代理
服务器任务
服务器作为新建数据库的模板服务器
失效转移对用户的影响
----用户打开数据库时如果发生了失效转移,用户实际打开的数据库图标会出现在工作台上,以后也将一直访问新的数据库副本,除非管理员将服务器标记为忙,用户才会转移回去。邮件数据库发生失效转移后,如果用户重新登录Notes,或切换了场所文档,邮件书签将恢复到宿主服务器上,不管该服务器是否已恢复。
负载平衡
----负载平衡通过将新的会话重定向到其他服务器上,使负载较为均匀地分布在群集中,从而提高群集资源的利用率。当Domino服务器作为群集的一员运行时,它会不断监测自己的负载情况,也会记录其他服务器的状态。当负载达到管理员设定的阀值时,服务器的状态为忙。如果用户此时执行前面列出的可触发失效转移的操作之一,试图打开一个会话,他将被重定向到群集中其他可用的服务器上。如果所执行的操作不能触发失效转移,或没有其他服务器可用,用户的操作将仍在原服务器上执行,尽管服务器已处于忙状态。
群集设计规则
---- 以下是一些群集的基本规则:
必须使用层次名,这是AdminP的要求,AdminP用来建立群集
在同一群集中的服务器必须属于同一域,即共享同一公共通讯录
一个服务器在同一时刻只能属于一个群集
群集中可以有2到6个服务器
一个域中可以有任意多个群集
群集中的服务器必须使用同样的网络协议集
建议使用专用的网络进行服务器间的通讯
可以将不同硬件和操作系统的服务器加入同一群集

群集的主要组成部分包括