在 WebSphere Application Server V8 上部署并探索 DB2 10 pureScale Feature

IBM® DB2® pureScale® 被设计用于提供持续可用性,以及对计划的维护和未计划的意外组件故障的容错能力。DB2 pureScale 是一项单独定价的功能,既可用于 IBM DB2 Enterprise Server Edition,也可用于 DB2 Advanced Enterprise Server Edition。本文将介绍如何将 DB2 10.1 pureScale Feature 部署到 IBM WebSphere® Application Server (WAS) V8.0.0.1 上,还将使用一个 WAS 应用程序探索客户端重新路由和工作负载平衡 (WLB) 功能。我们还将介绍 DB2 pureScale 集群如何从故障中恢复,以及它对 WAS 应用程序的影响。您可以将本文中的信息应用于 WAS V8.5。

Yiying Zhang, DB2 质量保证, IBM

Yiying Zhang 的照片Yiying Zhang 是一名 IBM 认证的高级数据库管理员。她在 IBM 研究 DB2 数据库已有 8 年时间,主要致力于系统验证测试。她在将 DB2 与各种 WebSphere 产品集成方面拥有超过 10 年的工作经验。



Aslam Nomani, STSM,DB2 质量保证, IBM

Aslam NomaniAslam Nomani 已在 IBM 工作了 14 年,他大部分时间都在质量保证团队工作。他主要关注的领域包括高可用性和灾难恢复解决方案。过去几年,Aslam 是 DB2 pureScale Feature 的质量保证架构师。



Mei-hsiang Chang, WebSphere 系统验证测试, IBM

Mei-hsiang Chang 的照片Mei-hsiang Chang 在 IBM 从事 WebSphere Application Server 系统验证测试工作已有 14 年。她自 Component Broker 4.0 就开始参与 WAS 版本的研究,一直到目前包含 Liberty 的 8.5 版本。她拥有丰富的测试技能,包括长期运行的压力和 JVM 内存测试。她目前领导着 Datasek Trust Company (DAT) 人员,主要关注相关客户模型上的测试(安全、高事务量)。



Fran Beaulne, DB2 质量保证, IBM

Fran Beaulne 的照片Fran Beaulne 在 IBM 工作已有 12 年。早些年她是一位发行经理,担任过从事 DB2 pureScale 功能研究的质量保证经理。



2014 年 2 月 17 日

DB2 pureScale Feature 简介

基于来自 DB2 for z/OS® 数据库软件的用户熟悉的、成熟的设计功能,IBM 于 2009 年 12 月推出了 DB2 pureScale Feature,为当前竞争激烈且要求严苛的市场提供了以下重要优势:极高的容量、应用程序透明性、持续可用性和更低的总体拥有成本。

极高的容量

DB2 pureScale Feature 通过实现成员的按需增加和删除,提供了极高的容量。DB2 pureScale Feature 可扩展到 128 个成员。它有一个非常高效的、集中化的管理工具,能够实现非常高效的扩展能力。DB2 pureScale Feature 还利用了一项名为 RDMA(Remote Direct Memory Access,远程直接内存访问)的技术,提供了一种非常高效的节点间通信机制来增强其扩展能力。

应用程序透明性

在 DB2 pureScale 环境中运行的应用程序不需要掌握集群中不同成员的所有知识。DB2 pureScale Feature 自动将应用程序路由到被视为是最合适的成员。DB2 pureScale Feature 还提供了对其他数据库供应商使用的语法的原生支持,这使得这些应用程序能够在 DB2 pureScale 环境中运行,只需进行极少的更改,甚至无需进行更改。

持续可用性

DB2 pureScale Feature 提供了一种完全主动-主动配置,因此,如果一个成员发生故障,处理工作会继续在其余活动成员那里进行。在故障期间,只有故障成员上修改的数据在完成改组数据的数据库恢复之前是不可用的,而这个恢复过程非常快。这是相对于其他竞争解决方案的一项优势,在其他解决方案中,在数据库恢复过程中,整个系统都会处于冻结状态。

降低了总体拥有成本

DB2 pureScale 接口能轻松地处理集成到 DB2 pureScale Feature 中的组件的部署和维护。这有助于减少导致与部署和维护一些竞争技术有关联的陡峭学习曲线的因素。

