Sun GlassFish Enterprise Server 2.1 发行说明

高可用性

本节介绍已知的高可用性数据库 (HADB) 问题和相应的解决方法。

负载平衡器插件运行状况检查在后台(负载)生成大量连接/断开连接操作 (6453946)

说明

负载平衡器插件运行状况检查在后台(负载)生成大量连接/断开连接操作。为了进行运行状况检查,一个 runDaemonMonitor 线程会针对每个应用服务器侦听器执行连接/断开连接操作。这会导致 Enterprise Server 上出现连接饱和现象。

解决方法

已经为 loadbalancer.xml 文件开发了新属性 monitor-interval-in-seconds。在为负载平衡器插件配置了数百个侦听器的情况下,可使用该属性在连接/断开连接事件之间插入暂停。默认暂停值为 0。

使用双网络进行 HADB 配置(无 ID)

使用两个子网上的双网络进行配置的 HADB 可以在 Solaris SPARC 上正常工作。但是,由于操作系统或网络驱动程序在某些硬件平台上的问题,已发现在 Solaris x86 和 Linux 平台上并不总是能够正确处理双网络。这就导致 HADB 出现以下问题:

HADB 数据库创建失败(无 ID)

说明

创建新数据库可能会失败并出现以下错误,说明可用的共享内存段太少:

HADB-E-21054: 系统资源不可用: HADB-S-05512: 用关键字 "xxxxx" 连接共享内存段失败,操作系统状态=24,操作系统错误消息: 打开的文件太多。

解决方法

请确认已配置共享内存且配置能正常工作。特别是在 Solaris 8 上,请检查文件 /etc/system,然后确定变量 shmsys: shminfo_shmseg 的值至少为每个主机的节点数的六倍。

hadbm set 无法检查资源可用性(磁盘和内存空间)(5091280)

说明

使用 hadbm set 增大设备或缓冲区大小时,管理系统会在创建数据库或添加节点时检查资源可用性,但在更改设备或主内存缓冲区大小时则不会检查是否有足够的可用资源。

解决方法

在增大 devicesizebuffersize 配置属性之前,确认所有主机上都有足够的可用磁盘空间/内存空间。

不支持 packagepath 的异构路径 (5091349)

说明

不能在不同主机上的不同位置使用相同名称注册同一个软件包;例如:


hadbm registerpackage test --packagepath=/var/install1 --hosts europa11
Package successfully registered.
hadbm registerpackage test --packagepath=/var/install2 --hosts europa12
hadbm:Error 22171: A software package has already been registered with 
the package name test.

解决方法

HADB 不支持数据库群集中节点之间的异构路径。确保 HADB 服务器的安装目录 (--packagepath) 在所有参与的主机上都相同。

hadbm createdomain 可能会失败 (6173886, 6253132)

说明

在具有多个网络接口的主机上运行管理代理时,如果所有网络接口不是在同一子网中,则 createdomain 命令可能会失败:


hadbm:Error 22020: The management agents could not establish a 
domain, please check that the hosts can communicate with UDP multicast.

管理代理将(如果不是采用其他配置)使用 UDP 多址广播的“第一个接口”(“第一个”接口由 java.net.NetworkInterface.getNetworkInterfaces() 的结果定义)。

解决方法

最佳解决方法是告诉管理代理要使用哪个子网(在配置文件中设置 ma.server.mainternal.interfaces,例如,ma.server.mainternal.interfaces=10.11.100.0)。此外,也可以配置子网之间的路由器,以便路由多址广播数据包(管理代理使用多址广播地址 228.8.8.8)。

在重试管理代理的新配置之前,可能需要清除管理代理系统信息库。停止域中的所有代理,并删除存储库目录(由管理代理配置文件中的 repository.dr.path 标识)中的所有文件和目录。必须先在所有主机上执行此操作,然后才能用新配置文件重新启动代理。

启动、停止和重新配置 HADB 可能会失败或挂起(6230792、6230415)

说明

在 Solaris 10 Opteron 上,使用 hadbm 命令启动、停止或重新配置 HADB 可能会失败或挂起,并产生以下错误消息:


hadbm:Error 22009: The command issued had no progress in the last 
300 seconds.
HADB-E-21070: The operation did not complete within the time limit, 
but has not been cancelled and may complete at a later time.

如果 clu_noman_srv 进程所使用的文件 (nomandevice) 存在不一致的读/写操作,就可能出现这种情况。通过在 HADB 历史文件中查找以下消息,可以检测到此问题:


n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
does not respond.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Have not heard from it in 
104.537454 sec.
n:3 NSUP INF 2005-02-11 18:00:33.844 p:731 Child process noman3 733 
did not start.

解决方法

