火星球长
作者火星球长·2012-06-17 23:55
软件架构设计师·Freewheel

什么是Domino群集?

字数 7178阅读 1543评论 1赞 4

Domino 群集是由两个或更多个服务器组成的群组,它可以使用户连续地访问数据、平衡服务器间的工作负载、提高服务器的性能以及在扩大企业规模时保持性能。群集中的服务器包含了在任何时间都可用的数据库复本。如果用户试图访问群集中某服务器上不可用的数据库,那么 Domino 将打开群集中其他服务器上此数据库的复本(如果复本可用)。Domino 不断地同步数据库,所以无论用户打开哪个复本,其信息总是相同的。

IBM Lotus Notes(R) 客户机可以访问所有 Domino 群集服务器。HTTP 客户机(Internet 浏览器)只能访问 Domino 群集中的 Domino Web 服务器。

群集如何帮助您?

群集的主要优点在于:

  • 重要数据库的高可用性

    当发生硬件或软件问题时,群集服务器会将打开数据库请求重新定向到群集中的其他服务器,以保证用户对重要数据库的不间断访问。这个过程叫故障转移。群集为重要的商务数据库和服务器提供故障转移,其中包括将中继服务器故障转移到群集中的其他服务器。故障转移还允许您在对用户的负面影响极小的情况下执行服务器维护(例如,硬件和软件升级)。

  • 工作负载平衡

    用户试图访问负载很重的服务器上的数据库时,Domino 可以将用户请求重定向至不像该服务器那样繁忙的其他群集服务器,以使工作负载平均分布在该群集上。平衡群集服务器的工作负载有助于优化系统性能,从而实现快速数据访问。

  • 可缩放性

    随着所支持的用户数量的增加,可以通过向群集中添加服务器来保持服务器的高性能。也可以创建多个数据库复本来使数据可用性达到最高,并可以按对企业成长的规划,将用户移至其他的服务器或群集。随着企业的发展,可以跨群集分配用户帐户,并在群集内平衡额外的工作负载以优化系统性能。

  • 数据同步

    要使群集发挥作用,关键是在两个或更多个群集服务器上设置复本,以便在一个服务器停止运行或繁忙时,用户仍可以访问数据。群集复制可以确保不管是数据库还是群集成员自身的所有更改都会立即传递给群集中的其他数据库或服务器。所以,这些连续同步的数据库能够保证信息的高度可用性。

  • 分析工具

    使用群集分析工具、日志文件、"监控配置"数据库和"监控结果"数据库以及服务器监控器,可以分析群集活动并作必要的更改以提高性能。

  • 轻松更改操作系统、硬件或 Domino 版本

    当您希望更改硬件、操作系统或 Domino 版本时,可以将该群集服务器标记为 RESTRICTED,以便访问此服务器上的数据库的请求可以被故障转移到群集中包含此数据库复本的其他群集服务器。从而实现了在不中断用户工作的情况下进行更改。

  • 数据备份和灾难规划

    可以将一个群集服务器设置为备份服务器以保护重要的数据。可以禁止用户访问此服务器,而群集复制总能够使该服务器随时得到更新。甚至可以在一个 WAN 上来进行此操作,以使备份处于地理上不同的位置。

  • 易于管理

    只需执行几个简单操作就可以创建一个群集。也可以通过几个简单操作将服务器添加到群集中、从群集删除服务器以及在群集之间移动服务器。另外,可以将数据库拖放到群集中并指定哪些群集服务器应该接收复本。还可以在注册用户时为用户创建多个邮件复本和漫游文件复本,并可以同时监控群集中的所有服务器。

  • 使用 Domino 支持的任何硬件和操作系统

    可以使用为 Domino 服务器用过的相同硬件来设置群集。不需要使用特殊的硬件来创建 Domino 群集。另外,群集可以包含运行 Domino 所支持的任何操作系统的服务器。

群集组件

下列几个组件协同工作以确保群集正常运行。这些惯用选项包括:

  • 群集管理器
  • 群集数据库目录
  • 群集数据库目录管理器
  • 群集管理员
  • 群集复制器
  • Internet 群集管理器

下列各部分描述了除 Internet 群集管理器(见使运行 Internet 协议的 Domino 服务器群集化部分)之外的其他组件。

群集管理器