图 1. DB2 pureScale Feature 拓扑结构概述
DB2 pureScale Feature 拓扑结构概述

集成的系统

DB2 pureScale 不仅提供了技术优势,与其他 IBM 领先技术的集成还为客户提供了更多的价值。集成的系统意味着更低的初始购买成本、更容易部署、单一支持号码,以及优化的性能。

WebSphere Application Server 和 DB2 的集成多年来一直是企业应用程序的解决方案。这种紧密集成提升了 IBM 在提供端到端应用程序和资源管理系统方面的领导力。借助 DB2 pureScale 的持续可用性功能,您几乎无需宕机就可以实现企业系统。该集成使数据库和应用程序随时可用。借助该集成,客户可以将数据加载到 DB2 pureScale 上,并让该数据库为应用程序的使用做好准备;与此同时,应用程序被加载到 WebSphere 上,与该数据库一起在相同环境中工作。这减少了成本、复杂性和时间,为客户提供了更多的价值。

图 2 是一个集成的 WAS 和 DB2 pureScale 系统。DB2 pureScale 系统中有多个成员,但仍然只有一个数据库视图。WebSphere 应用程序可采用连接到 DB2 Enterprise Server Edition (ESE) 系统的相同方式,连接到 pureScale 系统的任何成员。

本文将介绍 DB2 10 pureScale Feature 和 WebSphere Application Server V8 集成环境中的部署、工作负载平衡和故障恢复。

图 2. 集成的 WAS 和 DB2 pureScale 系统
集成的 WAS 和 DB2 pureScale 系统

将 DB2 10 pureScale Feature 部署到 WAS V8

这一节介绍如何将 DB2 pureScale Feature 部署到一个独立 WAS 实例中,配置一个具有自定义属性的数据源来实现自动客户端重新路由和工作负载平衡功能。本文中使用的示例基于以下设置:

  • IBM WebSphere Application Server V8.0.0.1
  • DB2 v10.1.0.2
  • DB2 pureScale 集群有两个成员和两个 pureScale 服务器

本文不会介绍 DB2 pureScale Feature 和 WAS 的安装。相关信息请参阅 参考资料 部分。

WAS 管理控制台中的数据源配置

DB2 pureScale 服务器的数据源配置与 DB2 ESE 服务器的数据源配置相同。要配置数据源,可访问 WAS 管理控制台并单击 Resources > JDBC

请注意以下事实

  • 仅支持 DB2 Universal JDBC Driver(JCC 驱动程序)类型 4。
  • 推荐的 JCC 驱动程序版本为 V97 FP3 或更高版本。

使用以下步骤创建一个全新的数据源,以连接到 DB2 pureScale 环境中的某个数据库服务器。也可以相应地修改目前现有的数据源。

步骤 1. 创建 JDBC 驱动程序

  1. 单击 WAS 管理控制台左侧面板中的 Resources > JDBC > JDBC Providers
  2. 选择以下选项(如图 3 所示):
    • Database type:DB2
    • Provider type:DB2 Universal JDBC Driver Type
    • Implementation type:XA 数据源(如果需要两阶段提交)或连接池数据源
  3. 指定 DB2 Universal JDBC Driver 的 CLASSPATH,如图 4 所示。CLASSPATH 是安装 DB2 Universal JDBC Driver 的位置。
  4. 单击摘要页面上的 Finish,保存更改。
图 3. 选择 DB2 Universal JDBC Driver Provider 来创建一个新的 JDBC 提供程序
选择 DB2 Universal JDBC Driver Provider 来创建一个新的 JDBC 提供程序
图 4. 执行 JDBC 驱动程序的 CLASSPATH
执行 JDBC 驱动程序的 CLASSPATH

步骤 2. 创建一个新数据源

  1. 单击 WAS 管理控制台左侧面板上的 Resources > JDBC providers > Data sources
  2. 单击 WAS 管理控制台右侧面板上的(我们刚创建的)DB2 Universal JDBC Driver Provider (XA),如图 5 所示。
  3. 单击 WAS 管理控制台右侧面板上 Additional Properties 下的 Data sources
  4. 单击 New… 创建一个新数据源。
  5. 输入 DB2 Universal JDBC Driver XA DataSource 作为数据源名称,jdbc/Test 作为 JNDI 名称。图 6 显示了创建一个新数据源的第一页。
  6. 为数据源输入特定于数据库的信息,如图 7 中的示例所示。
    • Driver type:4(必须为 4)
    • Database nameTEST
    • Server namecoralpib87.torolab.ibm.com(在本示例中为此名称)

      Note:服务器名称可以是 pureScale 集群中的任何成员节点。

    • Port number38610(在本示例中为该值)
  7. 根据需要设置安全别名。
  8. 单击摘要页面上的 Finish,保存更改。
