HADB 是由节点对组成的分布式系统。节点将划分到两个数据冗余单元 (Data Redundancy Unit, DRU) 中,每个 DRU 包含每对节点中的一个节点,如数据冗余单元中所述。
每个节点包含:
一组用于事务状态复制的进程。
用于在进程之间进行通信的专用共享内存区域。
一个或多个辅助存储设备(磁盘)。
一组 HADB 节点可以承载一个或多个会话数据库。每个会话数据库与一个特定的应用服务器群集相关联。在删除群集时,还会删除与其关联的会话数据库。
有关 HADB 硬件要求,请参见《Sun Java System Application Server 9.1 发行说明》中的“硬件和软件要求”。
共有两种类型的 HADB 节点:
每个节点包含一个父进程和几个子进程。父进程称为节点监控 (NSUP),由管理代理启动。它负责创建子进程并使它们保持运行。
子进程可以是:
事务服务器进程 (TRANS),用于协调分布式节点上的事务以及管理数据存储。
关系代数服务器进程 (RELALG),用于协调并执行复杂的关系代数查询,如排序和连接。
SQL 共享内存服务器进程 (SQLSHM),用于维护 SQL 字典高速缓存。
SQL 服务器进程 (SQLC),用于接收客户机查询,将查询编译为本地 HADB 指令,将这些指令发送到 TRANS,接收结果并将结果传送到客户机。对于每个客户机连接,每个节点包含一个主 SQL 服务器和一个子服务器。
节点管理器服务器进程 (NOMAN),管理代理使用该进程来执行由 hadbm 管理客户机发出的管理命令。
如前面所述,HADB 实例包含一对 DRU。每对中的两个 DRU 具有相同的活动节点数和备用节点数。一个 DRU 中的每个活动节点在另一个 DRU 中具有镜像节点。由于进行了镜像,每个 DRU 都包含完整的数据库副本。
下图显示了一个包含 6 个节点的示例 HADB 体系结构:四个活动节点和两个备用节点。节点 0 和 1 是一个镜像对,节点 2 和 3 也是一个镜像对。在此示例中,每个主机有一个节点。通常,如果主机具备足够的系统资源(请参见系统要求),则它可以有多个节点。
必须成对添加承载 HADB 节点的计算机,每个 DRU 中各有一台计算机。
HADB 可通过复制数据和服务来获得高可用性。可以将镜像节点上的数据副本指定为主副本和热备用副本。主副本执行插入、删除、更新以及读取等操作。热备用副本接收主副本操作的日志记录,并在事务生命周期内重复执行这些操作。读取操作仅由主节点执行,因而不会记录这些操作。每个节点同时包含主副本和热备用副本,并担当这两种角色。数据库将进行分段并分配到 DRU 的活动节点中。镜像对中的每个节点包含一组相同的数据分段。复制镜像节点上的数据称为复制。HADB 可通过复制来提供高可用性:当某个节点出现故障时,其镜像节点几乎立即接管该节点的功能(在几秒钟内)。复制可确保高可用性,并且屏蔽节点故障或 DRU 故障,而不会丢失数据或服务。
当镜像节点接管出现故障的节点的功能时,它必须完成双倍的任务量:其自己的任务和出现故障的节点的任务。如果镜像节点不具备足够的资源,过多的负载会降低其性能,并增大出现故障的可能性。当节点出现故障时,HADB 会尝试重新启动它。如果无法重新启动出现故障的节点(例如,由于硬件故障),则系统将继续运行,但会降低可用性。
HADB 容许整个 DRU、一个或多个节点出现故障,但不容许出现“双故障”,即节点及其镜像均出现故障。有关如何减小出现双故障的可能性的信息,请参见减小双故障风险。
当某个节点出现故障时,其镜像节点将接管该节点的功能。如果出现故障的节点没有备用节点,则此时它将没有镜像。备用节点自动接替出现故障的节点的镜像。通过设置备用节点,可以缩短系统在没有镜像节点的情况下运行的时间。
备用节点通常不包含数据,但会持续监视 DRU 中活动节点的故障情况。如果某个节点出现故障并且在指定的超时期限内未能恢复,备用节点将从镜像节点中复制数据并与其进行同步。所花的时间取决于复制的数据量以及系统和网络能力。在进行同步后,备用节点将自动接替镜像节点,而无需手动介入,从而减轻了镜像节点的过载压力并平衡了镜像上的负载。这称为故障恢复或自我修复。
在修复出现故障的主机(通过更换硬件或升级软件)并重新启动后,该主机中运行的一个或多个节点将作为备用节点加入到系统中,因为原始备用节点现在是活动节点。
备用节点并不是必需的,但系统可以通过这些节点保持其整体服务级别,即使在某台计算机出现故障的情况下也是如此。备用节点还可以简化在承载活动节点的计算机上执行计划维护的过程。请为每个 DRU 分配一台计算机以作为备用计算机,以便在某台计算机出现故障时,HADB 系统可继续运行,而不会对性能和可用性造成负面影响。
通常,应使用具有足够多 Application Server 实例和 HADB 节点的备用计算机接替变为不可用的任何计算机。
以下示例说明了如何在 HADB 部署中使用备用节点。共有两种可能的部署拓扑:同位(HADB 和 Application Server 位于相同的主机上)和分层(它们位于不同的主机上)。有关部署拓扑的更多信息,请参见第 3 章,选择拓扑。
作为一个备用节点配置示例,假定四个 Sun FireTM V480 服务器采用的是同位拓扑,每个服务器具有一个 Application Server 实例和两个 HADB 数据节点。
对于备用节点,额外分配两个服务器(每个 DRU 一台计算机)。每台备用计算机运行一个应用服务器实例和两个备用 HADB 节点。
假定使用以下分层拓扑:HADB 层具有两个 Sun FireTM 280R 服务器,每个服务器运行两个 HADB 数据节点。为保持此系统的完整能力(即使一台计算机变为不可用),对 Application Server 实例层以及 HADB 层各配置一台备用计算机。
Application Server 实例层的备用计算机所具有的实例数必须与该层中的其他计算机相同。同样,HADB 层的备用计算机所具有的 HADB 节点数也必须与该层中的其他计算机相同。