群集管理器运行在群集中的每台服务器上,并跟踪群集中其他所有服务器的状态。它保存群集中当前可用服务器的列表,并维护每台服务器的工作负载信息。

向群集添加服务器时,Domino 会自动启动该服务器上的群集管理器。只要服务器是群集的一部分,那么每次启动服务器时都会启动群集管理器。

每个群集管理器通过与群集中其他服务器交换消息(称为探测信号)来监控群集。通过这些探测信号,群集管理器可以确定其他群集服务器的工作负载和可用性。当有必要将用户请求重定向至其他复本时,群集管理器将搜索群集数据库目录以确定哪些群集服务器包含所请求数据库的复本。然后,群集管理器将把包含复本的服务器以及这些服务器的可用性告知客户机。此操作促使客户机将请求重定向至包含复本的最可用的服务器。

群集管理器的任务包括:

  • 确定属于群集的服务器。它通过定期监控 Domino 目录查看"服务器"文档中 ClusterName 域和群集成员列表的更改来做到这一点。
  • 监控群集中服务器的可用性和工作负载。
  • 将服务器可用性的更改告知其他群集管理器。
  • 将可用的复本和群集服务器的可用性告知客户机,以便客户机可以基于群集服务器可用性重定向数据库请求(故障转移)。
  • 根据群集服务器的可用性平衡群集中服务器的工作负载。
  • 在服务器日志文件中记录故障转移和工作负载平衡事件。

群集管理器在启动时会检查 Domino 目录以确定属于此群集的服务器。它在内存内服务器的群集名称高速缓存中维护此信息。群集管理器使用此信息与其他群集管理器交换探测信号。另外,群集管理器还使用群集名称高速缓存来存储从这些探测信号中收到的可用性信息。此信息有助于群集管理器执行上述功能,如故障转移和工作负载平衡。

要查看群集名称高速缓存中的信息,请在服务器控制台上键入 show cluster。

群集数据库目录

群集数据库目录 (CLDBDIR.NSF) 的复本位于群集中每一台服务器上。群集数据库目录包含一个关于群集中每个数据库及其复本的文档。此文档包含数据库名称、服务器名称、路径、复本标识符以及其他复制和访问信息。群集组件使用此信息执行其功能,如确定故障转移的路径、控制对数据库的访问、确定要复制的事件以及将其复制到何处。

群集数据库目录管理器

每台服务器上的群集数据库目录管理器都会创建群集数据库目录,并用最新的数据库信息随时对其进行更新。第一次向群集添加服务器时,群集数据库目录管理器会在该服务器上创建群集数据库目录。向群集服务器添加数据库时,群集数据库目录管理器将在群集数据库目录中创建包含有关新数据库信息的文档。从群集服务器中删除数据库时,群集数据库目录管理器将从群集数据库目录中删除此文档。另外,群集数据库目录管理器还会跟踪每个数据库的状态,如被标记为脱离群集服务待删除的数据库。

当群集数据库目录发生更改时,群集复制器立即将此更改复制到群集中每台服务器上的群集数据库目录。这样就可以确保每个群集成员都有关于群集中数据库的最新信息。

群集管理员

群集管理员执行许多与群集相关联的内务任务。例如,向群集添加服务器时,群集管理员将启动群集数据库目录管理器和群集复制器。另外,群集管理员还启动管理进程(如果尚未运行)。从群集中删除服务器时,群集管理员会使群集数据库目录管理器和群集复制器停止运行。另外,它还会删除该服务器上的群集数据库目录,并清除其他服务器的群集数据库目录中有关该服务器的记录。

群集复制器

群集复制器随时使群集中各复本的数据保持同步。只要群集中的数据库发生了更改,群集复制器就向群集中的其他复本立即推出此更改。这样可以确保用户每次访问数据库时看到的都是最新版本。另外,群集复制器还复制存储在数据库中的个人文件夹的更改。尽管如果群集中有多种活动,用户可以运行多个群集复制器,但缺省情况下,群集中的每台服务器运行一个群集复制器。

群集复制器搜索群集数据库目录,以确定其他群集成员上哪些数据库有复本。群集复制器将此信息存储在内存中,并使用它将更改复制到其他服务器。群集复制器定期(缺省情况下每 15 秒钟一次)检查群集数据库目录中的更改。当群集复制器检测到群集数据库目录中的更改时(例如,已添加的或已删除的数据库或现在由群集复制禁用的数据库),它将更新存储在内存中的信息。