图 5. 选择该数据源将由哪个 JDBC 驱动程序创建
选择该数据源将由哪个 JDBC 驱动程序创建
图 6. 指定数据源的基本信息
指定数据源的基本信息
图 7. 输入数据源的特定于数据库的属性
输入数据源的特定于数据库的属性

步骤 3. 修改数据源连接池属性,让 WAS 支持无缝 ACR

  1. 单击 WAS 管理控制台左侧面板中的 Resources > JDBC > JDBC providers
  2. 单击 WAS 管理控制台右侧面板的 JDBC 提供程序下的(我们刚创建的)DB2 Universal JDBC Driver Provider (XA)
  3. 单击 WAS 管理控制台右侧面板上 Additional Properties 下的 Data sources
  4. 单击 WAS 管理控制台右侧面板上的(我们刚创建的)DB2 Universal JDBC Driver XA DataSource
  5. 单击 WAS 管理控制台右侧面板上 Additional Properties 下的 Connection pool properties
  6. 从 Purge policy 下拉列表中选择 FailingConnectionOnly,如图 8 所示。
  7. 单击 Apply,保存更改。
图 8. 修改 Purge policy 的属性,为 WAS 启用无缝 ACR
修改 Purge policy 的属性,为 WAS 启用无缝 ACR

对于 Java 客户端应用程序,针对自动客户端重新路由的故障转移可能是无缝的,也可能不是无缝的。对于非无缝故障转移,当客户端应用程序重新连接到另一个服务器时,始终会向应用程序返回一个错误,以表明发生了故障转移(连接到备用服务器)。对于无缝故障转移,如果在执行事务中第一条 SQL 语句期间发生了连接故障,并成功连接到备用服务器,驱动程序不会返回错误。

Purge Policy 的属性指定了如何在检测到过时连接或致命错误时清除连接。默认值为 EntirePool,这表示池中的所有连接都被标记为过时。FailingConnectionOnly 表示仅关闭导致 StaleConnectionException 的连接。要让 WAS 支持无缝自动客户端重新路由,应设置 Purge Policy 策略的 FailingConnectionOnly 属性。

步骤 4. 向数据源添加自定义属性来启用工作负载平衡

DB2 pureScale 环境为应用程序提供了事务级或连接级工作负载平衡功能。在向 pureScale 服务器建立第一个连接时,所有成员的列表和它们的容量(优先级或权重)将传递回服务器列表中的客户端。这些容量值表示 DB2 pureScale 成员上的当前负载。工作负载平衡根据服务器列表在可用的 DB2 pureScale 成员中分发应用程序请求。为了避免特定成员负载过重,在客户端处理开始时,客户端会透明地自动将事务发送到一个具有更高容量值的成员,这意味着该成员上的工作负载更低。

配置 enableSysplexWLB=true 是强制性的,以使 WAS 应用程序能够利用事务级工作负载平衡,从而根据每个成员的容量在它们之间分发请求。

执行以下步骤,添加自定义属性来启用工作负载平衡:

  1. 单击 WAS 管理控制台左侧面板中的 Resources > JDBC > JDBC providers
  2. 单击 WAS 管理控制台右侧面板的 JDBC 提供程序下的(刚创建的)DB2 Universal JDBC Driver Provider (XA)
  3. 单击 WAS 管理控制台右侧面板的 Data sources
  4. 单击 WAS 管理控制台右侧面板的(刚创建的)DB2 Universal JDBC Driver XA DataSource
  5. 单击 WAS 管理控制台右侧面板的 Additional Properties 下的 Custom properties
  6. 单击 New… 添加一个新属性 enableSysplexWLB,如图 9 所示。输入 enableSysplexWLB 并输入 true 作为值。
  7. 单击 Apply,保存更改。
