内容


Kevin Kepros 评论专栏

HAM 摘要

WebSphere Application Server 中的 High Availability Manager (HAM) 组件快速参考指南

Comments

系列内容:

此内容是该系列 # 部分中的第 # 部分: Kevin Kepros 评论专栏

敬请期待该系列的后续内容。

此内容是该系列的一部分:Kevin Kepros 评论专栏

敬请期待该系列的后续内容。

简介

High Availability Manager 是在 IBM WebSphere Application Server V6.0 中首次引入的。从那时起,它作为 WebSphere Application Server 基础设施的一个关键组件在不断发展演化。WebSphere Application Server 基础版和 WebSphere Application Server Network Deployment 中都含有 HA Manager(或简称 HAM),它在此充当运行时组件。

小型拓扑(比如单一应用程序服务器或小 Network Deployment 单元)的管理员通常不知道 HA Manager — 这可能也是件好事。不过,如果要管理大型拓扑,就必须处理核心组配置或核心组桥接配置,您可能在日志文件中看到过各种 DCSVxxxx 或 HMGRxxxx 消息,且对运行时组件能提供什么功能感到疑惑。

如果您不熟悉 HA Manager 或核心组,那么可以在 WebSphere Application Server Information Center 中了解更多相关内容。不过,如果您略微熟悉 HA Manager 或核心组,或如果您使用 WebSphere Application Server Network Deployment 并打算处理大型单元,那么您会从本文学到一些实践使用经验,本文旨在作为一份 HA Manager 袖珍指南。我将本文的标题称为 HAM 摘要,是因为所有内容都没有明确的细节。这里包含的都是一些便捷的信息,有助于您理解什么是 HA Manager(以及什么不是 HA Manager),它的作用是什么,其中还有一些知识集锦、方法和其他信息的链接,以便您在需要时使用。

HA Manager 和核心组基础

HA Manager 常被人误解为可直接在 WebSphere Application Server 中提供一些高可用性功能。相反,HA Manager 是一种支持技术;它提供一组服务,其他内部 IBM 组件可使用这些服务提高其功能的可用性。

核心组是 HA Manager 相关配置的核心和基础性部分。每个 WebSphere Application Server 进程都是一个核心组的成员。对于 WebSphere Application Server Network Deployment,多个进程(例如,部署管理器、节点代理、应用程序服务器,等等)是一个核心组的所有成员。

核心组表示将打开相互间连接的进程组(JVMs)。此外,这些连接会用于监视每个成员的 “健康状况”。HA Manager 提供的多数服务局限于(范围界定于)一个核心组,这是从概念上将核心组看作 HA 域的原因。

图 1. 核心组
图 1. 核心组
图 1. 核心组

有关 HA Manager 和核心组的重要内容包括:

  • HA Manager 本身不提供高可用性,而是提供其他组件使用的服务来实现其高可用性。
  • 核心组也就是所谓的 HA 域。
  • 核心组是紧密耦合的。核心组中的每个 JVM 都打开一个与核心组中其他 JVMs 的连接。
  • 核心组成员之间延迟较低(只有一个网络跃点)。
  • 核心组具有快速的故障检测功能。
  • 核心组不会缩减为与单元完全一样。

发现 + 故障检测 = 活性

核心组的成员打开相互间的连接并监视相互间的健康状况。启动一个新的应用程序服务器时,它必须发现核心组其他运行的成员(与它们建立连接)。如果一个应用程序服务器停用(或出现故障),核心组其他运行的成员必须检测这个故障。

故障检测通过两个不同的机制完成:

  • 监视成员间的活动连接(socket 关闭事件)以检测连接关闭情况。这是最常见的故障检测方式。如果一个进程终止,与该进程的连接关闭,其他进程会立即知道发生了什么。
  • 在核心组成员之间发送一个活动检测信号。这通常用于检测网络故障(电缆、交换机、路由器,等等),其中进程仍然运行但它们之间的通信失败。检测信号算法经过优化,且仅在需要时发送该信号(例如,如果成员已经因其他原因处于通信中,就没有必要再发送一条检测信号消息)。

