Comments
Description
Transcript
IBM DB2 pureScale 2 库解决方案:第 应用程序配置
IBM DB2 pureScale 群集数据 库解决方案:第 2 部分 应用程序配置 http://ibmdatamag.com/2012/08/the-ibm-db2-purescale-clus tered-database-solution-part-2/ 作者:Madhu Flanagan | 发布时间:2012 年 8 月 27 日 | 86 次阅读 打印 PDF 本文由 Yvonne Chan 和 John Hehir 共同撰写。 本文的第 1 部分概括介绍了 DB2 pureScale 架构和技术。 当思考群集数据库和 DB2 LUW 集成至 pureScale 功能的各种可靠组件的优势时,很容易从概 念的角度记住这项技术(有关详细信息,请参见本文的第 1 部分)。然而,真正具有挑战性的 是拟定最佳途径,促使 pureScale 功能为贵企业的应用程序服务。为了提供对这项挑战的洞察, 我们运用以下两种不同方法连接到 pureScale 群集:负载平衡和客户端亲和性 (client affinities)。 DB2 pureScale 负载平衡 通过将客户端连接到 DB2 pureScale 群集实现负载平衡。启用 WLB 后,群集成员各自保存服 务器优先级列表。成员彼此之间定期沟通,询问其他会员的系统负载并刷新各自的服务器列表。 为每个列表上的每位成员分配权限。服务器列表据此为每位成员设计了连接,并将其返回到 DB2 客户端。评估优先级并将工作路由至高优先级成员,这样群集中的每位成员均接近平等处理状态。 由于只需要一个数据库目录或连接对象即可连接 DB2 pureScale 群集,无需对数据库目录或应 用程序代码进行任何更改,即可根据需要向 pureScale 系统添加成员或从中删除成员。只需使 用一个命令,即可在群集中添加或删除成员或其他缓存设备。轻松管理容量的功能不仅适用于不 断增长的业务应用程序,而且还支持企业渡过处理高峰期。企业不需要“超大型的”系统便可在 非高峰期处理高峰期的业务活动。 WLB 能够有效处理 OLTP 工作负载,在短时间内完成事务,并能在成员之间轻松移动。当客 户端应用程序需要在事务范围以外的地方持久保存值,比如说,当通过 WITH HOLD 使用序列 或声明游标,或者使用 PRESERVE ROWS 属性来创建临时表并定义它们的时候,数据库服务器 会限制客户端使用 WLB。有关这些限制的完整列表,请参阅 DB2 pureScale 功能客户端注意 事项下的 DB2 信息中心。 启用 WLB 十分容易,只需设置一个必要属性即可。例如,如果您使用的是基于 Java 的连接, 只需将 enableSysplexWLB 连接属性设置为“true”。对于非 Java 应用程序,同样可以使 用 db2dsdriver.cfg 文件中的 enableWLB 参数配置 WLB。 在定义 WLB 连接后,默认情况下会激活自动客户端重新路由 (ACR)。激活 ACR 后,如果成 员处于离线状态(无论是有意还是无意),系统会自动将请求重新路由到剩余的在线群集成员。 当成员重新恢复在线状态后,先前不可用的成员连接和事务也将随之恢复。 pureScale 的 WLB 组件可通过将事务分配给经评估具有最多新请求处理可用资源的成员,帮 助消除各种潜在瓶颈。这有助于确保公平利用所有系统资源。 本示例展示了如何通过在 URL 中设置 enableSysplexWLB JDBC 属性并通过应用程序代码 进行属性文件设置来启用 WLB。此 URL 通过端口 60200 连接到 DB2 pureScale 成员 172.16.42.102 上的数据库 SAMPLE。 jdbc:db2://172.16.42.102:60200/SAMPLE:enableSysplexWLB=true; 下面的示例演示了如何使用属性文件在应用程序代码内设置 enableSysplexWLB 属性: String url = jdbc:db2://172.16.42.102:60200/SAMPLE;Properties properties = new Properties();properties.put(“user”, “yourID”);properties.put(“password”, “yourPassword”);properties.put(“enableSysplexWLB”, “true”); Connection con = DriverManager.getConnection( url, properties ); 客户端亲和性 连接 pureScale 群集的第二种方法称作客户端亲和性连接。当在整合数据库资源或者一个群集 上运行多个应用程序时,可以考虑采用这种方法。 当根据客户端亲和性进行连接时,需要将各应用程序指定为 pureScale 群集中的单一成员。应 用程序的所有连接和请求都是通过这个指定成员进行处理的。pureScale 群集中的其他成员可以 在计划内或计划外中断时使用。 但是,WLB 能够与 OLTP 应用程序有效配合,而客户端亲和性连接能够有效地进行批量处理, 这有利于保存专用成员的数据库内存堆。与 WLB 一样,客户端亲和性连接是通过 JDBC 属性 或在 db2dsdriver.cfg 文件中进行配置的。 如果您要在出现计划内或计划外停机时,将事务路由至另一成员。当成员恢复在线状态后,还可 以自动配置连接,将故障追溯回原始主机。对于与故障恢复相关的故障转移主机和选项,都是通 过非 Java 应用程序的 db2dsdriver.cfg 文件中 Java 应用程序或参数的 JDBC 连接属性进 行定义的。 下面的示例演示了如何通过 db2dsdriver.cfg 文件中的自动故障转移功能启用客户端亲和性: <configuration><dsncollection><dsn alias=”SAMPLE” name=”SAMPLE” host=”172.162.141.44″ port=”50000″/><parameter name=”Authentication” value=”Client”></parameter> </dsncollection> <databases> <database name=”SAMPLE” host=”172.162.141.44″ port=”50000″> <parameter name=”keepAliveTimeout” value=”20″> </parameter> <parameter name=”connectionLevelLoadBalancing” value=”true”> </parameter> <acr> <parameter name=”enableAcr” value=”true”> </parameter> <parameter name=”enableSeamlessACR” value=”true”/> </parameter> <parameter name=”maxAcrRetries” value=”2″> </parameter> <parameter name=”acrRetryInterval” value=”3″> </parameter> <parameter name=”affinityFailbackInterval” value=”5″> </parameter> <parameter name=”enableAlternateServerListFirstConnect” value=”false”> </parameter> <alternateserverlist> <server name=”server1″ hostname=”172.162.141.44″ port=”50000″> </server> <server name=”server2″ hostname=”172.162.141.45″ port=”50000″> </server> <server name=”server3″ hostname=”172.162.141.46″ port=”50000″> </server> </alternateserverlist> <affinitylist> <list name=”list1″ serverorder=”server1,server2, server3″> </list> <list name=”list2″ serverorder=”server2,server3, server1″> </list> </affinitylist> <clientaffinitydefined> <client name=”WASApp1″ hostname=”172.65.185.132″ listname=”list1″> </client> <client name=”WASApp2″ hostname=”172.65.185.199″ listname=”list2″> </client> </clientaffinitydefined> </acr> </database> </databases> </configuration> db2dsdriver.cfg 文件是一个 XML 文件,其中包含各种功能,它们均通过 ODBC、CLI、OLE DB、 PHP 或 Ruby 应用程序为数据库提供支持。关键字可以针对所有数据库连接进行全局关联,也 可以与特定的数据库源名称或数据库连接相关联。 1. DSN 入口需要与数据库目录信息完全匹配。 2. 在配置客户端亲和性时,将 enableAcr 参数设置为“true”十分必要。 3. 必须在 alternateserverlist 中提供主服务器。 4. 有关联的列表元素的 serverorder 值定义了最初要连接的服务器,而且还定义了停机期 间的服务器故障转移的顺序。 5. 连接该数据库的每个客户端均可以与 list name 或 affinitylist 属性中指定的任意既定 服务器列表进链接。serverorder 中指定的第一台服务器将用于尝试进行初始连接。在自动 重新路由客户端期间,系统会根据列表中指定的属性尝试列出后续的服务器。 在这个例子中,名为 WASApp2 的客户端将使用 list2。由于 list2 中的第一台服务器是 server2,所有连接均将通过这台服务器。如果 server2 中断,连接将被重新路由到 server3。 如果 server3 中断,自动故障恢复关闭(或者,即使故障恢复正常,server2 仍然中断),连 接将自动重新路由到 server1。如果启用自动故障恢复且 server2 可用,连接将自动故障恢复 到 server2。 client name 的 hostname 是指应用程序服务器的主机名或 IP 地址。 结束语 通过配置 DB2 pureScale,可以满足任何企业关键应用程序的需求和要求。WLB 是理想的大型 应用程序(主要为事务型),并且能够轻松高效地进行扩展。当使用批处理应用程序时,或在多 个应用程序使用一个群集,且数据库通过整合来降低硬件和通用基础架构的成本时,客户端亲和 性连接十分有效。在上述两种情况下,DB2 pureScale 群集架构和故障转移功能有助于满足服 务级协议中常见的可用性要求。DB2 pureScale 是一个不错的解决方案示例,它奉行的原则是: 仅支付使用的服务,有效且高效地使用付费服务。 了解更多 要了解有关 DB2 pureScale 功能的详细信息,请访问下列网站。 DB2 pureScale 在多个 DB2 产品版本中均提供: DB2 企业服务器版本 DB2 高级服务器版本 相关主题 1. IBM DB2 pureScale 群集数据库解决方案:第 1 部分 2. IBM DB2(使用英特尔至强处理器)迁移 3. DB2 与 Oracle Database 11 的成本和功能比较 4. 针对 Siebel 8.1 应用程序进行 IBM DB2 9.7 性能优化 5. DB2 技术讨论:数据库应用程序性能管理最佳实践