摘 要: 分析了信息系統中普遍采用的小型機搭配磁盤陣列的部署架構所帶來的成本高、擴展性差的現狀。針對這種現狀提出了一種基于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.