DB2 pureScale 实战

雷林, DB2 售前工程师, IBM
雷林 2004 年加入 IBM 软件部信息管理部门,长期从事 DB2 数据库及相关软件的售前、售后技术支持工作;加入 IBM 之前有 10 年以上客户数据库应用软件设计和开发经验。

简介: 本文介绍了 DB2 pureScale 软件的安装配置方法及步骤、常见问题及解决方案,帮助读者快速有效地搭建 DB2 pureScale 环境;通过对客户实际生产中经常采用的 Websphere Application Server + DB2 方案、CICS + DB2 方案、多线程 DB2 CLI 应用程序 + DB2,着重介绍 DB2 pureScale 在这些典型应用场景中如何配置和优化,对于读者今后实战起到指导作用;通过客户实际生产系统等典型应用进行测试,验证 DB2 pureScale 的高可用性及负载均衡能力、高性能,以及高扩展性,增强读者对 DB2 pureScale 的信心。

DB2 pureScale 软件安装配置及常见问题解决

硬件环境要求

DB2 pureScale 采用了和业界联机事务处理“黄金”标准的 DB2/zOS 相同的共享存储体系架构、集中式缓存和锁管理,硬件配置上要求能够通过 SAN 网络访问数据库共享磁盘,需要高性能、低延迟的 InfiniBand 交换机和板卡。

DB2 pureScale 目前支持的服务器包括 IBM Power 6-550 和 595,IBM Power7 全系列服务器。由于 IBM Power6-570 服务器没有 GX+ 插槽,无法安装 Infiniband 网卡,因此不被 DB2 pureScale 支持,DB2 pureScale 后续版本将提供对 IBM PC 服务器的支持。

DB2 pureScale 支持的存储为所有 GPFS 文件系统支持的存储,具体参见:
http://publib.boulder.ibm.com/infocenter/clresctr/vxrx/index.jsp?topic=/com.ibm.cluster.gpfs.doc/gpfs_faqs/gpfsclustersfaq.html

DB2 pureScale 强烈推荐使用支持 SCSI-3 协议的存储,尽管 DB2 pureScale 也可以支持非 SCSI-3 协议的存储,但是发生故障时,IO 屏蔽的时间将大为延长,这将严重影响宕机时数据库受影响数据的恢复时间。

我们在安装 DB2 pureScale 前,需要仔细检查硬件环境是否满足要求,否则后续的安装配置工作将无法顺利开展,在使用过程中也可能出现不确定的问题。

实验环境配置及规划

我们实验环境硬件环境的硬件配置和规划如下:

服务器配置


表 1. DB2 pureScale 实验环境服务器配置

服务器(主机名) 详细配置 IP地址 InfiniBand网络名 InfiniBand IP地址
p5501 6CPU 48G 内存 1 块 8GB HBA 1 块 IB 卡 172.16.24.121 p5501ib 10.10.10.1
p5502 6CPU 48G 内存 1 块 8GB HBA 1 块 IB 卡 172.16.24.122 p5502ib 10.10.10.2
p5503 6CPU 48G 内存 1 块 8GB HBA 1 块 IB 卡 172.16.24.123 p5503ib 10.10.10.3

存储配置

IBM DS4800 48 块 146GB 光纤磁盘,划分成 6 个 RAID10 (4+4),具体 LUN 使用情况:

#mpio_get_config -A 
Storage Subsystem worldwide name: 60ab8001132000004babff15 
Storage Subsystem Name = 'DS4800-01-PureScal_ZSJ_D011231'
hdisk LUN # Ownership User Label 
hdisk6 0 B (preferred) datagpfs1 
hdisk7 1 B (non-preferred) votgpfs1 
hdisk8 2 B (non-preferred) B1 
hdisk9 3 B (preferred) B2 
hdisk10 4 B (non-preferred) B3 
hdisk11 5 B (preferred) B4 
hdisk12 6 B (non-preferred) B5 
hdisk13 7 B (preferred) B6 

为简洁起见,我们这里仅列示了服务器 p5501 磁盘情况,实际上每台服务器均可看到相同的命令输出。


表 2. DB2 pureScale 实验环境物理卷规划