以下解决方法未经验证,原因是此问题尚未手动再现。但是,对受影响的节点运行此命令应该能解决此问题。


hadbm restartnode --level=clear nodeno dbname

请注意,该节点的所有设备都将重新初始化。在重新初始化之前可能必须停止该节点。

管理代理会终止并产生异常“IPV6_MULTICAST_IF 失败”(6232140)

说明

在运行 Solaris 8 且装有多个 NIC 卡的主机上启动时,如果混合启用了 IPv6 卡和 IPv4 卡,管理代理可能会终止并产生异常“IPV6_MULTICAST_IF 失败”。

解决方法

将环境变量 JAVA_OPTIONS 设置为 -Djava.net.preferIPv4Stack=true;例如:


export JAVA_OPTIONS="-Djava.net.preferIPv4Stack=true"

此外,也可以使用 Solaris 9 或更高版本,这些版本不会出现此问题。

clu_trans_srv 无法中断 (6249685)

说明

64 位版本的 Red Hat Enterprise Linux 3.0 中存在一个错误,导致 clu_trans_srv 进程在执行异步 I/O 时在不可中断的模式下结束。这意味着 kill -9 不起作用,必须重新引导操作系统。

解决方法

使用 Red Hat Enterprise Linux 3.0 的 32 位版本。

hadbm 不支持包含大写字母的密码 (6262824)

说明

当密码存储在 hadb 中时,其中的大写字母会转换成小写字母。

解决方法

请勿使用包含大写字母的密码。

从 HADB 版本 4.4.2.5 降级到 HADB 版本 4.4.1.7 会导致 ma 失败,并产生不同的错误代码 (6265419)

说明

降级到先前的 HADB 版本时,管理代理会失败并产生不同的错误代码。

解决方法

可以降级 HADB 数据库,但如果已经对系统信息库对象进行更改,则无法降级管理代理。在降级后,必须仍然使用来自最新 HADB 版本的管理代理。

安装/删除和 symlink 保留 (6271063)

说明

对于 HADB c 软件包 (Solaris: SUNWhadbc, Linux: sun-hadb-c) <m.n.u-p> 版的安装/删除,symlink /opt/SUNWhadb/<m> 在创建后不会有任何改动。因此,可能会存在孤立的 symlink

解决方法

除非正在使用 symlink,否则请在安装前或卸载后将其删除。

全局区域和局部区域中的管理代理可能会发生冲突 (6273681)

说明

在 Solaris 10 上,在全局区域中使用 ma-initd 脚本停止管理代理会导致局部区域中的管理代理也停止。

解决方法

请勿在全局区域和局部区域中都安装管理代理。

当会话对象在 MA 上已超时并被删除时,hadbm/ma 应该提供更准确的错误消息 (6275103)

说明

有时,服务器上的资源争用问题可能会导致管理客户机断开连接。在重新连接时,可能会返回误导性的错误消息“hadbm: 错误 22184: 必须提供密码才能连接到管理代理”

解决方法

有时,服务器上的资源争用问题可能会导致管理客户机断开连接。在重新连接时,可能会返回误导性的错误消息“hadbm: 错误 22184: 必须提供密码才能连接到管理代理”

检查服务器上是否存在资源问题,采取适当的措施(例如添加更多资源),然后重试操作。

非超级用户无法管理 HADB (6275319)

说明

与 Java Enterprise System 一起安装(以超级用户的身份)仅允许超级用户管理 HADB。

解决方法

要管理 HADB,请始终以超级用户的身份登录。

管理代理不应使用特殊用途的接口 (6293912)

说明

IP 地址类似于 0.0.0.0 的特殊用途的接口不应注册为可供管理代理中的 HADB 节点使用的接口。如果用户使用主机名称而不是 IP 地址发出 hadbm create 命令,将 HADB 节点设置到这些接口上,则注册这些接口可能会导致出现此问题。此后,节点将无法通信,从而导致 create 命令挂起。

解决方法

在具有多个接口的主机上使用 hadbm create 时,始终明确使用 DDN 表示法来指定 IP 地址。

在 Windows 上重汇编失败 (6291562)

说明

在具有某些配置和负载的 Windows 平台上,操作系统中可能会出现大量的重汇编失败。已经发现 20 多个节点的配置在并行运行多个表扫描 (select *) 时有此问题。症状可能是事务频繁地异常中止,修复或恢复会持续很长时间才能完成,系统的各个部分会频繁超时。

解决方法

要修复此问题,可将 Windows 注册表变量 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Tcpip\Parameters 设置为高于默认值 100 的值。建议将此值增大到 0x1000 (4096)。有关更多信息,请参见 Microsoft 支持页中的文章 811003

如果浏览器具有其他路径为 / 的 cookie,无法维护会话状态 (6553415)

说明