这个发现和故障检测总称活性

后台资源

活性功能(连接的打开和监视)是 HA Manager 组件本身执行的主要工作。不过,其他内部 WebSphere Application Server 组件也可使用 HA Manager 服务执行各种活动。HA Manager 与使用 HA Manager 服务的其他组件之间资源使用的分离常被误解。有些情况下,一个管理员会禁用 HA Manager 并查看后台 CPU 和内存资源使用情况是否有较大改善,然后会错误地认为所有后台资源都是由 HA Manager 组件本身使用的,而事实并非如此。事实是,后台资源的使用由 HA Manager 本身完成的工作和使用 HA Manager 服务的其他组件完成的工作共同组成。

总结:

  • 在稳定条件下(没有启动或停用服务器),HA Manager 组件本身不需要大量内存或处理能力。
  • HA Manager 完成的 “工作” 包括打开核心组成员之间的连接(发现)和监视失败的连接(故障检测)。
  • 当新成员加入或现有成员离开组时,在资源使用中有一个瞬时峰值。
  • 当组件开始通过 HA Manager 基础设施执行工作时会使用更多资源(例如,集群路由数据的分布、嵌入式消息引擎请求、内存到内存会话复制,等等)。

依赖于 HA Manager 的服务

有很多 WebSphere Application Server 功能依赖于 HA Manager,包括:

  • HTTP Session(内存到内存)复制和会话 ID 无效化。
  • EJB 状态会话 bean 故障转移。
  • 分布式动态缓存。
  • WebSphere Application Server 嵌入式消息提供者(同时用作路由和集群消息引擎故障转移目的)。
  • 高度可用的事务日志恢复。
  • 集群 EJB 路由(IIOP)。
  • SIP 协议路由。
  • IBM WebSphere Proxy Server。
  • Web 服务客户机路由。

此外,多数堆栈产品(IBM WebSphere Virtual Enterprise、IBM WebSphere Process Server、IBM WebSphere Portal、IBM WebSphere Commerce 等)对 HA Manager 服务都有一个直接或间接的依赖性。请参阅 Information Center 中的 何时使用高可用性管理器,了解现有 HA Manager 依赖项。

HA Manager 服务的新用户可随时出现(iFixes、服务包、新版本、新产品,等等)。因此,您应该一直启用 HA Manager,除非您相当肯定自己目前没有依赖项,且以后也不会引入依赖项。

调优 HA Manager

正如之前提到的,大部分管理员不知道 HA Manager,且从来不必处理核心组和与 HA Manager 相关的配置。不过,如果您在负责一个大型拓扑,或想学习一下如何调优 HA Manager,那么下面所列设置会对您很有用。这些 HA Manager 相关的设置和准则有助于提高 IBM WebSphere Application Server 拓扑的效率和弹性:

  • 配置首选协调器服务器
  • 配置运行最新的核心组协议
    • IBM_CS_WIRE_FORMAT_VERSION = 6.0.2.9
    • IBM_CS_WIRE_FORMAT_VERSION = 6.1.0
    • IBM_CS_HAM_PROTOCOL_VERSION=6.0.2.31(针对 6.0.2.31 或后期版本、6.1.0.19 或后期版本、7.0.0.1 或后期版本)
    • 参阅 Information Center 中的 核心组协议版本
  • 将 WebSphere Application Server V7 或后期版本所需的默认传输缓冲大小增至 100 MB。
    • 有两个 HA Manager 相关的传输缓冲应该提高大小,都应设为 100 MB。对此没有硬性规定,因为内存是动态分配的,除非必需,否则不会用到。
    • 在 WebSphere Application Server V7 中默认设置改为 100 MB,可开箱即用,所以这个更改只适用于 WebSphere Application Server V6.x。
    • 参阅 Information Center 中的 配置用于复制的核心组
  • 合理的核心组大小

    对此没有硬性限制。它取决于您的拓扑、硬件、应用程序等。准则中的内容很值得参考,它建议应该着手检查资源使用情况、思考发展趋势、以及是否应考虑多个核心组。准则只适用于 WebSphere Application Server Network Deployment。添加其他堆栈产品(比如 WebSphere Virtual Enterprise)可能会增加 HA Manager 服务的使用,且准则也应相应地进行调整。

    • WebSphere Application Server V6.0.2
      • 准则是 50 个成员。
      • 不要超过 100 个成员(最大值)。
    • WebSphere Application Server V6.1.0
      • 准则是 100 个成员。
      • 不要超过 200 个成员(最大值)。
      • 假定您在运行更新的核心组协议。
    • WebSphere Application Server V7.0.0
      • 准则是 100 个成员。
      • 不要超过 200 个成员(最大值)。
      • 假定您在运行更新的核心组协议。
  • 如有必要,将大型单元分成多个核心组并将这些组桥接在一起:

    为每个访问点配置两个桥接接口,每个桥接接口都位于不同的节点上。将桥接(服务器)接口的最大堆大小增至 1024。理想情况下,将两个独立的应用程序服务器进程配置为协调器和桥接接口。

