人们总是渴望尽能够提高业务运营的效率。提高效率通常意味着显著的成本节省。本文将介绍如何利用 IBM® Aspera® 中获得专利的网络技术,使用 IBM® Rational® ClearCase MultiSite® 提高分布式设计和开发团队的效率。在本文描述的场景中,与基于安全副本协议 (Secure Copy Protocol, SCP) 的传输相比,在使用 IBM® Aspera® FASP™ 时,地理上分散的站点之间的包传输速度要快 5-20 倍。
IBM Rational ClearCase MutiSite 通过复制 Versioned Object Base (VOB) 为跨地理上分散的项目团队的开发提供支持,VOB 是 ClearCase 对其软件配置管理存储库(或硬件设计管理存储库)的叫法。每个站点通过在不同站点之间对更改进行同步来更新其本地 VOB 副本。一个站点自上次同步以来修改的全部数据所组成的更改将被导出并存储在副本包中。副本包传输到远程站点并导入。您可以通过将数据写入到物理介质(磁带、CD、USB 设备)并将该介质寄送到远程站点,或者通过网络来完成包传输。通过网络传送介质是最常用的方法。在短时间内执行了许多修改和需要传输大型文件(二进制文件)时,包可能变得很大。如果站点之间的网络带宽很低或网络连接不可靠,包传输可能成为一个性能问题。这些问题可以使用 IBM Aspera 解决方案进行解决。
IBM Aspera 软件的核心是获得专利的 FASP™ 传输技术,这是一种高速传输批量数据的突破性协议,它使用现有的 WAN 基础架构和商用硬件来实现数千倍于 FTP 和 HTTP 的速度。Aspera FASP 还提供了独立于网络距离和包丢失的可预测吞吐量。
基于这个独特的数据传输平台,构建了在分散于全球的员工、合作伙伴和客户之间传输文件的丰富的跨平台软件应用程序和 API。该软件提供了各种不同的许可选项,以便支持某种给定部署模型的最富有成本效益的解决方案:
完整的产品组合提供了多个接口(Web 服务、嵌入式、浏览器、移动)来实现自定义、集成、执行和监视传输。它包含 Aspera Console(一个统一的基于 Web 的管理接口)和 Aspera Orchestrator(提供高级工作流管理)。
该软件是为以最大速度,通过任何 IP(Internet 协议)网络(无论距离多远)传输任何大小的文件资产而独特设计的,具有完整的带宽控制和安全性。这些产品支持传输文件和大型数据集的所有常见用例,包括获取、分发、协作和同步,以及传输工作流的自动化。它们还支持在任何数据存储平台(包括传统的企业和基于云的存储平台)之间以可互操作的方式传输数据。
借助内置的自适应速率控制,Aspera 软件实现了非凡的服务质量、可预测的传送时间和理想的带宽效率。与完备的安全和数据集成验证相结合,Aspera 满足了目前和未来对全球文件传输、文件交换和工作流自动化的业务需求。
ClearCase MultiSite 和 Aspera 必须安装在共享的服务器资源上。安装后,MultiSite 被配置为使用 Aspera 将副本创建和同步包传输到远程站点,而不是使用 ClearCase MultiSite 的传输服务器或 ftp、sftp、scp 等其他传输机制。
图 1. 高级集成概述
为了演示 Aspera 和 ClearCase MultiSite 之间的集成的优势,我们在位于阿姆斯特丹、华盛顿特区和新加坡的 IBM SoftLayer Center 实现了一个示例场景。
ClearCase MultiSite 安装在 3 个 SoftLayer 云计算实例 (CCI) 上:
这些 CCI 同时提供了内部和外部网络连接。外部 (Internet) 连接用于此场景。
图 2. 示例场景概述
在阿姆斯特丹创建了一个 VOB 并将它复制到华盛顿特区和新加坡。
清单 1. 示例 Versioned Object Base 的副本
[vobadm@tah-ams01 rootdir]$ multitool lsreplica For VOB replica /vobs/vob01ams: --03-16T09:36 vobadm replica amsterdam --03-16T11:58 vobadm replica singapore --03-16T11:57 vobadm replica washington
创建了一个文件元素的新版本。文件版本的文件大小为 976 MB。
清单 2. 创建新文件元素版本
[vobadm@tah-ams01 rootdir]$ ct ls hello1.txt@@/main/4 Rule: /main/LATEST RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip@@/main/5 Rule: /main/LATEST [vobadm@tah-ams01 rootdir]$ cleartool checkout –nc RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip Checked out RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip from version /main/5. [vobadm@tah-ams01 rootdir]$ cleartool checkin –nc RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip Loading vobs/vob01ams/rootdir/RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip (1022766215 bytes). Checked in RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip version /main/6. [vobadm@tah-ams01 rootdir]$ ls -lh total 977M -r--r--r-- 1 vobadm cc_users 70 Mar 19 11:16 hello1.txt -r--r--r-- 1 vobadm cc_users 976M Mar 17 05:52 RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip
因为这是惟一的更改,所以同步包也为 976 MB。作为参考,我们使用 scp
将该文件版本传输到两个远程副本。这可以让您了解不使用 Aspera FASP 的传输会花多长时间。
清单 3. 以使用 scp 命令的包传输作为参考
$ scp RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip vobadm@ tah-wdc01 :/tmp RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip 100% 975MB 14.6MB/s 01:07 $ scp RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip vobadm@ tah-sng01 :/tmp RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip 100% 975MB 4.0MB/s 04:02
清单 3 显示,传输到华盛顿特区所花的时间比 1 分钟稍长,传输到新加坡的时间大约为 4 分钟。
现在使用 exp.sh
脚本为两个远程站点创建同步包。使用 Aspera 将同步包传输和导入到两个站点中。
清单 4. 使用 Aspera FASP 和 exp.sh 脚本的包传输
[vobadm@tah-ams01 ms_ship]$ ./exp.sh Generating synchronization packet /data/cc/ms/ms_ship/outgoing/sync_amsterdam_ 2015-04-21T09.15.01-05.00_29024 Shipping order /data/cc/ms/ms_ship/outgoing/sh_o_sync_amsterdam_ 2015-04-21T09.15.01-05.00_29024 generated. Generating synchronization packet /data/cc/ms/ms_ship/outgoing/sync_amsterdam_ 2015-04-21T09.15.22-05.00_29167 Shipping order /data/cc/ms/ms_ship/outgoing/sh_o_sync_amsterdam_ 2015-04-21T09.15.22-05.00_29167 generated. f: /data/cc/ms/ms_ship/outgoing/sync_amsterdam_2015-04-21T09.15.01-05.00_29024 srv: tah-sng01 sync_amsterdam_2015-04-21T09.15.01-05.00_2902 100% 975MB 886Mb/s 00:11 Completed: 998796K bytes transferred in 12 seconds (666151K bits/sec), in 1 file. f: /data/cc/ms/ms_ship/outgoing/sync_amsterdam_2015-04-21T09.15.22-05.00_29167 srv: tah-wdc01 sync_amsterdam_2015-04-21T09.15.22-05.00_2916 100% 975MB 879Mb/s 00:12 Completed: 998796K bytes transferred in 13 seconds (597633K bits/sec), in 1 file.
从这里可以注意到,传输到新加坡仅花了 12 秒(而不使用 Aspera 需要花费 242 秒),传输到华盛顿特区花了 13 秒(而不是 67 秒)。
通过快速检查可以发现,更改已到达并被导入到接收 VOB 副本中:
清单 5. 检查包的到达和导入
[vobadm@ tah-sng01 rootdir]$ ct ls hello1.txt@@/main/4 Rule: /main/LATEST -mkbranch sngbranch RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip@@/main/6 Rule: /main/LATEST -mkbranch sngbranch [vobadm@ tah-wdc01 rootdir]$ ct ls hello1.txt@@/main/4 Rule: /main/LATEST -mkbranch wdcbranch RATL_CLEARCASE_8.0.1_LINUX-X86_ML.zip@@/main/6 Rule: /main/LATEST -mkbranch wdcbranch
回页首
本节将介绍 ClearCase MultiSite 和 Aspera 针对本文中使用的场景的配置和集成。
ClearCase 和 MultiSite 必须已安装并具有有效的许可。尽管不是必需的(因为可以使用默认传输池),但我们还是为 Aspera 传输创建了一个新传输池(shipping bay)。
清单 6. MultiSite shipping.conf 文件摘录
$ cat /var/adm/rational/clearcase/config/shipping.conf # # This file controls the behavior of the store-and-forward mechanism. # It is currently used by the store-and-forward daemon (shipping_server) # and the MultiSite CLI (multitool). # # Each configuration line in the file consists of a keyword followed # by arguments. The supported keywords are described below. # … # # STORAGE-BAY <classname> <pathname> # RETURN-BAY <classname> <pathname> # # These options control the storage locations used to process requests # for various shipping classes. The first type of entry is used to # specify a storage location for requests that are being sent to their # destinations. The second type of entry is used to specify a storage # location for requests that are being returned back to their origin # (a request can be returned because it suffered a catastrophic delivery # failure, or because the order expired before it could be delivered # to all of its destinations). Any requests received/returned for the specified # class will be stored in the indicated directory (including both requests # that are destined for the local host, as well as requests that # are being forwarded to other hosts). If more than one storage directory # is specified for a shipping class (using multiple STORAGE-BAY or RETURN-BAY # configuration lines), then any of the indicated directories may be used # by the store-and-forward mechanism to process a request of the appropriate # class. # # These options also control the locations that are scanned by the # store-and-forward daemon when it is attempting to send/forward/return # outstanding requests. # # If <classname> is '-default', then the indicated directory is used # to process requests whose shipping class storage directories are # not otherwise specified, and to process requests that do not have # a shipping class. # # When creating a shipping bay, it is necessary to create two subdirectories: # incoming - which is used for incoming requests # outgoing - which is used for outgoing requests STORAGE-BAY -default /opt/rational/clearcase/shipping/ms_ship RETURN-BAY -default /opt/rational/clearcase/shipping/ms_rtn STORAGE-BAY -aspera /data/cc/ms/ms_shipRETURN-BAY -aspera /data/cc/ms/ms_rtn …
还可以创建一个同步包,然后通过让用户指定一个名称和目录,让 Aspera 在文件系统中的任何地方获取它。但是,使用具有传输顺序和相应包文件的传输池机制,可以乱序读取目标位置。同样地,您无需指定文件名,因为会自动生成它们。
在存储池(storage bay)中手动创建 incoming 和 outgoing 目录。
清单 7. 传入和传出目录
$ ls -l /data/cc/ms/ms_ship total 12 drwxrwxrwx 2 root root 4096 Mar 16 11:33 incoming drwxrwxrwx 2 root root 4096 Apr 20 06:45 outgoing
如果将 Aspera 专门用于包传输,则不使用返回池(return bay)。
两个脚本都支持集成:
主位置 tah-ams01,复制到新加坡和华盛顿特区。演示使用 ssh
连接到 tah-ams01
。
清单 8. 调用 exp.sh 脚本
[root@tah-ams01 ~]# su - vobadm [vobadm@tah-ams01 ~]$ /data/cc/ms/ms_ship/exp.sh f: /data/cc/ms/ms_ship/outgoing/sync_amsterdam_2015-03-19T09.24.36-05.00_6382 srv: tah-sng01 sync_amsterdam_2015-03-19T09.24.36-05.00_6382 100% 975MB 876Mb/s 00:10 Completed: 998799K bytes transferred in 11 seconds (723337K bits/sec), in 1 file. f: /data/cc/ms/ms_ship/outgoing/sync_amsterdam_2015-03-19T11.18.42-05.00_25208 srv: tah-wdc01 sync_amsterdam_2015-03-19T11.18.42-05.00_2520 100% 975MB 823Mb/s 00:10 Completed: 998798K bytes transferred in 11 seconds (712300K bits/sec), in 1 file. f: /data/cc/ms/ms_ship/outgoing/sync_amsterdam_2015-03-19T11.19.11-05.00_25238 srv: tah-sng01 sync_amsterdam_2015-03-19T11.19.11-05.00_2523 100% 1022 --:-- Completed: 0K bytes transferred in 0 seconds (9K bits/sec), in 1 file.
以下是 exp.sh
脚本中的逻辑步骤:
/data/cc/ms/ms_ship/outgoing
目录中的两个目录位置运行 multitool syncreplica
。 /data/cc/ms/ms_ship/outgoing
中是否有两个文件 (data+manifest)。 Aspera ascp-command
: ascp
传输到相关的主机 清单 9. exp.sh 脚本的内容
[vobadm@tah-ams01 .~]$ cat /data/cc/ms/ms_ship/exp.sh #!/bin/sh MT=/opt/rational/clearcase/bin/multitool EX=/data/cc/ms/ms_ship/outgoing TR=/data/cc/ms/ms_ship/trans $MT syncreplica -export -ship -sclass -aspera singapore $MT syncreplica -export -ship -sclass -aspera washington for f in `ls -b $EX/sync_*` do fn=`echo $f | rev | cut -d/ -f1 | rev` echo f: $f if [ -f $EX/sh_o_$fn ]; then srv=`grep $EX/sh_o_$fn` echo srv: $srv # -l max_rate Set the target transfer rate in Kbps # -T Disable encryption for maximum throughput. # -d Create target directory if it doesn't already exist. # -k{0|1|2|3} Enable resuming partially transferred files at the # specified resume level # 2 - Check file attributes and do a sparse file checksum; # resume if the current and original attributes/checksums # match. # -i private_key_file # Use public key authentication and specify the private key file # --remove-after-transfer # Add this option to remove all source files (excluding the # source directory) once the transfer has completed. ascp -l 1G -T -d -k 0 -i ~/.ssh/id_rsa -u CCMS $f $srv:$TR else logger exp.sh - ccms transport - orphaned file $f fi done
目标位置使用 Aspera 自动处理前/后脚本支持(一个已完成的传入传输在各种条件下运行脚本)。Aspera 在 trans
目录中收到一个文件时,以下 aspera-prepost
脚本会将该文件转移到 ../incoming
目录,并启动 multitool syncreplica –import
。这会处理来自 incoming
目录的所有文件。
清单 10. aspera-prepost 脚本的内容
[root@tah-wdc01 ~]# cat /opt/aspera/var/aspera-prepost #!/bin/sh # relevant info from the environment: # DIRECTION=recv # FILE=/data/cc/ms/ms_ship/trans/sync_amsterdam_2015-03-19T11.18.42-05.00_25208 # STARTSTOP=Stop # STATE=success # TYPE=File MT=/opt/rational/clearcase/bin/multitool if [[ $DIRECTION == recv ]]; then if [[ $STARTSTOP == Stop ]]; then if [[ $TYPE == File ]]; then if [[ $STATE == success ]]; then if [[ $FILE == /data/cc/ms/ms_ship/trans/* ]]; then mv $FILE /data/cc/ms/ms_ship/incoming$MT syncreplica -import -receive -sclass -aspera 2>>&1 | logger & fi fi fi fi fi
要查看处理的实时视图,可登录到一个卫星,并在 /var/log/messages
上运行 tail
,然后在主要位置上启动 exp.sh
。
清单 11. 日志消息实时视图
[root@tah-wdc01 ~]# tail -f /var/log/messages . . . Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG ======= File Transfer statistics ======= Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG ------- Source statistics ------- Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG Source argument scans attempted : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source argument scans completed : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG Source path scans attempted : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source path scans failed : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source path scans skipped since irr. : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source path scans excluded : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source directory scans completed : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source file scans completed : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG Source directory creates attempted : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source directory creates failed : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source directory created or existed : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG Source file transfers attempted : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source file transfers failed : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source file transfers passed : 1 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG - Source file transfers skipped : 0 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG Source bytes transferred : 1022769257 Apr 14 08:34:46 tah-wdc01 ascp[17367]: LOG ======= end File Transfer statistics ======= Apr 14 08:35:00 tah-wdc01 asperacentral[25809]: LOG eb/pe/he/fc=1000/0/13/0 rs/rf=15/15 ql/qt=11/2696749 Apr 14 08:35:07 tah-wdc01 vobadm: Applied sync. packet /data/cc/ms/ms_ship/incoming/sync_amsterdam_2015-03-19T11.18.42-05.00_25208 to VOB /data/cc/vobstore/vob01wdc.vbs Apr 14 08:35:08 tah-wdc01 systemd-logind: Removed session 1396.
假设您的 MultiSite 部署中已有某种逻辑来执行计划的传输,该逻辑应该很容易放到 ascp-command
中,而不是放到现有解决方案中。
与 Aspera 的双向同步通过在所有站点上实现两个脚本( exp.sh
和 aspera-prepost
)来实现。
回页首
本文展示了如何轻松地配置 IBM Aspera 和 IBM Rational ClearCase MultiSite,在包传输(以及进而在副本同步)时间上实现重大改善。在这种场景中,与基于 scp
的传输相比,在使用 Aspera FASP 时,地理上分散的站点之间的包传输速度要快 5-20 倍。这对处理频繁同步的副本(比如每 5 分钟同步一次)的团队或处理非常大的代码库或文件的团队尤为有用。