本节介绍了高可用性数据库 (HADB) 以及如何设置和配置 HADB 以与 Application Server 一起使用。
本节包括以下主题:
HADB 是可独立于应用程序服务器层运行和管理的可水平伸缩的数据库。它旨在通过负载平衡、故障转移和状态恢复等功能支持高达 99.999% 的服务和数据可用性。
Application Server 使用 HADB 来存储 HTTP 和有状态会话 Bean (stateful session bean, SFSB) 的会话数据。如果没有会话持久性机制,则 Web 或 EJB 容器进行故障转移时,HTTP 或 SFSB 会话状态数据将丢失。
Application Server 不负责状态管理,这有很大的优势。Application Server 实例在其生命周期内作为可伸缩和高性能的 Java™ 2 Platform, Enterprise Edition(J2EE™ 平台)容器运行,并将状态复制委托给外部高可用性状态服务。由于采用这种松散耦合的体系结构,因此可以轻松地向群集中添加应用程序服务器实例或从群集中删除实例。您可以单独伸缩 HADB 状态复制服务以获得最佳的可用性和性能。
高可用性指无论出现由于升级而引起的预期故障,还是出现由于硬件或软件故障所导致的意外故障时,系统都具有可用性。HADB 基于简单数据模型和冗余、可伸缩和高性能技术。在高性能企业应用程序服务器环境中,HADB 为实现各种类型的会话状态持久性提供了理想的平台。
下图显示了具有四个活动节点和两个备用节点的数据库的体系结构。节点 0 和 1 是镜像节点对,节点 2 和 3 也是镜像节点对。
HADB 通过对数据进行分段和复制来实现数据的高可用性。将数据库中所有的表进行分区,以创建大小大致相同的子集(称之为段)。分段基于散列功能,该功能在数据库节点之间对数据进行平均分布。每个段存储两次,一次在数据库中,另一次在镜像节点中。这确保数据具有容错和快速恢复功能。此外,如果一个节点出现故障或关闭,则备用节点可以接管,直至发生故障的节点再次处于活动状态。
HADB 节点被组织为两个数据冗余单元 (DRU),这两个单元互为镜像。每个 DRU 包含半数活动节点和备用节点,并包含一个完整的数据副本。为确保具有容错功能,支持一个 DRU 的计算机对于电源(建议使用不间断电源设备)、处理部件和存储设备必须完全自支持。如果一个 DRU 发生电源故障,另一个 DRU 中的节点可以继续处理请求,直至电源恢复正常。
如果不使用会话持久性机制,当一个 Web 或 EJB 容器故障转移到其他容器时,HTTP 或 SFSB 会话状态(包括已钝化的会话状态)将丢失。将 HADB 用于会话持久性可避免发生这种情况。HADB 在单独但紧密集成的持久性存储层中存储和检索状态信息。
会话数据被删除时,HADB 将收回空间。HADB 将会话数据记录置于固定大小的块中。块中的所有记录均被删除时,块将被释放。可以随机删除块中的记录,这样将使块中产生空洞。在将新记录插入到块中并需要连续的空间时,将删除空洞,从而使块更加紧凑。
以上是体系结构的简短摘要。有关更多信息,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide》。
数据库节点包含一组进程、共享内存的专用区域和一个或多个辅助存储设备。数据库存储、更新和检索会话数据。每个节点都有一个镜像节点,因此节点成对出现。此外,为了获得最大限度的可用性,还包含两个或更多备用节点(每个 DRU 中一个),这样如果节点出现故障,在修复出现故障的节点的过程中备用节点可以接管。
有关可供选择的节点拓扑的说明,请参见《Sun Java System Application Server Enterprise Edition 8.1 2005Q2 Deployment Planning Guide》中的第 3 章 “Selecting a Topology”。
随 Sun Java System Application Server Enterprise Edition 8.1 一起提供的 HADB 的版本具有很多新增功能和改进。
通过更改管理系统的基本组件,HADB 管理得以改进。旧的 hadbm 接口功能经过细微修改得以维护。这些更改同时消除了对 SSH/RSH 的依赖性。
管理代理服务器进程 (ma) 组成一个域并将数据库配置存储在系统信息库中。系统信息库的信息分布于所有代理之间。
以下主题提供了更多详细信息:
此 HADB 版本包含以下常规改进:
HADB 不再需要 SSH/RSH。
用于 HADB 管理的管理员密码增强了安全性。
自动联机升级到后续版本。
消除了对单个主机的依赖性。
支持对数据库的异构配置。可以单独设置设备路径和历史记录路径。
能够统一管理多个平台。
此 HADB 版本包括对先前版本的以下更改。
现在要求网络配置能够进行 UDP 多址广播。
现在要求管理代理 ma 能在所有 HADB 主机上运行。
用于域管理的新的 hadbm 命令:hadbm createdomain、hadbm deletedomain、hadbm extenddomain、hadbm reducedomain、hadbm listdomain、hadbm disablehost。用于软件包管理的新命令:hadbm registerpackage、hadbm unregisterpackage、hadbm listpackage
所有 hadbm 命令都具有以下新选项:
adminpassword
adminpasswordfile
no-adminauthentication
agent
javahome
对 hadbm create 命令所作的更改:
新选项:
no-clear
no-cleanup
package
packagepath
agent
已扩展选项
hosts(在域中注册主机)。
set
已删除选项:
inetd
inetdsetupdir
configpath
installpath
set TotalDataDevideSizePerNode
set managementProtocol
所作修改:devicesize 现在为可选选项,并非必需选项。
hadbm startnode 和 hadbm restartnode 命令的 startlevel 选项具有一个新值 clear。
对 hadbm addnodes 所作的更改:新选项:set、historypath、devicepath。inetdsetupdir 选项已被删除。
对 hadbm get 和 hadbm set 所作的更改:新增属性为 historypath(历史文件的异构路径)和 packagename。已删除的属性为:managementProtocol、TotalDeviceSizePerNode、installpath 和 syslogging。
在就有关 HADB 问题向 Sun 用户支持致电之前,请尽可能多地收集以下信息:
系统用户配置文件:
并发的主动用户的数目
被动用户的数目
每秒进入系统的用户的数目
平均会话大小
会话状态超时时间(SessionTimeout 值)
每秒每个用户的事务率
计算机属性:
RAM
CPU 数目
CPU 速率
操作系统版本
物理磁盘数目
总磁盘大小
可用磁盘空间
数据传送能力
网络属性:
传送能力
每个节点的主机名(网络接口)的数目
HADB 数据:
历史记录文件
cfg 和 meta 文件,位于 dbconfigpath/databasename/nodeno 目录中。dbconfigpath 是在管理代理配置文件的 ma.server.dbconfigpath 变量中定义。
版本信息 (hadbm --version)