更多调优选项

上面的列表代表与 HA Manager 相关的主流建议和调优选项。不过,也有少数次要的调优选项可能(或不可能)适用于您的安装。这些项值得一提,因为它们能影响 HA Manager 的运行时性能。

  • 尽可能运行最新的 WebSphere Application Serer 服务水平。
  • 注意预防潜在的本地内存泄露。
  • 在 JVM 中缓存主机名解析以优化名称解析。
    • JVM 系统属性 com.ibm.cacheLocalHost=true。
    • 为所有 WebSphere Application Server 进程设置进程内定义(例如,genericJvmArguments="-Dcom.ibm.cacheLocalHost=true")。
  • DCS 线程池配置(仅针对已存在的 6.0.2.7 或早期拓扑)。
  • 在以下情况下禁用 On-Demand Configuration (ODC) 组件:
    • 不使用代理服务器或 Web 服务。
    • 以后不打算运行 WebSphere Extended Deployment 产品(比如 WebSphere Virtual Enterprise)。
    • 参阅 禁用按需配置组件 技术说明。

可服务性

由于 HA Manager 已经建立了连接且正在监视核心组中每个成员的健康状况,该组件会在日志中记录很多有用消息。这些消息可帮助您理解关于跨进程通信的单元的当前状态。在很多情况下,这些消息可就潜在问题向您发出警告,或可用于确定有问题的进程。为帮助您确定通信是否按预期进行,HA Manager 将消息记入 SystemOut.log 文件中。一些有用的示例包括:

  • DCSV8050I:每当有新核心组启动或现有核心组停用或出现故障(“视图更改”)时载入日志,表示连接的核心组成员的数量(“视图”),诸如此类。
  • DCSV1111W、DCSV1113W 和 DCSV1115W:载入日志,表示与另一进程的连接关闭,且会将另一进程从 “视图” 中删除。
  • DCSV1112W:载入日志,表示检测到信号超时,且会将另一进程从 “视图” 中删除。
  • HMGR0206I、HMGR0207I 和 HMGR0228I:载入日志,表明该进程的协调角色。
  • HMGR0152W:当 HA Manager 检测到 JVM 线程调度延迟时载入日志。当延迟时间变长时,通常表示 JVM 要出现问题了(例如,内存耗尽)。参阅 HMGR0152W:在 SystemOut.log 中检测到的 CPU Starvation 消息 技术说明。
  • HMGR0235W — PK95297 新增特性 — OOM Serviceability Enhancements:核心组中的每个进程应失败进程的请求进行日志记录,以表明它需要帮助或管理员的注意。
  • 应检查和理解任何 HMGRxxxx 或 DCSVxxxx 警告或错误。
  • 参阅 出现在 SystemOut.log 文件中的 DCSV 消息 技术说明,了解有关 DCSV 消息的更多信息。

相关主题


评论

添加或订阅评论,请先登录注册

static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=WebSphere
ArticleID=497742
ArticleTitle=Kevin Kepros 评论专栏: HAM 摘要
publish-date=06282010