图 9. 为数据源添加一个新的自定义属性来启用 WLB
为数据源添加一个新的自定义属性来启用 WLB

步骤 5. 启用 enableAlternateServerListFirstConnect 功能

启用一个数据源后,服务器名称可以是 pureScale 集群中的任何成员节点。在建立第一个连接时,一个服务器列表会从 pureScale 服务器返回到客户端,表明将对所返回的服务器列表中包含的节点执行工作负载平衡,并在进行自动客户端重新路由时将这些节点用于客户端重新路由。但是,在建立第一个连接时,该成员可能尚未运行,例如,一个成员节点上发生了硬件故障,而数据源被配置为连接到该节点。在这种情况下,客户端无法建立第一个连接,因而无法从服务器获取服务器列表。

为了解决这个问题,DB2 自 V97 FP1 版开始引入了 enableAlternateServerListFirstConnect 功能。与 clientRerouteAlternateServerName 和 clientRerouteAlternatePortNumber 属性相结合,在应用程序常时打开第一个连接和它尝试在第一个连接失败时连接到 pureScale 集群中一个不同成员(在 clientRerouteAlternateServerName 列表中指定)时,能够将预先配置的备用服务器列表加载到内存中。

只有在客户端与数据源配置为连接到的成员建立第一个连接失败时,才会使用预先配置的备用服务器列表。备用服务器列表需要手动维护,以确保在将新成员添加到集群中或从集群中删除一些成员时,会列出 pureScale 集群的所有当前成员。

要启用 enableAlternateServerListFirstConnect 功能,需要配置以下设置:

  • 将 enableAlternateServerListFirstConnect 自定义属性添加到数据源中;步骤类似于第 4 步中的步骤:
    • Name:enableAlternateServerListFirstConnect
    • Value:true
  • 指定数据源的 clientRerouteAlternateServerName 和 clientRerouteAlternatePortNumber 自定义属性的值。可在数据源的 Customer properties 中找到这些属性,如图 10 和图 11 所示:
图 10. 指定 clientRerouteAlternateServerName 自定义属性
指定 clientRerouteAlternateServerName 自定义属性
图 11. 指定 clientRerouteAlternatePortNumber 自定义属性
指定 clientRerouteAlternatePortNumber 自定义属性

结束语

在本文中,我们介绍了如何对 WAS 启用 DB2 pureScale Feature,以及它如何在一个集群中的所有 DB2 成员上自动分发工作负载,而无需在应用程序端执行任何更改。该功能的启用非常简单,只需从管理控制台添加/修改 WAS 数据源的一些自定义属性。从 WAS 应用程序角度讲,DB2 pureScale 服务器仅提供了一个数据库视图。带 DB2 pureScale 的 WAS 提供了一个容易部署的解决方案,该解决方案还具有行业领先的可伸缩性和可用性。


附录 A:带 WAS 应用程序的 DB2 pureScale 集群中的故障恢复示例

本节介绍 DB2 pureScale 集群如何从一次硬性故障(重新启动)场景恢复,以及对 WAS 应用程序的影响。我们将介绍客户端应用程序如何重新路由到幸存的成员,以及故障成员在其主机上重新启动后如何将应用程序转移到该成员上。

pureScale 集群的初始状态如图 12 所示。集群中有两个成员:成员 0(在 coralpib87 上)和成员 1(在 coralpib88 上),还有两个 pureScale PowerHA 服务器:coralpib89 上的主要 CF (CF 128) 和 coralpib90 上的辅助 CF (CF 129)。辅助 CF 处于 PEER 状态。

图 12. pureScale 集群的初始状态
pureScale 集群的初始状态

图 13 给出了连接到 DB2 pureScale 服务器的应用程序列表。命令 list applications global show detail 可显示每个应用程序连接到的成员节点(参见输出中加粗的第 7 列)。在图 13 的输出中,我们只显示了与 WAS 相关的应用程序(“grep db2jcc”),可以看到该连接被分发到两个成员之间。“0” 表示成员 0,它目前正在 coralpib87 上运行,“1” 表示成员 1,它目前正在 coralpib88 上运行。

图 13. list applications global show detail 命令
list applications global show detail 命令