物理卷 User Label 用途 文件系统挂载点
hdisk6 datagpfs1 pureScale 实例共享 GPFS 文件系统 /db2sd_20100521145928
hdisk7 votegpfs1 GPFS 仲裁盘
hdisk8 B1 数据库数据 GPFS 文件系统 /db2data
hdisk9 B2 数据库数据 GPFS 文件系统 /db2data
hdisk10 B3 数据库数据 GPFS 文件系统 /db2data
hdisk11 B4 数据库数据 GPFS 文件系统 /db2data
hdisk12 B5 数据库数据 GPFS 文件系统 /db2data
hdisk13 B6 数据库日志 GPFS 文件系统 /db2log

InfiniBand 交换机配置

1 台 Qlogic 9024CU

InfiniBand 卡配置

如果在 1 台物理服务器划分多个 LPAR,分别运行 DB2 pureScale 成员服务器或 CF,有时候需要在 LPAR 间共享使用 Infiniband 卡,这时我们需要通过 HMC 对 LPAR 的 HCA 资源进行配置:


图 1. HCA 卡在 HMC 中的配置

建议 GUID 号和分区号保持一致,同时对 HCA 使用容量进行正确的设置。HCA 卡容量使用方式分为:

  • Dedicated( 专用 ) :分配 100% 的资源
  • High(高):分配 25% 的资源
  • Medium (中):分配 12.5% 的资源
  • Low (低):分配 6.25% 的资源

对于 p6-550 或 p750 服务器,如果 1 个成员服务器和 1 个 CF 服务器在 1 台物理服务器上,建议分配给 CF 服务器 75% 的 HCA 资源;对于 p6-595 或 p770, p780 服务器,建议成员服务器和 CF 服务器均使用专用的 HCA 资源。

pureScale 软件安装配置

硬件安装配置完毕后,我们就可以开始安装 DB2 pureScale 了,不过,我们还是有些安装前的配置工作需要完成:

安装操作系统和补丁

DB2 pureScale 建议安装 AIX 6.1.3 SP3,C++ runtime 最低级别要求 xlC.rte 9.0.0.8 ,IOCP 软件包级别要求 6.1.3.1 ,系统微码级别要求为 3.5 或以上。

配置 SSH 信任关系

在 3 个节点 p5501, p5502, p5503 上 root 用户登录,执行命令:

 #ssh-keygen -t dsa 
 

直接回车接受默认值,在 ~/.ssh 目录中将会产生 2 个文件:id_dsa, 和 id_dsa.pub

合并三个节点上的 id_dsa.pub 到一个文件 authorized_keys 中,然后把 authorized_keys 复制到各个节点的 ~/.ssh 目录,并更改权限:

 #chmod 644 authorized_keys 
  

检验 SSH 信任关系配置是否成功,需要从任何 1 个节点发起对其他节点的命令,如从 p5501 上发出命令:

 #ssh p5502 date 
  

如果不提示输入口令,则信任关系配置成功。

安装 InfiniBand 相关软件包

uDAPL base fileset 从 AIX 6.1 TL3 expansion pack 光盘可以获得。

uDAPL 升级包 udapl.rte.6.1.0.1.bff 可以从下载地址:

http://www-933.ibm.com/eserver/support/fixes/fixcentral/pseriespkgoptions/ptf?fixes=U825646

Infiniband ifix 下载地址:

ftp://public.dhe.ibm.com/aix/efixes/iz68803/iz68803.epkg.Z

使用 smit installp 安装 uDAPL 基础包后,使用 smit update_all 安装 uDAPL 升级包,使用如下命令来安装 Infiniband ifix:

 #emgr -e iz68803.epkg.Z 
  

配置 Infiniband Communication Manager

在 3 个节点上执行如下命令,创建 icm 设备:

 #mkdev -c management -s infiniband -t icm 
  

配置 Infiniband IP 地址

在 3 个节点上使用如下命令,并输入相关参数,如 p5501 上配置如下:

 #smit chinet 
  


图 2. Infiniband IP 配置

需要注意的是,HCA Adapter 必须明确指定 Infiniband 适配器设备,如 iba0,否则服务器重启后 Infiniband 网卡 IP 将无法正常工作,另外 Adapter ’ s port number 需要指定到连接了 Infiniband 线缆的端口(Infiniband 网卡为双口,我们实验环境仅连接了 1 条线缆)。