路径为 "/" 的 Cookie 与在 "/" 以外的上下文根目录中部署的高度可用 Web 应用程序(使用内存复制作为其持久性类型)的 Cookie 发生冲突,从而使高度可用的 Web 应用程序无法维护任何 HTTP 会话状态。通常,当使用同一浏览器访问管理 GUI(部署在 "/" 中)和高度可用的 Web 应用程序时,可能会出现这种情况。

解决方法

通过其他浏览器访问部署在 "/" 中的 Web 应用程序。

LB 无法使用 IIS 6;as-install/lib 下缺少 SASL32.DLLZLIB.DLL (6572184)

说明

要使负载平衡器能与 Windows IIS 6 配合工作,需要使用 SASL32.DLLZLIB.DLL 文件。当前,as-install/lib 下没有这些文件。

解决方法

将这两个 DLL 文件手动复制到 as-install/lib。可以从以下网址下载这些文件:


http://download.java.net/javaee5/external/OS/aslb/jars/

其中 OS 表示所需的平台,可以是以下值之一:

全局区域中存在 DAS 创建/启动和 HA 软件包传播问题 (6573511)

说明

在全局区域中安装或卸载具有高可用性软件包的 Enterprise Server 时,会出现两个问题:

  1. 在所有区域中都安装 HA 软件包,这可能不是所希望的。

  2. 卸载时,将从所有区域中删除 HA、MQ、JDK 软件包,这可能不是所希望的。

从局部根区域中安装或卸载时,不会出现此问题。

解决方法

从局部根区域而不是全局区域执行安装和卸载。

部署在 "/" 中的高度可用的 Web 应用程序无法恢复在内存中复制的 HTTP 会话(问题跟踪器 2972)

说明

当使用内存复制作为其持久性类型时,部署在 "/" 中的高度可用的 Web 应用程序无法维护任何 HTTP 会话。

解决方法

将使用内存复制作为其持久性类型的高度可用的 Web 应用程序部署到 "/" 以外的上下文根目录中。如果要使此类 Web 应用程序位于 "/" 中,可以将其指定为 Web 应用程序已部署到的虚拟服务器的默认 Web 模块。

AS LB 安装程序未将 /usr/lib/mps 路径放在 apachectl LD_LIBRARY_PATH 中,无法启动 Apache SSL (6591878)

说明

在 Solaris 上针对 Apache 安装 Enterprise Server 负载平衡器期间,安装程序将更新 apachectl 脚本中的 LD_LIBRARY_PATH。但是,安装程序未正确写入 /usr/lib/mps 路径。在 Solaris 上,如果 LD_LIBRARY_PATH 中没有此路径,则 Apache 安全性实例将无法启动。

解决方法

只有 Solaris 平台存在此问题。要解决此问题,请将 /opt/SUNWappserver/appserver/lib/lbplugin/lib 添加到 LD_LIBRARY_PATH

针对实例/群集启用/禁用 LB 应该显示正确的状态 (6595113)

说明

无论 domain.xml 中保存了哪些内容,在“群集/实例”常规页上,“启用负载平衡”按钮都始终处于启用状态。

解决方法

AS9.1 EE IFR b58f/JES5 UR1。无法安装 Registry Server,因为检测到“不完整的”HA。(6602508)

说明

(仅 Solaris)在具有 HADB 的 SPARC Solaris 10 上安装 Enterprise Server 2.1 之后,启动 Enterprise Server 并尝试安装具有 Registry Server 的 JES 5 UR1 时,可能会出现以下错误:


Dependency Error:  Installation can not proceed because the version of HA
Session Store 4.4.3 detected on this host is incomplete , and a compatible
version is required by Servervice Registry Deployment Support.

解决方法

在 Solaris 计算机上,不能使用 Enterprise Server 2.1 IFR 从 JES 5 UR1 安装 Registry Server。必须使用 pkgadd 命令从以下 JES5 UR1 分发目录手动安装 Registry Server 软件包:


path/OS/Products/registry-svr/Packages

特定于 Internet Explorer 6.0/7.0 浏览器:导出负载平衡器配置文件会抛出错误 (6516068)

说明

(仅 Internet Explorer 6 和 7)当尝试从 Internet Explorer 6 或 7 导出负载平衡器配置文件 (loadbalancer.xml) 时,浏览器会显示错误消息,表示找不到 sun-loadbalancer_1_2.dtd DTD 文件。

解决方法

要保存此文件,请使用以下解决方法:

  1. 在 Internet Explorer 中,在“负载平衡器”页上单击“导出”

    将显示“XML page cannot be displayed”消息。

  2. 单击错误框,然后从 Internet Explorer 中选择“文件”->“另存为”

  3. loadbalancer.xml 文件保存到所选目录中。