重新启动节点 coralpib88,它目前正在主机成员上运行,如图 14 所示:

图 14. 重新启动 coralpib88 节点
重新启动 coralpib88 节点

当成员 1 不可用时,所有客户端应用程序现在都会连接到幸存的成员 1。请注意显示的结果中(加粗)的第 7 列,如图 15 所示:

图 15. 客户端应用程序连接到幸存的成员 0
客户端应用程序连接到幸存的成员 0

在 WAS 系统日志中,如图 16 所示,一些 ClientRerouteException 表明与节点 coralpib88 上的原始成员 1 的连接失败,而且这些连接被重新路由到节点 coralpib87 上的成员 0。

图 16. WAS 系统日志
WAS 系统日志

与高可用性灾难恢复 (HADR) 环境中发生的客户端重新路由一样,应用程序应负责处理 ClientRerouteException 并重新提交失败的事务,但应用程序无需显式重新连接到数据库。

成员 1 在来宾主机 coralpib87 上点亮了重新启动灯,数据库得以恢复。在图 17 中 “db2instance –list” 的输出中,成员 1 处于 WAITING_FOR_FAILBACK 状态,它目前的主机为 coralpib87。成员 1 在此状态下不接受请求,重新启动灯的主要用途是确保数据库一致性。现在,节点 coralpib88 处于不活动状态,并且为此主机设置了一个警报。

图 17. db2instance –list 输出
db2instance –list 输出

当集群服务检测到 coralpib88 再次变为活动状态时,它会尝试恢复成员 1。此时,成员 1 处于 “RESTARTING” 状态,如图 18 所示。请注意,为 coralpib88 设置的警报已在集群服务检测到 coralpib88 可用时自动清除。

图 18. 成员 1 处于 RESTARTING 状态
成员 1 处于 RESTARTING 状态

成员 1 在其主要主机 coralpib88 上重新启动,数据库也得到恢复。现在,成员 1 再次处于 STARTED 状态并准备接受应用程序请求,如图 19 所示:

图 19. 成员 1 处于 STARTED 状态
成员 1 处于 STARTED 状态

图 20 表明应用程序请求再次在两个成员上得以平衡:

图 20. 平衡的应用程序请求
平衡的应用程序请求

附录 B:针对多个数据据库进行规划

DB2 pureScale 环境中的数据库创建与 DB2 ESE 环境没有显著区别。对于多个数据库,您可能需要调整以下配置:

  • 需要依据可在实例中同时激活的数据库数量,调整数据库管理器配置参数 NUMDB。
  • DB2 注册表 DB2_DATABASE_CF_MEMORY 需要进行适当的设置,以支持多个活动的数据库。此参数与其他 CF 配置参数结合使用,表示将分配到每个活动数据库的内存占总 CF 内存的百分比。

参考资料

学习

获得产品和技术

  • 以最适合您的方式 评估 IBM 产品:下载产品试用版或在线试用产品。

讨论

条评论

developerWorks: 登录

标有星(*)号的字段是必填字段。


需要一个 IBM ID?
忘记 IBM ID?


忘记密码?
更改您的密码

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件

 


在您首次登录 developerWorks 时,会为您创建一份个人概要。您的个人概要中的信息(您的姓名、国家/地区,以及公司名称)是公开显示的,而且会随着您发布的任何内容一起显示,除非您选择隐藏您的公司名称。您可以随时更新您的 IBM 帐户。

所有提交的信息确保安全。

选择您的昵称



当您初次登录到 developerWorks 时,将会为您创建一份概要信息,您需要指定一个昵称。您的昵称将和您在 developerWorks 发布的内容显示在一起。

昵称长度在 3 至 31 个字符之间。 您的昵称在 developerWorks 社区中必须是唯一的,并且出于隐私保护的原因,不能是您的电子邮件地址。

标有星(*)号的字段是必填字段。

(昵称长度在 3 至 31 个字符之间)

单击提交则表示您同意developerWorks 的条款和条件。 查看条款和条件.

 


所有提交的信息确保安全。


static.content.url=http://www.ibm.com/developerworks/js/artrating/
SITE_ID=10
Zone=Information Management
ArticleID=962959
ArticleTitle=在 WebSphere Application Server V8 上部署并探索 DB2 10 pureScale Feature
publish-date=02172014