需要说明的是,DB2 pureScale 工作时,成员服务器和 CF 服务器间通讯使用的是 RDMA(Remote Direct Memory Access) 协议,直接读写对方内存,大大减少通讯成本开销,是 DB2 pureScale 高扩展性的重要保证技术之一。DB2 pureScale 并不使用高成本的 TCPIP over Infiniband 的技术,之所以需要给 Infiniband 网卡配置 IP 地址,主要是配置和连通性测试需要。

配置域名解析

在 3 个节点上编辑 /etc/hosts 文件,增加如下条目:

 172.16.24.121 p5501 
 172.16.24.122 p5502 
 172.16.24.123 p5503 
 10.10.10.1 p5501ib 
 10.10.10.2 p5502ib 
 10.10.10.3 p5503ib 
  

共享磁盘赋予 PVID

在 3 个节点上分别对 hdisk6~hdisk13执行如下命令,赋予 PVID:

 #chdev -l hdisk6 -a pv="yes" 
  

配置 IOCP

在 3 个节点上执行如下命令,配置 IOCP 设备:

 #mkdev -l iocp0 
  

当这些准备工作完成后,我们就可以启动 DB2 pureScale 的安装配置程序了。

安装配置 DB2 pureScale 软件

我们可以使用命令 db2_install 以字符终端方式安装来安装 DB2 pureScale,也可以通过命令 db2setup 以图形化方式来安装 DB2 pureScale。两者的区别是,使用 db2_intall 一次只能完成 1 台服务器且仅包含 DB2 pureScale 软件的安装,而使用 db2setup 图形安装工具,可以一次性完成集群中所有服务器 DB2 pureScale 的软件安装和实例配置。

在 3 个节点中任意 1 个节点启动 db2setup 程序,DB2 pureScale 图形界面中指定 3 个节点各自用途,如 p5501 为 Primary CF,p5502 和 p5503 两个节点为成员服务器的设置界面为:


图 3. DB2 pureScale 安装配置

DB2 pureScale 图形安装程序在 3 个节点上自动创建实例用户、fence 用户及相关组、自动安装 DB2 pureScale 软件,并且创建实例共享 GPFS 集群文件系统。安装提示中需要指定实例共享 GPFS 文件系统的共享磁盘(Shared disk partition device path)为 /dev/hdisk6、仲裁盘(DB2 Cluster Services Tiebreaker)为 /dev/hdisk7。

接下来的安装过程将非常简单,DB2 pureScale 安装配置将非常顺利的完成。安装完毕后,执行命令:

 $db2instance -list 
  

检查各成员服务器和 CF 服务器的状态。


图 4. DB2 pureScale 运行状态

如果安装的环境不干净,安装过程中可能出现一些问题。下面我们介绍安装在非干净环境下安装 DB2 pureScale 遇到的常见问题和解决方案。

pureScale 软件安装配置常见问题及解放方案

DB2 pureScale 安装过程中经常出现的问题是,目标服务器上曾经安装过 DB2 pureScale,当再次进行安装时,环境未清理干净,导致 DB2 pureScale 安装无法继续下去。下面我们就安装过程中的常见问题和解放方案进行分析:

问题 1:安装程序检测到远程主机 RSCT 域存在,安装程序无法继续


图 5. DB2 pureScale 安装配置常见问题 1

这时,我们如下执行命令,屏幕输出如下:

 #lsrpdomain 
 Name  OpState RSCTActiveVersion MixedVersions TSPort GSPort 
 db2domain_20100408172908 Offline 2.5.3.6 No 12347 12347 
 

域 db2domain_20100408172908 为以前安装时遗留,需要使用如下方式进行清理:

 #rmrpdomain -f db2domain_20100408172908 
  

问题 2:安装程序检测到 GPFS 集群存在,安装程序无法继续


图 6. DB2 pureScale 安装配置常见问题 2

如上问题需要将服务器从 GPFS 集群中删除,执行如下命令进行清理:

 #/usr/lpp/mmfs/bin/mmdelnode – f 
  