群集复制器只向群集中的服务器推出更改。标准复制器任务 (REPLICA) 将把更改复制到群集外的服务器并从群集外的服务器复制更改。

向群集添加服务器

要向群集中添加服务器,您必须拥有下列访问权限:

  • "作者"存取级别和"删除文档"权限以及在 Domino 目录中的 ServerModifier 和 ServerCreator 角色
  • "作者"存取级别和在"管理请求"数据库中的"创建文档"权限

如果可能,请使用管理服务器将服务器添加到群集。管理服务器不必是群集的一部分。

如果服务器是其他群集的一部分,则不必将它从原有群集中删除并添加到新的群集。群集的管理进程可以将服务器从原始群集中删除,然后添加到新的群集。

注意 无法使用 Web Administrator 向群集中添加服务器。

1. 从 Domino Administrator 中,确保管理服务器或其他服务器可访问。

2. 单击"配置"附签。

3. 在任务窗格中,展开"服务器",并单击"所有服务器文档"。

4. 在结果窗格中,选择要添加到群集中的服务器。

5. 单击"添加到群集"。

6. 选择您要向其中添加服务器的群集,然后单击"确定"。

7. 选择"是"将立即把服务器添加到群集,或者选择"否"将向管理进程提交请求,以便将服务器添加到群集。

8. (可选)如果在步骤 7 中选择了"否",并且未使用管理进程向群集中添加服务器,请在您使用的服务器和管理服务器之间强制复制,以使管理服务器可以尽快接收到被请求的更改。

9. (可选)如果在步骤 7 中选择了"否",请在管理服务器和群集服务器之间强制复制,以使群集服务器可以尽快接收更改。

10. (可选)如果在步骤 7 中选择了"是",群集信息将立即添加到服务器上的 Domino 目录(用此目录将服务器添加到群集)中。如果您使用的服务器不是群集中的一部分,请将更改复制到某个群集服务器上。

向群集中添加服务器时,最初必须发生的复制量可能会影响性能。根据服务器上数据库的类型以及创建的复本数目不同,添加服务器会影响 CPU 性能、输入/输出以及网络通信。所以,根据群集中设备的能力,一次仅将一个服务器添加到群集中是一个很好的办法。如果为群集通讯设置了专用局域网,就不必太关注添加服务器的问题,因为它不会影响您的主网络。

群集创建进程

可以选择立即将服务器添加到群集,或选择使用管理进程将服务器添加到群集。尽管选择"立即"将服务器添加到群集速度较快,但有时会导致复制冲突。

如果使用管理进程将服务器添加到群集,Domino 会将请求提交到"管理请求"数据库,以便将群集名称添加到群集中每个服务器的"服务器"文档。如果要使用管理服务器创建群集,则管理进程会立即运行,并将群集名称添加到"服务器"文档中。如果不使用管理服务器,则在管理进程将群集名称添加到"服务器"文档之前,正使用的服务器上的"管理请求"数据库必须复制到管理服务器。

在管理进程对管理服务器的 Domino 目录中的"服务器"文档进行更改之后,Domino 将把此更改复制到群集中的其他服务器,以确保每个群集服务器都有已更新的群集服务器列表。

如果选择立即将服务器添加到群集,Domino 会立即在创建群集的服务器上的 Domino 目录中更改"服务器"文档。如果服务器是群集的一部分,此服务器会立即启动下面列出的群集进程,并将它的 Domino 目录与群集中的其他服务器进行复制,这样,其他群集服务器就得知哪些服务器已经加入了群集。如果没有使用群集的成员服务器来创建群集,那么当所用服务器的 Domino 目录与群集中某个服务器的 Domino 目录进行复制时,这个过程才会开始。

