你好,游客 登录
背景:
阅读新闻

使用 SPSS 和 DB2 HADR 构建高可用的企业级预测分析解决方案

[日期:2013-10-30] 来源:看引擎  作者: [字体: ]

  首先简单介绍一下本文所涉及的 CaDS、HADR 等相关应用及技术。
  CaDS (IBM SPSS Collaboration and Deployment Services) 是 IBM SPSS 软件家族中重要的企业级平台性产品,提供了集中式的、安全的资产存储、管理和预测分析等功能。同时,可以通过安装不同的 Adapter,与 IBM SPSS 其他产品(如 Statistics, Modeler 等)集成。IBM SPSS CaDS 主要包括 IBM SPSS CaDS Server, IBM SPSS CaDS Deployment Manager, IBM SPSS CaDS Deployment Portal, IBM SPSS CaDS Deployment Manager Web 等产品,其中 IBM SPSS CaDS Server 是 CaDS 的服务器端,基于 J2EE/SOA 架构,可以安装在 Windows,Linux 和 Unix 操作系统上,并且支持 IBM Websphere,Jboss,Oracle WebLogic 应用服务器和 IBM DB2,Oracle,MS SQL Server 数据库。
  CaDS 在与数据库连接的时候使用的是 DataDirect 提供的 JDBC driver:DataDirect Connect Series for JDBC 提供了一系列 JDBC drivers,支持当前主流的数据库,并且一贯支持最新的数据库功能。 这些驱动符合 Type4 架构,同时提供了应用失效转移(Application failover),分布式事务(Distributed transactions),批量装载(Bulk load)等高级特性。
  HADR (High Availability Disaster Recovery, 高可用性灾难恢复 ) 是数据库产品家族中的数据复制解决方案之一, 提供基于 DB2 日志记录机制的高性能数据库复制功能,通过把主数据库服务器上的数据变化复制到备用数据库服务器上来防止数据丢失。通过使用 HADR 可以将故障时间最小化到只有几秒的时间,最大限度地避免了数据丢失。
  本文介绍如何通过设置一系列 connection failover 属性值结合 DB2 High Availability Disaster Recovery (HADR) 性能 为 CaDS 应用提供综合的失效转移保护,使得主数据库故障之后,CaDS 能够自动连接到备用数据库,避免对 CaDS 进行重新配置。
  回页首
  配置 DB2 HADR
  为了方便描述,定义数据库主服务器为 DB2Primary,备用服务器为 DB2Standby。DB2 HADR 使用日志记录传送机制使备用数据库服务器 (Standby) 与主服务器 (Primary) 保持同步,这样如果主服务器出现故障中,接管 (takeover) 之后,应用可以连接到备用数据库服务器,从而防止了数据丢失。关于 DB2 HADR 详细信息,详见 DB2 information center。下文对 HADR 的配置进行简单的描述:
  1. 前提:
  在一个 HADR 的环境中,需要两个数据库服务器:主数据库和备用数据库。
  为了有更好性能,安装主数据库与备用数据库的系统最好有相同的硬件及软件配置。
  两个服务器上需要安装相同版本的 DB2。
  2. 配置步骤:
  在 DB2Primary 上,创建数据库 [database name],同时需要修改所建数据库配置参数:
  UPDATE DB CFG FOR [database name] USING LOGRETAIN ON
  UPDATE DB CFG FOR [database name] USING TRACKMOD ON
  将所用到的数据库设置为归档日志模式,可在线备份,并修改 TRACKMOD 参数,支持数据库进行增量备份。
  备份此数据库 :
  BACKUP DB SPSSCDS TO [Directory];
  其中 [Directory] 是备份文件所要保存的路径(自定义)。
  完成备份之后,在 DB2Standby 上恢复此数据库。注:要使用与主服务器上数据库相同的名字,其中 [Directory] 是备份文件在备机 (Standby) 上存放的路径。
  RESTORE DATABASE [database name] from [Directory]
  主服务器 DB2Primary 参数配置:
  UPDATE DB CFG FOR [database name] USING HADR_LOCAL_HOST [DB2Primary HOSTNAME/IP];
  UPDATE DB CFG FOR [database name] USING HADR_LOCAL_SVC 55001;
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_HOST [DB2Standby HOSTNAME/IP];
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_SVC 55002;
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_INST [instance name];
  UPDATE DB CFG FOR [database name] USING HADR_SYNCMODE NEARSYNC;
  UPDATE DB CFG FOR [database name] USING HADR_TIMEOUT 10;
  UPDATE ALTERNATE SERVER FOR DB [database name] USING HOSTNAME [DB2Standby HOSTNAME/IP] PORT [instance port]
  注:[instance port] 是指所用主服务器 / 备用服务器上的 DB2 实例的端口号。本例中设置为相同的端口号。
  备用服务器 DB2Standby 参数配置:
  UPDATE DB CFG FOR [database name] USING HADR_LOCAL_HOST [DB2Standby HOSTNAME/IP];
  UPDATE DB CFG FOR [database name] USING HADR_LOCAL_SVC 55002;
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_HOST [DB2Primary HOSTNAME/IP];
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_SVC 55001;
  UPDATE DB CFG FOR [database name] USING HADR_REMOTE_INST [instance name];
  UPDATE DB CFG FOR [database name] USING HADR_SYNCMODE NEARSYNC;
  UPDATE DB CFG FOR [database name] USING HADR_TIMEOUT 10;
  UPDATE ALTERNATE SERVER FOR DB [database name] USING HOSTNAME [DB2Primary HOSTNAME/IP] PORT [instance port]
  其中,55001 和 55002 是自定义的端口,要保证不与其他应用冲突。其中,可以直接在配置命令中直接写端口号,也可以先配置端口,如:在 Linux 下,编辑 /etc/services 文件,加入下面两行信息,然后再配置文件中以所设置的参数 (HADR_PRIMARY/HADR_STANDBY) 代替对应的端口。
  HADR_PRIMARY 55001/tcp
  HADR_STANDBY 55002/tcp
  上述配置参数的详细定义可以参考查阅文章—— DB2 HADR 监控详解。
  3. 启动 / 停止 HADR
  完成相关配置之后,通过以下步骤启动 DB2 HADR:
  首先,要在备用服务器 (Standby) 上启动:start hadr on db [database name] as standby
  然后,在主服务器 (Primary) 上启动:start hadr on db [database name] as primary
  注:在备用服务器上启动 HADR 时,需要数据库处于 offline 状态,所以先要运行如下命令:deactivate database [database name],然后再启动 HADR,对应的数据库也被启动。
  可以通过在主数据库和备用数据库上使用以下命令停止 HADR,使数据库恢复 standard 状态:stop hadr on database [database name]
  同样要注意的是,在备用服务器上,”stop hadr” 命令执行的前提需要数据库处于 offline 状态,需要先运行命令:deactivate database [database name]。
  4. 查看 HADR 的配置信息以及运行情况
  通过 DB2PD 获取 HADR 的运行情况
  在 DB2 HADR 配置完成之后,可以通过运行以下命令来实时地查看 HADR 的运行状况:
  db2pd -db [database name] -hadr


                                  图 1. 查看 HADR 的运行状况
  查看 HADR 的配置信息
  在 DB2 HADR 配置完成之后,可以通过运行以下命令来查看 HADR 的配置信息:
  db2 get db cfg for [database name]|grep HADR


                                  图 2. 查看 HADR 的配置参数
  可以使用 db2 update db cfg for [database name] using CONFIG_PARAM value 命令对相应的参数进行修改。
  注:修改之后需要重新启动数据库,新的配置才能生效。
  回页首
  设置 Failover Properties
  本文假定读者了解 CaDS Server 产品信息及其安装配置,下文主要介绍对 Connection Failover 参数的配置。
  1. 前提条件:
  安装 Websphere Application Server、DB2、IBM SPSS CaDS Server。
  需要说明的是在 CaDS Server 的配置过程中,详细添加了所要连接的数据库参数。安装 CaDS Server 完成之后,打开安装目录下的 bin 文件夹,在 Linux 系统中默认路径如下:
  /opt/IBM/SPSS/Deployment/5.0/Server/bin
  执行命令:./configTool.sh,即可打开 CaDS Server 的配置向导,本文中实例所用配置信息,如下图所示,其对应的数据库信息为 HADR 中的主数据库服务器 (Primary):


                                                图 3. 连接的数据库信息
  安装并配置 CaDS Server 完成之后,登录 Websphere 控制台可看到 CDS_DataSource 的信息:Resources → JDBC → Data sources


                                        图 4. CDS_DataSource 基本信息
  2. 设置 Connection Failover 参数
  Failover 参数说明:
  1) AlternateServers
  定义备用数据库服务器,填写 IP 地址或者服务器名称,同时可以定义多个备用数据库服务器(如 server2 和 sever3):jdbc:datadirect:db2://server1:50000;DatabaseName=TEST;
  User=test;Password=secret;AlternateServers=(server2:50000;DatabaseName=TEST2,server3:50000;DatabaseName=TEST3)
  本例中使用的是 DB2 HADR,只包含一个备机。
  2) DatabaseName
  应用需要连接的数据库的名称。
  3) BatchPerformanceWorkaround
  驱动使用 DB2 的批处理机制。这个属性决定是否限制实施数据转换。如果值为 true,限制移除。如果指定参数,则参数的设置可能不按顺序执行。
  4) ConnectionRetryCount
  定义尝试连接到主数据库服务器的次数,如果指定备用服务器,则尝试连接,直到连接成功。默认值为 5,可以根据应用以及网络情况自定义。
  5) ConnectionRetryDelay
  两次尝试连接之间的时间间隔,以秒为单位,前提是要设置 ConnectionRetryCount 属性,默认值为 1,可以根据应用以及网络情况自定义。
  6) FailoverGranularity
  定义当尝试重新建立连接发生异常时驱动的行为。默认值是 nonAtomic,发生任何异常,驱动都继续失效转移。如果 FailoverMode=connection,则此属性被忽略。
  7) FailoverMode
  指定驱动所使用的失效转移方法的类型,默认是 connect,当新建连接时,驱动提供失效转移保护。
  8) FailoverPreconnect
  定义驱动是否同时尝试连接主服务器和备用服务器。默认值是 false,只有不成功的连接尝试或者丢失连接的时候,驱动会尝试连接到备用服务器。如果 FailoverMode=connection,则此属性被忽略。
  9) LoadBalancing
  定义在驱动尝试连接到数据库服务器(primary and alternate)时,是否使用 client load balancing。默认值是 false,即驱动不使用 client load balancing,基于自己的顺序去连接服务器(先是主服务器,然后备用服务器)。
  可以根据需求,自定义添加上述属性,本例中主要添加以下几个属性值:
  在 Websphere 控制台中,打开 Resources->JDBC->Data sources,选择 CDS_DataSource,然后点击 Custom properies.


                                          图 5. CDS_DataSource 属性
  修改参数 URL 的 Value 值,配置 Alternate Server:
  spss:jdbc:spssoem:db2://9.111.101.20:50000;DatabaseName=CADS5;BatchPerformanceWorkaround=TRUE;AlternateServers=(9.111.101.21:50000;DatabaseName=CADS5;BatchPerformanceWorkaround=TRUE)
  保存添加的内容:


                              图 6. CDS_DataSource 属性设置
  回页首
  Connection Failover 测试
  上文主要介绍了 DB2 HADR 和 CaDS DataSource 相关参数的配置,下面介绍在搭建的 SPSS CaDS, Modeler, DB2 HADR 环境里,DB2 主服务器断开连接 ( 实际情况可能是出现故障等 ) 之后,备用数据库接管主数据,通过提交 Modeler Stream 测试 CaDS 是否成功进行自动故障恢复,实现高可用性。
  前提:本文假定读者了解 IBM SPSS Modeler 相关产品信息及其安装配置。在上述基础上,需要安装 Modeler Server, Modeler adapter for CaDS. 在 IBM SPSS Modeler 安装程序的 Demos\streams 目录下存放着许多样本流文件,本例使用 car_sales_knn.str ( 制造商用来分析市场上的现有车辆与产品原型的相似度,并以此确定它们将与哪些车型展开竞争 ) 作为例子来进行测试。
  首先,在 IBM SPSS CaDS Deployment Manager 里配置添加 Server :
  File → New → Content Server Connection…
  在弹出的对话框里输入 CaDS 服务器的相关信息 (IP 地址和端口号 ),创建连接之后,输入用户名和密码,登录到 Repository。在 Content Explorer 下可以添加需要连接的 server,在这里我们添加 Modeler Server:
  Content Explorer → Resource Definitions → Servers → New → Server Definition
  在弹出的对话框中选择 Server 类型 (Modeler Server) , 填写服务器的相关信息 (IP 地址、端口号和默认数据路径 ),完成服务器添加。
  其次,将要使用的 Modeler Stream 文件 (car_sales_knn.str) 添加到 CaDS content repository,可以通过在 Modeler 客户端登录到 CaDS content repository 直接将 Stream 文件保存,也可以将 Stream 文件直接复制到 CaDS Content repository 里。
  最后,我们在 CaDS Content repository 新建 job ( 如本例中创建的 testJob),将 repository 里的 Stream 文件添加到新建的 job 中,接下来点击 Job 中的 Stream 文件,需要配置相应连接参数,如图所示,需要添加 Modeler Server 及其 Login 用户、Content Repository Server 及其 Login 用户。


                          图 7. 在 CaDS Content repository 中新建 job
  完成上述配置之后,将编辑的 Job 保存,并测试运行:
  1) 在未设置 Failover Properties 的前提下,通过运行所建立的 Job (testJob),在 Job History 中查看运行信息,若运行成功,确定 CaDS 服务器可以正常工作。


                                                      图 8. Job History
  2) 在未设置 Failover Properties 的前提下,通过 takeover 命令,使备用数据库接管,即断开主数据库与应用的连接,测试 CaDS 是否能够正常工作。
  首先,在 DB2Standby 上,执行命令
  TAKEOVER HADR ON DATABASE [database name]
  然后,查看 CaDS Deployment Manager 中,content server 已断开连接,提示错误如图所示,CaDS Server 不能正常工作。


                                                          图 9. Error Occurred
  3) 设置 Failover Properties, 主数据库服务器正常工作,确定 CaDS 正常工作。
  让原来的主数据库服务器重新接管:
  在 DB2Primary 上,执行命令
  TAKEOVER HADR ON DATABASE [database name]
  执行第一步的操作,即提交 job 确认所搭建的环境恢复正常工作,可以成功运行 Job。
  注:在第二步和第三步中需要查看 Websphere 服务器状态,必要时需要重新启动服务器。
  4) 设置 Failover Properties,备用数据库接管主数据库,同样执行步骤一的操作,运行 testJob(必要时需重新启动 Websphere 服务器),可以看到 Job 运行成功,运行结果如下图所示,确认 CaDS Server 正常工作,实现了环境的高可用性。


                                图 10. Run Job Successfully
  注意:从 DB2 V9.7 Fix Pack 1 开始,HADR reads on standby 功能 (HADR RoS) 支持只读应用程序访问备用数据库。如果开启了 reads on standby 功能,可能会导致应用程序连接新的主服务器失败,建议关闭 reads on standby 功能。
  回页首
  总结
  对于 CaDS 数据库实现失效转移(failover)不能简单地通过在 DB2 服务器端配置 ACR (Automatic client reroute, 自动客户端重路由 ) 来实现,本文描述了 DB2 HADR 的搭建以及在 Websphere 中添加 Connection Failover 参数,通过两者结合实现对 IBM SPSS CaDS 的失效转移保护,在主数据库服务器发生故障时,CaDS 能够连接到备用数据库服务器,实现了高可用性和灾难恢复。





收藏 推荐 打印 | 录入: | 阅读:
相关新闻      
本文评论   查看全部评论 (0)
表情: 表情 姓名: 字数
点评:
       
评论声明
  • 尊重网上道德,遵守中华人民共和国的各项有关法律法规
  • 承担一切因您的行为而直接或间接导致的民事或刑事法律责任
  • 本站管理人员有权保留或删除其管辖留言中的任意内容
  • 本站有权在网站内转载或引用您的评论
  • 参与本评论即表明您已经阅读并接受上述条款