问题 3:DB2 注册项遗留,安装程序无法继续


图 7. DB2 pureScale 安装配置常见问题 3

如上问题需要手工清理 DB2 注册项,执行如下命令如下进行清理:

 #rm /var/db2/* 
  

问题 4:目标服务器产品级别不一致,安装无法继续


图 8. DB2 pureScale 安装配置常见问题 4

如上问题是由于在目标服务器上已经安装了 pureScale 软件,为避免版本差异导致问题,我们需要手工卸载目标服务器已经安装的 pureScale 软件,执行如下命令进行清理:

 #/opt/IBM/db2/V9.8/install/db2_deinstall – a 
  

问题 5:在安装程序最后配置实例的阶段,提示 GPFS 文件系统无法创建

该问题通常由于手工强行卸载 GPFS 文件系统,该 GPFS 文件系统原先使用的共享磁盘没有正常删除,导致磁盘上的 GPFS 文件系统标记未清除。我们需要对 hdisk6~hdisk13 用 dd 命令进行清理,如对 hdisk6 的清理命令为:

 #dd if=/dev/zero f=/dev/hdisk6 bs=1m count=25 
  

创建数据库

在创建 DB2 pureScale 数据库之前,为性能考虑,我们需要为数据和日志创建独立的 GPFS 文件系统,使用独立的物理磁盘。root 用户登录,执行如下命令:

 #/opt/IBM/db2/V9.8/bin/db2cluster -cfs -create -filesystem db2data 
 -disk "/dev/hdisk8,/dev/hdisk9,/dev/hdisk10,/dev/hdisk11,
 /dev/hdisk12" -mount /db2data 

 #/opt/IBM/db2/V9.8/bin/db2cluster -cfs -create -filesystem db2log 
 -disk "/dev/hdisk13" -mount /db2log 
  

现在我们就可以创建数据库了,实例用户 db2sdin1 登录系统,执行如下命令:

 $db2 “create database HLJRCCB on /db2data dbpath on /db2log 
 using codeset gbk territory cn”
 

DB2 pureScale 典型应用模式配置和优化

Websphere Application Server plus DB2 pureScale

Websphere 应用服务器结合后台 DB2 数据库的应用模式在客户实际生产中广泛使用,在此,我们就 DB2 pureScale 客户端自动路由(Automatic Client Reroute, ACR)、工作负载均衡(Workload Balance, WLB)如何配置和使用进行详细说明。

WLB 和 ACR 支持情况


图 9. DB2 pureScale WLB 和 ACR 支持矩阵


Setting
Default Behaviour
Non-Java applications Java applications
Connection-level WLB Enabled N/A(不支持)
Transaction-level WLB Disabled Disabled
ACR post-connection Enabled Enabled
ACR pre-connection Disabled Disabled
Client affinities Disabled Disabled

DB2 pureScale 的工作负载均衡机制分为连接级别(Connection-level WLB)和交易级别(Transaction-level WLB)。连接级别的负载均衡发生在客户端建立数据库连接之时,以后不再调整;交易级别的负载均衡发生在交易边界,根据数据库成员服务器的忙闲程度动态进行调整。

从上表看出,对于 Java 应用程序,交易级别的工作负载均衡缺省是关闭的,尽管可能有多台 pureScale 成员服务器也不可能能做到成员服务器间负载均衡;连接前自动客户端路由(ACR pre-connection)也是关闭的,导致未曾连接过 pureScale 成员服务器的客户端,在其连接属性中指定 IP 的成员服务器宕机时,不会自动路由到其他存活成员服务器。

WLB 和 ACR 配置方法

首先,为了让 WLB 和 ACR 能够正常工作,我们需要在 WAS 服务器的 /etc/hosts 文件中添加 pureScale 成员服务器的 IP 地址和主机名:

 172.16.24.122 p5502 
 172.16.24.123 p5503 
  

其次,我们需要使用 DB2 V9.7.2提供的 JDBC 驱动程序,之前版本或 pureScale 服务器中自带的 JDBC 驱动程序目前不支持 WLB;

最后,我们需要在 WAS 应用服务器里进行相关配置如下:


表 3. DB2 pureScale WLB 和 ACR 在 WAS 中的配置