群集创建过程中每个服务器上都会发生下列操作:

  • Cluster Administrator 和 Cluster Manager 启动。
  • Cluster Administrator 启动管理进程(如果它还没有运行)。
  • Cluster Administrator 启动群集数据库目录管理器。
  • Cluster Administrator 启动群集复制器。
  • 群集数据库目录管理器创建群集数据库目录 (CLDBDIR.NSF)。
  • 群集数据库目录管理器更新群集数据库目录,使其包含关于服务器上每个数据库的文档。
  • Cluster Administrator 向群集中的其他服务器复制群集数据库目录和 Domino 目录,使它们全部保持同步。
  • 日程安排管理器创建空闲时间数据库 (CLUBUSY.NSF)。
  • 空闲时间数据库向其他群集服务器复制,使它们全部保持同步。

Domino 目录进行更新以包括新群集时,每个群集服务器将开始把消息(称为探测)发送到群集中的其他服务器。这些探测消息将收集关于群集中其他服务器状态的信息

如何在群集中进行复制

群集复制是由事件驱动,不是定时驱动的。当群集复制器检测到数据库更改时,它会立即向群集中的其他复本推出此更改。如果有积压的复制事件,群集复制器将把这些事件存储在内存中,直至可以向其他群集服务器推出它们。如果在发送上一次更改之前同一数据库又发生了更改,则群集复制器将集中这些更改,然后一起发送以节省处理时间。

由于 Domino 仅在内存中存储复制事件,所以只有在源服务器和目标服务器都可用时,才能成功完成复制。如果目标服务器不可用,群集复制器将继续在内存中存储这些事件,直至目标服务器变为可用。群集复制器尝试将这些复制事件定期推向目标服务器。两次尝试之间的时间间隔从一小时开始逐渐增加,直至最大值(一天)。

如果在完成复制前源服务器停止运行,则内存中的复制事件将丢失。因此,无论何时重新启动群集服务器,都应使用标准复制(REPLICA 任务)对群集中的所有成员执行立即复制。在群集服务器之间定期安排复制(如一天几次)也是确保数据库保持同步的好方法。

当群集复制器将复制事件记录在日志文件中时,同时还会记录下任何等候重试的复制事件。这使您可以查看当前没有被同步的数据库以及查看阻碍复制进行的错误。纠正错误并成功完成复制后,将不再记录错误信息。

"群集复制器"将复制公式的处理留给标准复制器。因为这些公式可能占用大量处理能力,所以为降低使用群集复制的负载,群集复制器不处理这些公式。因此,如果使用选择性复制,数据库暂时可能包括与选择公式不匹配的文档。运行标准复制时,Domino 将删除这些文档。

此外,群集复制器不遵守"复制设置"对话框中"高级"面板上的设置。因此,不能禁用特定数据库元素(如 ACL、代理和设计元素)的复制。群集复制器总是尝试使所有复本相同,以便故障转移的用户不会注意到发生了故障转移。

注意 群集复制器会忽略"节省空间"设置"仅接收摘要和 40 KB 的 RTF 文本"。

警告 标准复制不能自动删除对特定数据库元素(如 ACL、代理或设计元素)所做的更改。如果限制这些项的复制对数据库很重要,请考虑对该数据库只使用标准复制,不使用群集复制。

群集中的复制历史

因为群集中复制事件发生得极其频繁,所以群集复制器不能在每次复制数据库时都读取复制历史记录或向其中写入信息。复制成功时,历史记录信息将被存储在内存中。每个后续的成功复制事件都会添加到保存在内存中的历史记录信息中。每隔大约一小时,群集复制器将历史记录信息传送至数据库。

群集中个人文件夹的复制

标准复制期间,个人文件夹及其内容不进行复制(与文件夹所有者的客户机进行复制时除外)。不过,在群集中,个人文件夹将被复制到群集中的其他复本。这样可以确保当客户机故障转移时,无论访问哪个复本,数据库的内容都是相同的。群集复制和标准复制都支持在群集中复制个人文件夹及其内容。

只有文件夹的创建者或群集中的服务器才能访问个人文件夹。只有在数据库存取控制列表 (ACL) 中被定义为"服务器"或"服务器群组"用户类型的服务器才能访问和复制数据库中的个人文件夹。ACL 中未明确包括的服务器不能复制个人文件夹。  

如果觉得我的文章对您有用,请点赞。您的支持将鼓励我继续创作!

4

添加新评论1 条评论

zjzfylzjzfyl软件开发工程师长江数据
2012-06-19 22:27
原理上讲的不错,借鉴学习
Ctrl+Enter 发表

作者其他文章

相关问题

相关资料

X社区推广