王圳 吳震東
摘要:該系統主要應用于個人用戶,提供輕量級私有云存儲能力。私有云存儲服務可工作于任何TCP/IP網絡環境,公網、內網皆可,可隨時移動、放置于任何工作、生活場所;支持用戶隨時隨地在公網環境下向私有云存儲轉發文件數據,實時冗余保存。私有云存儲作為公有云存儲的輔助,能解決人們一直以來使用云存儲的顧慮:在公有云存儲環境下數據的隱私性和安全性。系統使用OpenStack Swift對象存儲模塊構建本地冗余存儲系統,利用公網服務器構建統一文件轉發平臺,實現多用戶文件加密傳輸、轉發、移動用戶認證、內外網協同通信功能。
關鍵詞:Android;OpenStack Swift;文件傳輸;私有云存儲
中圖分類號:TP393 文獻標識碼:A 文章編號:1009-3044(2016)02-0043-03
1 云存儲現狀
云存儲概念是隨著云計算、軟件定義存儲等新興產業的發展而流行起來的。通俗地說,云存儲就是使用軟件來解決硬件帶來的數據存儲難題的一種技術方案。傳統的存儲方案,因價格高昂,無法全面應用等問題,不可避免地會有宕機、設備損壞等事件發生。這給數據的高可用帶來了極大的不安,但是數據高可用卻又是我們迫切需要的。那么我們是不是可以使用軟件的方案來解決呢?云存儲就是背負著這樣的歷史使命走上舞臺。
云存儲在技術層面來說,也可以稱為分布式存儲系統。這種技術充分使用分布式帶來的優勢,通過軟件,讓數據保持一定量的冗余,并且指定同一份數據的冗余必定不在同一個物理硬件之上,許多分布式存儲系統默認的冗余量都是3,也就是說每一份數據都會有兩個備份,并且備份數據與主數據不建議在同一物理硬件設備之上。這樣的話,只要數據的三個載體有一個不損壞,那么數據還是完整可用的。在分布式存儲系統的基礎之上,再加上人工調配,數據的可靠性得到了極大的提高。此外,分布式存儲系統構建在傳統的存儲設備之上,既能直接管理硬件設備,也能管理傳統的專用存儲設備。這就屏蔽了底層硬件設備的異構性,管理員也不需要再去考慮硬件異構帶來的很多問題。
從技術選型上來說,大型的公有云提供商基本都會自己開發專有的分布式存儲系統,而資源有限的小公司基本都會基于開源的分布式存儲方案,針對自己的業務場景進行改造,進而形成擁有自主產權的私有分布式存儲系統。目前開源的主要方案有Swift和Ceph。從使用上來說,云存儲大致可分為:公有云存儲、私有云存儲、混合云存儲。公有云存儲就是公有云存儲供應商在公網環境下開放統一接口,用戶只需付費購買容量服務,就可以使用大型存儲的一種形式。這種使用方式的優勢就是,用戶無需花費太多的成本就能獲得云存儲帶來的各種便利和可靠。但是,公有云存儲的缺點也是非常明顯的,數據統一放在公有云提供商的IDC中,那么用戶基本就失去了對數據的控制權。在upyun最新的活動中,公有云的缺點就體現的一覽無余。用戶可以免費上傳數據,但是訪問上傳的數據確實按流量收費。這就意味著,數據一旦進入公有云提供商,那么用戶基本完全喪失了對數據的控制權。雖然現在很多公有云存儲提供商都會與用戶簽訂保密協議,但是,作為銀行、金融等對數據的安全性特別重視的企業,這種不可控因素是不可忍受的。因此,私有云存儲就有了存在的價值。私有云存儲,顧名思義,就是軟硬件完全由公司自己把控的數據存儲解決方案。這種方案的優勢在上述已經說過,其主要缺點就是成本較高,數據可靠性也很難達到公有云存儲提供商專業團隊所能保證的級別。混合云存儲就是同時使用了這兩種存儲的一種方案,使用公有云存儲來備份加密數據,使用私有云存儲來滿足業務工作。
2 系統原理
輕量級私有云存儲總體架構圖如圖1所示。
移動終端需要實現的功能有:用戶登錄、文件及文件列表上傳、日志信息查閱。公網與內網私有云存儲平臺之間使用一臺文件轉發服務器,把通過登錄認證的終端客戶端傳輸過來的文件轉發到指定的內網服務器,所以公網服務器需要有登錄認證模塊、文件接收模塊、文件轉發模塊,此外為了使移動終端能進行日志信息、上傳文件列表查閱,在公網服務端實現對等功能。內網服務器是公網服務器與私有云存儲平臺的中間站,所有文件必須通過內網服務器才能上傳到私有云存儲平臺。私有云存儲平臺采用的是開源產品OpenStack Swift,OpenStack Swift私有云存儲平臺負責存儲文件,并保證文件的高可用性,用戶可以通過OpenStack Swift提供的接口對上傳的文件進行適當的文件更新操作。
2.1公網轉發服務器模塊
公網轉發服務器部署一個用戶認證模塊,并預留文件接收套接字接口。用戶通過認證后,經預留套接字接口讀取來自客戶端的字節流。同時,服務器監聽來自內網上傳服務器的請求,每收到一個請求,即把對應的通信套接字存入套接字棧中;當移動客戶端請求上傳文件時,服務器從套接字棧中依次出棧預存的通信套接字,銜接兩端Socket,實現文件跨越公網、內網的存儲、轉發。
2.2內網接收及上傳模塊
內外網需要通信的話,發起者肯定是內網服務器,因為公網服務器不能主動訪問到內網。在本模塊中,由內網服務器向公網服務器特定的端口發起連接請求,在公網服務器接受到這個請求之后,便始終保持連接。并以兩秒間隔保持心跳,維持連接一直存在。當公網轉發服務器接收到文件并轉發時,內網文件接收及上傳服務器便開始接收文件。因對象存儲提供的API接口是針對文件上傳的,所以接收到的字節流不能直接上傳到私有云存儲環境,而是要先保存在本地,然后再調用OpenStack Swift API 接口進行文件上傳,并列出當前用戶所擁有的容器的對象文件列表。
2.3后端云存儲模塊
有很多主流開源分布式文件存儲系統都可以作為私有云環境下的存儲系統。OpenStack Swift在非結構化數據存儲方面有其更高效的存儲效率,因此在本系統基于OpenStack Swift搭建。相關附屬組件有:用于用戶認證及用戶管理的認證服務(Keystone)、用于存儲虛機鏡像及鏡像管理的鏡像服務(Glance)、整個OpenStack云計算平臺服務的核心計算服務(Nova)、用以提供虛擬網絡中心的網絡服務(Neutron)、讓人可以更加直觀地感知到各類服務的界面服務(Horizon)。
3 關鍵技術
3.1 用戶認證服務
認證服務是云存儲服務必須的一環,由OpenStack的Keystone組件實現。雖然理論上OpenStack的各個項目之間是相互獨立提供相關服務的,例如Nova提供了計算服務,Swift提供了對象存儲服務等,但是所有的這些服務均依賴于OpenStack認證服務組件所提供的3A(Account,Authentication,Authorization)服務。
3.2 數據一致性存儲服務
數據云存儲服務本質上是一個分布式文件存儲管理系統,其可以通過自身的代理服務達到存儲系統的全局負載均衡及數據一致性。所有數據經緩存服務用一致性散列的方法,將數據分散到各個物理存儲區域。Swift的實現中對象環、容器環及賬戶環這三個數據環的作用顯得相當的重要,所有的虛擬分區與物理存儲的映射關系都通過在這三個環上執行一致性哈希運算得到。
3.3 對象存儲接口調用
OpensStack的對象存儲是一個高可用的、分布式的、一致的對象存儲。通過使用對象存儲的API可以創建、修改和獲得對象和元數據,Swift的API是通過REST(Representational State Transfer)網絡服務來實現的。使用HTTPS(SSL)協議來和對象存儲進行交互,可以用HTTP API調用完成操作,也可以使用支持RESTful API的特定語言的API進行調用。存儲對象使用JSON和XML這些支持標準的、非序列化的響應格式的協議進行表達。
4 系統運行
我們對輕量級私有云存儲系統進行功能實驗,實驗環境如下:
手機客戶端測試手機:努比亞z5s mini Android 4.4
公網服務器測試運行環境:
IP:42.62.101.111
系統環境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
MySQL驅動:mysql-connector-java-5.1.37-bin.jar
內網服務器測試運行環境:
系統環境: CentOS Linux release 7.1.1503 (Core)
JDK版本: jdk-8u65-linux-x64.tar.gz
IP:192.168.0.47
移動終端APP運行界面如圖2所示,公網服務與內網服務工作情況如圖3所示。
參考文獻:
[1] 馮馳. 基于Swift分布式存儲系統的數據同步與存儲研究[D].浙江大學,2014.
[2] 陳成.云存儲技術及應用[J].商情,2012(37).
[3] 周震,趙紅梅.云計算技術發展歷程探究[J].信息通信,2013(6).
[4] 李輝.基于OpenStack的私有云計算平臺的研究和實現[D].江西:江西師范大學,2010.
[5]docs.openstack.org.OpenStackCommunity[CP/OL]http://docs.penstack.org/liberty/install-guide-rdo/,2015.12.10/2015.12.12.