摘 要: 分析了信息系统中普遍采用的小型机搭配磁盘阵列的部署架构所带来的成本高、扩展性差的现状。针对这种现状提出了一种基于X86平台的高性能数据库集群技术,通过测试论证了这种技术的高性能与高可靠,最后通过该项技术在电信信息系统中的实际应用说明了该方案的可行性。
关键词: PCIE-Flash卡;RDMA;存储虚拟化
0 引言
随着互联网时代的不断发展,搭建廉价、开放、共享、可扩展的信息系统平台已成为信息系统的转型方向,这不仅需要去除电信在传统运营思维下形成的对高性能高成本的设备和软件的依赖,也需要对信息系统进行改造,从高质量、高复杂度向可扩展、低成本转变,做到资源效益的最大化。随着硬件技术的发展,一方面X86平台架构的PC服务器与传统小型机在性能方面的差距不断缩小,另一方面以SSD(固态硬盘Solid State Drive)为代表的高性能存储介质的出现,使得配备了这种存储介质的X86服务器不需要外接磁盘阵列就能具有极高的I/O吞吐能力。通过以上两种平台技术,结合远程数据直接存取RDMA(Remote Direct Memory Access)及存储虚拟化技术,本文提出了一种基于X86平台的高性能数据库集群技术在信息系统中的应用方案。
1 传统小型机与磁盘阵列部署架构的分析
传统小型机与磁盘阵列的部署架构以高可靠性、高可用性、可服务性(Reliability、Availability、Serviceability简称RAS)[1]有效地支撑了信息系统的高效运行,但传统架构在当前互联网高速发展的环境下也面临以下问题:(1)在非结构化数据处理方面能力不足;(2)系统成本高昂,同等处理能力的小型机价格大约是PC服务器的10倍;(3)硬件平台的兼容性差,各厂家的小型机平台都存在技术壁垒,操作系统无法兼容;(4)扩展性有限,传统小型机和磁盘阵列的处理能力属于TB级,而在面对PB级数据时,无法高性能地进行处理。随着信息系统向着开源、开放、廉价的方向演进,以及业内“去IOE”进程的深化,将会有越来越多的信息系统不再使用传统架构进行部署。
2 X86平台与SSD等技术的现状分析
2.1 X86平台现状
全球最新的服务器X86处理器将进入14 nm工艺时代,这意味着X86架构的服务器将会具备更高的处理性能、更长的稳定运行时间以及更低的能耗。下一代20 nm工艺的DDR4(第四代双倍速率同步动态随机存储器Dual Data Rate Synchronous Dynamic Random Access Memory)内存芯片将开始应用于数据中心高端服务器,基于差分信号技术的DDR4内存,其传输速率将会达到6.4 Gb/s。
2.2 SSD技术现状分析
固态硬盘SSD(Solid State Drives)是用固态电子存储芯片阵列而制成的硬盘[2]。与传统HDD(Hard Disk Drive)硬盘相比具有读写速度快的优势,目前基于PCIE总线技术的固态硬盘的读写速度甚至超过了500 MB/s,但SSD也存在着容量较低、使用寿命受限、价格较高等缺点。在本方案中,采用了SSD盘用于提升数据库集群的整体I/O吞吐能力。
2.3 RDMA技术分析
远程直接数据存取RDMA(Remote Direct Memory Access)技术是为了解决网络传输中服务器端数据处理的延迟而产生的[3]。RDMA通过网络把资料直接传入计算机的存储区,将数据从一个系统快速移动到远程系统存储器中,而不对操作系统造成任何影响,这样就不需要占用服务器的处理功能。它消除了外部存储器复制和文本交换操作,因而能释放内存带宽和CPU的使用,能有效提升应用系统性能。在本文提出的方案中,RDMA技术的引入可以有效提升不同数据节点间的数据交互速度,降低数据处理延时。
2.4 存储虚拟化技术分析
存储虚拟化(Storage Virtualization)技术是一种屏蔽存储异构环境,整合存储资源,统一提供有用的全面功能服务的一种虚拟化技术[4]。通过这种技术可以将存储资源虚拟成一个“存储池”,从而提高整体利用率并降低管理成本,同时也可以实现在复杂环境下的数据迁移与数据同步,提升存储环境的整体性能和可用性水平。在本方案中,通过存储虚拟化技术将所有服务器节点的磁盘虚拟成一个“存储池”,统一进行数据的分配与备份,以此提升数据的安全性。
3 基于X86平台的高性能数据库集群技术方案
通过以上技术手段,本文提出了一种基于X86服务器平台,采用高性能SSD盘搭配SAS机内盘的混合存储模式,并通过存储虚拟化整合多节点存储,网络采用支持RDMA功能的万兆网络,部署的数据库集群架构,在成本大幅降低的基础上达到与传统架构近似的性能。
3.1 实施目标
本文以X86架构PC服务器集群为核心,以新型高性能网络为通道,以存储虚拟化软件为纽带,构建多节点、高性能、高可用、高吞吐量、可灵活横向扩展的全新数据库集群[5]解决方案。本方案通过某电信综合网元激活系统的应用进行测试,以验证方案可行性与先进性。
3.2 验证方案
以四台X86机架式服务器为平台,在Linux操作系统之上,构建多节点数据库集群。每台服务器内置1块SSD硬盘,作为一级存储,实现数据库高速读缓存;服务器内置SAS盘,作为二级存储,用于数据库大数据容量存储;外置NAS磁盘阵列,以ISCSI方式连接,作为三级低速存储,用以定时快照数据库数据,实现数据容灾。
集群内部通过支持RDMA协议的万兆交换机构建高速网络,服务器之间通过直接访问对方的内存来存取数据,不经过传统网络层的额外数据缓冲,也不需要进行SCSI协议转换与CPU的处理,从而达到更高的性能和更低的时延。
通过存储虚拟化软件,将各节点中本地硬盘作为共享存储使用;通过两两服务器间的数据镜像,确保数据跨设备冗余;最终构建4节点数据库集群。集群中任一节点故障都不会造成数据库集群的数据和应用中断。
当数据库计算能力或存储容量不足时,可以通过在线增加集群的单元节点的方式来进行横向扩展。部署架构图如图1所示。
3.3 配置方案
(1)通过存储虚拟化软件将不同服务器上的SSD硬盘及SAS盘配置成共享存储,并设置跨主机的数据镜像。如图2所示。
(2)为保证数据库的读写性能,需要将SSD硬盘设置为数据库的读缓存,将数据库中读写频繁、对I/O性能要求最高的数据文件,全部配置在SSD硬盘所提供的文件系统或硬盘逻辑卷组上。
(3)对于配置定时进行数据快照保存至NAS设备,根据应用特点,确定快照间隔时间。并区分数据库与日志的快照时间,尽可能使日志快照紧随其产生之后。
(4)对于数据库备份的配置,增加一台备份介质服务器,与主服务器相似配置(可做生产服务器的备机),数据备份至备份服务器内置的串行连接SCSI(Serial Attached SCSI)盘以及磁带库。备份可以通过与生产数据共享网络完成,也可通过单独的备份万兆网络完成。备份数据将通过数据库集群中的每一个节点。首先在各自节点完成重复数据删除,再通过万兆网络传输到备份介质服务器,从而完成首次磁盘备份。然后根据备份策略由备份介质服器自动将数据从磁盘介质复制到磁带库中,整个复制过程与被保护的数据库集群无关。
4 测试结果及分析
4.1 测试平台参数
在实验室搭建了如下的实验平台,具体参数见表1。
4.2 测试过程及结果分析
本次测试使用到的测试工具为:VXBench及SwingBench。
VXBench是磁盘I/O测试的工具,可以测试基于磁盘虚拟化并共享的场景下的磁盘I/O吞吐量、IOPS和延时。
SwingBench工具可以模拟Oracle数据库insert/update/select等应用场景,测试上述不同场景下的事务处理能力,包括每分钟处理事务数据TPM、每秒处理事务数TPS、事务处理响应时间Response Time等指标。
本次测试,导入测试数据库数据,数据量约2T,通过应用服务器模拟数据库的增、删、改、查操作,对数据库集群进行长时间、高并发的压测,以验证本方案是否有效。
4.2.1 高可用测试
(1)基于集群节点重启测试,主要验证主机异常重启对系统的影响,结果如表2。
测试结论:基于四节点RAC,采用两节点盘镜像后再条带化的方式,其结果如下:
①重启单节点,系统正常;
②重启两节点,如果重启的节点正好是同一份镜像的两节点,系统异常;
③其他三类方式重启两节点,系统正常;
④重启三节点,系统异常。
(2)基于四节点RAC、Oracle心跳异常测试,主要验证主机心跳网卡中断对系统的影响,如表3所示。
测试结论:Oracle心跳网卡采用系统bonding绑定方式,拔其中任意一根网卡对生产不造成影响。当拔两根网卡后,该系统业务切换至正常生产的系统上。整个RAC正常。
(3)基于四节点RAC、模拟磁盘故障测试,主要验证磁盘损坏对系统的影响,如表4所示。
(4)集群扩展性测试
测试场景:将集群中四个节点去掉一个,然后重新加入集群,观测系统运行状况。测试情况如表5。
4.2.2 集群性能测试
(1)基于SSD盘的跨节点数据镜像测试
测试过程:将节点1和节点2主机上的SSD盘做成一个卷组,在这个卷组上,使用节点1的SSD盘建立一个逻辑卷lv01,大小为600 GB,使用节点2的SSD盘建立一个逻辑卷lv02,大小也为600 GB,执行镜像脚本,将节点1上的lv01中的数据同步到节点2上的lv02。
测试结果如下:
节点2的SSD写盘速率在606 MB/s左右,节点1的SSD读盘速率约在597 MB/s左右,服务器的CPU使用率约在15%,内存使用率约在45%。
测试结论:卷组能够充分利用万兆网卡的RDMA功能进行数据复制,基本不消耗CPU的能力。
(2)基于SSD盘的逻辑卷I/O压力测试
测试场景:本地或远程读写SSD盘性能数据,使用VXBench工具进行测试。
性能测试数据如图3~5所示。
测试结论:本地读写与远端读写IOPS和吞吐能力、时延等性能相近;SSD盘的本地与远程读写的峰值在750 MB/s左右,基本达到中高端存储的读写能力。
(3)基于SSD磁盘和SAS磁盘的性能及差别
测试场景:服务器直接写本地SSD和SAS盘,在块大小为4 KB、8 KB、64 KB三种情况下分别进行测试,测试工具为VXBench。
性能测试数据如图6、图7所示。
测试结论:单个SSD盘的写IOPS超过10万,比SAS盘快100倍;单个SSD盘的写读写速度达到500M/s,比SAS盘快10倍。
(4)基于RDMA技术进行跨节点读写与不使用RDMA技术进行跨节点读写的比较
测试场景:服务器通过万兆网络跨节点读写SSD磁盘,分别启用和不启用RDMA,比较两者的差异,测试工具为VXBench。
性能测试数据如图8、图9所示。
测试数据分析:在数据块较小的场景下,启用RDMA和不启用RDMA,读写速率没有明显差别;在数据库较大的场景下,启用了RDMA比不启用RDMA,读写速率增加了一倍。
性能测试效果如表6所示。
5 结束语
本文提出了一种基于X86平台的高性能数据库集群技术,通过RDMA、存储虚拟化、数据库集群等技术提供了一种有效的数据库应用方案,基本达到了传统架构下的处理能力,并提升了平台的稳定性。这种方案通过廉价的硬件成本实现了X86平台的高性能响应,存储虚拟化及镜像技术的应用,确保了在高读写并发情况下数据的安全,相比于传统的小型机与磁盘阵列架构具有较高的性价比与应用推广价值。
参考文献
[1] SCHMIDT D J. Holistic handset power management: transisitor to platform[R]. IWPC, 2010.4.
[2] 袁飞.固态硬盘的研究与应用[D].成都:电子科技大学,2010.
[3] GARCIA D, HILL J, BARRON D, et al. An RDMA protocol speci fication(Version 1.0)[EB/OL].(2014-09-29)http://www.rdmaconsortium.org/home.
[4] 廖莹寒,朱敏.两级存储虚拟化模型[J].计算机应用与软件,2012(4):180-182.
[5] 梁勇.数据库集群故障切换技术的研究与实现[D].长沙:国防科技大学,2010.