DataSource DriverManager
Conn-Level WLB 不支持 不支持
Trx-Level WLB 增加 DataSource 的属性:
enableSysplexWLB=true

请参考 WAS 例子 A1
增加 Connection 的属性:
enableSysplexWLB=true

可以使用属性或在连接串里配置,请参考下一单元格
ACR
Pre-connection
方法一:增加 DataSource 的属性

clientRerouteAlternateServerName=172.16.24.123
clientRerouteAlternatePortNumber=50001

请参考 WAS 例子 A2

方法二:生成 jndi,binding 到 DB2,参见 A.3
修改数据源参数 (Data sources > HLJRCCB > WebSphere Application Server data source properties)
Client reroute server list JNDI name(clientRerouteServerListJNDIName) 指向 A3 所设置的 JNDI
方法一:使用属性
Properties props = new Properties();
props.put("user", "db2sdin1");
props.put("password", "db2");
props.put("enableSysplexWLB", "true");
props.put("clientRerouteAlternateServerName", "172.16.24.123");
props.put("clientRerouteAlternatePortNumber ", "50001");
Connection c = DriverManager.getConnection("jdbc:db2://172.16.24.122:50001/mydb", props );
方法二:在连接串里增加属性
conn = java.sql.DriverManager
.getConnection("jdbc:db2://172.16.24.122:50001/HLJRCCB:user=db2sdin1;password=db2;
enableSysplexWLB=true;clientRerouteAlternatePortNumber=50001;
clientRerouteAlternateServerName=172.16.24.123;");

注意:该方式不支持多于 2 个节点
ACR
Post-connection
默认 enable,无参数配置。
发生 ACR 时系统会报错误信息,错误信息参考 A4
默认 enable,无参数配置。
发生 ACR 时系统会报错误信息,错误信息参考 A4

A1. 在 WAS 中配置 Trx-Level WLB

在“Data sources > DBNAME > Customer properties”增加 enableSysplexWLB 属性:


图 10. WAS 配置交易级别工作负载均衡


图 10. WAS 配置交易级别工作负载均衡

A2. 在 WAS 中配置 Pre-Conn ACR

修改数据源参数 (Data sources > DBNAME > WebSphere Application Server data source properties)


图 11. WAS 配置连接前客户端自动路由

A3. DB2ClientRerouteServerList Binding

编写一个 jsp 程序,包含如下代码,执行后将绑定相关信息:


清单 1. WAS 中注册 DB2 purescale 自动客户端路由绑定

			
InitialContext registry = new InitialContext(); 
// Create a DB2ClientRerouteServerList object 
DB2ClientRerouteServerList address = 
	newDB2ClientRerouteServerList(); 

// Set the port number and server name for the primary server 
address.setPrimaryPortNumber(50001); 
address.setPrimaryServerName("172.16.24.122"); 

// Set the port number and server name for the alternate server 
 
int[] port = {50001}; 
 String[] server = {"172.16.24.123"}; 
 address.setAlternatePortNumber(port); 
 address.setAlternateServerName(server); 

 registry.rebind("cell/persistent/serverList", address); 
  

A4. Post-Conn ACR message:

 com.ibm.db2.jcc.am.ClientRerouteException: [jcc][t4][2027][11212][4.9.66] 
 A connection failed but has been re-established. The host name or IP address
  is "p5503" and the service name or port number is 50,001. 
 Special registers may or may not be re-attempted (Reason code = 1).
  ERRORCODE=-4498, SQLSTATE=08506 
  

多线程 DB2 CLI 程序 plus pureScale

多线程 DB2 CLI 程序访问 pureScale 数据库,如果要实现 ACR 和 WLB 功能,

首先,我们需要在 DB2 CLI 客户端的 /etc/hosts 中添加如下条目:

 172.16.24.122 p5502 
 172.16.24.123 p5503 
  

然后,我们需要配置客户端 db2dsdriver.cfg 文件,该文件需要放到客户端的 $DB2HOME/sqllib/cfg 目录中。参考 db2dsdriver.cfg 如下:


清单 2. DB2 pureScale db2dsdriver.cfg

				
  
 
                    

你可能感兴趣的:(DB2 pureScale 实战)