因为大多数生产环境使用 DB2 pureScale的业务系统通常是 ERP或业务核心,所以出于性能、稳定性与厂商支持的考虑,大多数企业都会选择 Power平台。所以这篇笔记只是针对 AIX 上 DB2 purescale 快速部署规划指南,并非 x86 平台。
在部署前,应该根据对业务系统负载特征(并发用户,交易吞吐量,读写分布等)、未来 2年增长的数据量,预估 CPU、内存计算资源与所需要的存储空间。据此,选择采购相应的 power服务器与相应的存储设备。
最好请 IBM 经验丰富的数据库架构师,根据客户业务系统需求情况,进行 DB2 pureScale 环境物理架构设计。笔者这块没多少经验,只知道些皮毛。
这一步最好设计出 DB2 purescale 物理架构图,方便下面的快速部署实施。
规划原则:(from IBM 大牛)
需要几台服务器?至少需要2台机器,这样可以防止出现单点故障。一个典型的Power平台上的DB2 pureScale集群包括2~4台服务器,上面创建有多个AIX分区(LPAR),每个分区运行CF或成员;一个典型的x86平台上的DB2 pureScale集群包括4~6台服务器,每个机器运行CF或成员。
硬件选择Power平台还是x86平台?这个要根据具体负载来谈,ERP、银行交易等关键型负载选择Power平台;对一些只是需要高可用性的普通负载,选择x86平台。
如何选择Power机器型号?在Power平台上,可以根据需要,可以选择Power 7中的全系列,包括710、720、730、740、750、770、780和795,或者Power 8系列
如何选择x86机器型号?目前x86平台可供选择的机器型号只有3650 M3、3690 X5和3850 X5。
如何选择存储型号?只要支持GPFS的型号就可以,为了支持失效成员的I/O保护(I/O Fencing),存储最好支持SCSI-3 Persistent Reservation。
如何选择网络?除了Infiniband网络外,从DB2 V10开始支持万兆以太网。对网络带宽有很高要求的场景下,选择Infiniband网络;反之,如果各个成员之间内部互联的带宽要求不高,可以考虑万兆以太网。
如何规划CF?一个物理机或者一个AIX分区(LPAR)上运行一个CF,需要规划2个,一个为主,另一个为从,这样可以避免出现单点故障。运行每个CF的CPU最大内核数取决于负载,如果是写频繁负载,通常成员内核数和CF内核数的比例为6:1,如果是读频繁负载,这个比例为10:1。写频繁程度越高,运行每个CF需要的内存量就越大。
如何规划成员?一个物理机或者一个AIX分区(LPAR)上运行一个成员,后续可以根据需要扩充成员的个数。运行每个成员的CPU最大内核数取决于负载的需求,运行每个成员的内存量通常为每个内核4G~8G内存。
如何规划存储?存储分为两部分,一部分是一个仲裁盘(Tiebreaker disk),容量为25MB以上;另一部分是共享盘,用来存放GPFS文件系统,其中需要一个实例共享文件系统,容量为2GB以上,其余文件系统用来存放数据和日志。
需要两个交换机才能在 Db2 pureScale环境中支持交换机故障转移。通过使用多个物理通信适配器 来连接至多个交换机,可以增强适配器的高可用性。通过使用多个通信适配器端口,可以提高吞吐量。
环境规划及配置
1、硬件环境
1.1__ POWER 7 or POWER 8系列服务器选择
根据 DB2 purescale 规划选则服务器及其 CPU、内存配置。
1.2__ 网络配置选择
- 基于 InfiniBand (IB) 的 RDMA 协议网络,或
- 基于融合以太网的 RDMA 协议 (RoCE) 网络,或
- 基于以太网的 TCP/IP 协议 (TCP/IP) 网络。
一般建议 IB 或者 RoCE网络,因为member 与 CF 之间需要极高通信速度的RDMA协议网络来同步共享全局锁、组缓冲池、ACR中的控制信息,保证各个 member数据访问的有序及数据的一致性。
TCP/IP网络只适合DB2 pureScale技术测试学习。
使用 RDMA 协议的 IB 网络 或者 RoCE 网络需要以下两个网络:一个(公共)以太网网络,以及一个用于成员与 CF 之间通信的(专用)高速通信网络。
1.3__ 适配器、交换机、电缆 选择
需要根据 1) 中选定的 POWER服务器,2)中选定的RDMA协议网 选择受支持的相应的适配器、交换机、电缆。
“POWER平台 ——> RDMA协议网 ——> 适配器,交换机,线缆” 硬件信息参考下面网址:
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0054850.html#r0054850__spf-cables
1.4__ 共享存储设备 选择及其规划
** ★DB2 集群服务仲裁** 和 快速 I/O 隔离 功能部件使发生了故障的主机的恢复时间更短并提供了更好的弹性,同时提高了可用性。
因此,DB2 pureScale 强烈推荐使用支持 SCSI-3 Persistent Reservation 协议的存储设备和多路径 I/O 驱动程序组合!!!
尽管 DB2 pureScale 也可以支持非 SCSI-3 协议的存储,但是发生故障时,IO 屏蔽的时间将大为延长,这将严重影响宕机时数据库受影响数据的恢复时间。
类别 1 存储设备和多路径 I/O 驱动程序组合
最好使用 DB2信息中心中推荐的类别 1 存储设备和多路径 I/O 驱动程序组合,链接如下:
https://www.ibm.com/support/knowledgecenter/en/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/c0059360.html?origURL=SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/c0059360.html&view=embed
此类别中列示的存储设备和多路径 I/O 驱动程序组合可以成功地支持 DB2 集群服务仲裁和快速 I/O 隔离。已使用 Db2 pureScale Feature 验证了的类别 1 设备,这些设备将产生最大的弹性和最短的恢复时间。
共享存储规划
对于下面每个文件系统,要规划足够的共享磁盘空间供其使用:
实例共享目录:10 GB
数据:取决于特定的应用程序需求
日志:取决于预期的事务数和应用程序日志记录需求
DB2 集群服务仲裁磁盘
例如下表的规划:
2、软件环境
2.0__ 选择受支持的 AIX 版本
表 1. 系统最低要求 - AIX 操作系统版本和技术级别
“oslevel -s ”验证安装的 AIX版本
2.1__ 安装多路径软件 SDDPCM
这个软件和 AIX版本、存储型号相关,用于管理 pureScale集群的共享盘,总共包括下面三个软件,安装顺序如下:
- 首先安装devices.fcp.disk.ibm.mpio.rte.tar(Host Attachment for SDDPCM on AIX)
- 其次安装devices.sddpcm.61.rte.tar
- 最后安装devices.sddpcm.61.2.6.3.2.bff.tar
大家要根据自己的AIX版本和IBM存储型号下载相应软件包,下载网址如下:
Subsystem Device Driver Path Control Module (SDDPCM)
2.2__ 安装 xlC/C++ 运行时支持
这个也是pureScale要求的,下载后,使用 “zcat <filename>.tar.Z | tar -xf -” 命令解压,随后使用 “smit install_latest” 命令安装。
下载网址如下:
IBM XL C/C++ for AIX, V12.1 Runtime Environment
最后,在用 smit 安装软件时,需要将 “ACCEPT new license agreements?” 设为 YES。
2.3__ 配置通信适配器端口和交换机
安装 uDAPL驱动
对于 IB 或 RoCE 网络,需要 uDAPL驱动。pureScale集群中,成员和CF之间使用uDAPL接口实现RDMA协议,所以必须安装uDAPL驱动。uDAPL驱动和AIX版本是强关联的,所以要根据自己的AIX版本选择相应的驱动。
2.4__ 配置 SSH 互信关系
安装 OpenSSH,OpenSSH 用于各个成员与 CF 节点间的 SSH互信。
设置基于公用密钥的认证:
在各个成员与 CF 节点服务器上分别对 root 用户、DB2 实例用户生成公用密钥/专用密钥对
ssh-keygen -t dsa
在 ~/.ssh 目录中将会产生 2 个文件:id_dsa, 和 id_dsa.pub
针对root和 DB2实例用户,合并所有节点上的 id_dsa.pub 到一个文件 authorized_keys 中,然后把 authorized_keys 复制到各个节点的 ~/.ssh 目录,并更改权限:
chmod 644 authorized_keys
2.5__ option:X Window System 软件
如果要使用“Db2 安装”向导在 Linux 或 UNIX 操作系统上安装数据服务器产品,那么需要具有能够呈示图形用户界面的 X Window System 软件。
2.6__ 配置共享存储 PVID
(1)选定一个节点,使用lspv命令查看系统上的hdisk信息和PVID信息。
(2)在当前节点分区上,给所有的hdisk设置PVID,例如给hdisk9设置PVID如下所示:
chdev -l hdisk9 -a pv=yes
(3)在其他节点分区上,通过rmdev命令执行同样的步骤删除所有磁盘旧有的PVID信息,例如删除hdisk9上旧有的PVID信息,命令如下:
rmdev -dl hdisk9
(4)在其他节点上运行cfgmgr命令,这样系统将从存储中重新检索 PVID,即在(2)步中设置的PVID信息,这样所有节点所有磁盘的PVID就完全一致了。
2.7__ 配置 NTP
使参加 DB2 purescale 集群的所有节点时间完全同步
NTP server配置:
1、设置 NTP 守护程序以与其自己的系统时钟同步。编辑 /etc/ntp.conf 并添加下列各行:
server 127.127.1.0 prefer # the logical IP address for the NTP serverto sync to its own system clockfudge 127.127.1.0driftfile /etc/ntp.drifttracefile /etc/ntp.trace
2、将 NTP 服务器配置为在系统重新启动时启动。
编辑文件 /etc/rc.tcpip 并取消注释以下条目:
start /usr/sbin/xntpd -x "$src_running"
3、启动 NTP 服务器:
startsrc -s xntpd
NTP client 配置:
1、指定要与之同步的 NTP 服务器。 打开 /etc/ntp.conf 文件并添加以下行(14.1.16.11为 NTP server IP):
server 14.1.16.11driftfile /etc/ntp.drifttracefile /etc/ntp.trace
2、将 NTP 服务器配置为在系统重新启动时启动:
编辑 /etc/rc.tcpip 文件并取消注释以下行:
start /usr/sbin/xntpd -x "$src_running"
3、启动 NTP 服务器:
startsrc -s xntpd
4、验证守护程序是否已同步。
如果守护程序与系统时钟严重不同步,那么可能需要 10 分钟以上的时间来使它同步。 要确保在继续之前守护程序已同步,您可以检查“系统层”字段:
lssrc -ls xntpd
要继续执行下一个步骤,系统层字段应该小于 16。
通过运行 ntpdate -d 14.1.16.11 命令完成同步过程。
2.8__ 配置 IOCP
在所有节点上执行如下命令,配置 IOCP 设备:
#mkdev -l iocp0
要检查系统上是否安装了 IOCP 模块,请输入以下命令:
$ lslpp -l bos.iocp.rte
输出应该类似于以下示例中的输出:
Fileset -- ** Level ** -- State ** -- ** Description
Path: /usr/lib/objrepos
bos.iocp.rte 5.3.9.0 APPLIED I/O Completion Ports API
Path: /etc/objrepos
bos.iocp.rte 5.3.0.50 COMMITTED I/O Completion Ports API
通过输入以下命令,检查 IOCP 端口的状态是否为 Available:
$ lsdev -Cc iocp
输出应如下所示:
iocp0 Available I/O Completion Ports
3、Db2 pureScale Feature的安装前核对表
执行 db2prereqcheck,进行安装前的检查。
./db2prereqcheck -p -v 11.1.0.0
更加详细的 “检查列表” 请参考信息中心下列网址:
https://www.ibm.com/support/knowledgecenter/zh/SSEPGG_11.1.0/com.ibm.db2.luw.qb.server.doc/doc/r0056077.html
4、DB2 pureScale 安装配置
4.1__ 用户规划
需要以下用户才能创建 Db2 pureScale 实例:
- 一个用户作为实例所有者
- 一个非 root 用户标识,以在 DB2 pureScale 集群中的主机之间使用安全 shell (SSH) 网络协议(此用户标识可缺省为实例所有者)
- 一个用户作为受防护用户
表 1. 用户和组示例
4.2__ 安装配置 DB2 pureScale
db2_install 安装方法
安装 Db2 数据库产品、Tivoli® SA MP 和 IBM Spectrum Scale:
db2_install -b /opt/IBM/db2/V11.1 -p SERVER -f PURESCALE -t /tmp/db2_install.trc -l /tmp/db2_install.log
验证是否已安装 Db2 数据库产品:
/usr/local/bin/db2ls
验证 Tivoli SA MP 和 IBM Spectrum Scale 是否已安装在系统上:
lslpp -l | grep sam-*
lslpp -l | grep -i gpfs*
4.3__ GPFS集群文件系统
必须使用 root 创建GPFS文件系统,随后chown 给 db2sdin1
db2cluster -CFS -CREATE -FILESYSTEM db2data -DISK /dev/hdisk8,/dev/hdisk9,/dev/hdisk10,/dev/hdisk11,/dev/hdisk12 -MOUNT /db2fs/db2data
db2cluster -CFS -CREATE -FILESYSTEM db2log -DISK /dev/hdisk13 -MOUNT /db2fs/db2log
db2cluster -CFS -CREATE -FILESYSTEM db2temp -DISK /dev/hdisk6 -MOUNT /db2fs/db2inst
chown -R db2sdin1:db2iadm1 /db2fs
查看验证 GPFS集群文件系统配置:
# /usr/lpp/mmfs/bin/mmlsconfig
对 GPFS文件系统启用 Persistent Reserve:
# ./db2cluster -cfs -stop -all
All specified hosts have been stopped successfully.
# /usr/lpp/mmfs/bin/mmchconfig usePersistentReserve=yes
# /usr/lpp/mmfs/bin/mmlsconfig | grep PersistentReserve
usePersistentReserve yes
# ./db2cluster -cfs -start -all
All specified hosts have been started successfully.
# /usr/lpp/mmfs/bin/mmlsnsd -X
DB2 实例共享文件系统创建:
# ./db2cluster_prepare -instance_shared_dev /dev/hdisk6 -instance_shared_mount /db2fs/db2inst
DBI1446I The db2cluster_prepare command is running.
4.4__ DB2 pureScale 实例创建
作为 root 用户运行以下命令,以设置初始 DB2 pureScale 实例,同时将一个主机指定为 Db2 成员,并将另一个主机指定为 CF。
示例:
db2icrt -d -m h1.domain.com -mnet h1.domain.com-ib0
-cf h2.domain.com -cfnet h2.domain.com-ib0
-instance_shared_dev /dev/hdisk1 -tbdev 129.42.38.1
-u db2fenc1 db2sdin1
此命令会创建 Db2 pureScale实例 db2sdin1,以及一个名称为 h1.domain.com 且网络名为 h1.domain.com-ib0 的 Db2 成员和一个网络名为 h2.domain.com-ib0 的集群高速缓存设施 h2.domain.com。它还会将共享文件系统设备路径指定为 /dev/hdisk1 并将仲裁磁盘设置为 /dev/hdisk2。
4.5__ 成员、CF添加
在 Db2 pureScale 实例的初始设置期间,只能指定一个 Db2 成员和一个 CF。可以使用 db2iupdt 命令添加其他 Db2 成员和集群高速缓存设施。
使用 db2iupdt 命令:
从已参与 Db2 pureScale实例的主机中运行以下命令:
DB2DIR/instance/db2iupdt
-add [-m <member_host> -mnet <netname>] | [-cf <cf_host> -cfnet <netname>]
-mid <MemberId>
instname
DB2DIR 是 Db2 pureScale 软件的安装目录。
netname 表示集群互连网络名,它对应于用于在 Db2 实例中的 Db2 成员与集群高速缓存设施之间进行高速通信的通信适配器端口。
如果要向具有现成成员的主机添加成员,那么新添加必须具有与现有成员完全相同的网络名(或网络名集合)。
(可选)对于 Db2 管理的 IBM Spectrum Scale,db2sshid 是在 IBM Spectrum Scale 域中的主机之间使用 SSH 时所需的非 root 用户标识。
(可选)如果要添加成员,请使用 –mid 选项来指示新成员的成员标识。
对于主机名,需要使用与 hostname 命令的返回值相同的主机名格式。
将 –m 选项用于成员或将 –cf 选项用于集群高速缓存设施,以指定要添加的主机类型。必须选择一个种类,但不能同时选择这两个种类。如果要将多个主机同时添加到现有实例,请使用 db2isetup 命令。