〔摘 要〕本文設計并實現了一套基于開源軟件的以PC架構、以太網卡+initiator軟件連接方式、GFS網絡存儲共享來實現存儲和采用VS/DR(直接路由模式)和Heartbeat高可用性方案來實現LVS負載均衡的VOD視頻點播系統。
〔關鍵詞〕開源;VOD;LVS;iSCSI;GFS
DOI:10.3969/j.issn.1008-0821.2011.11.037
〔中圖分類號〕G250.7 〔文獻標識碼〕B 〔文章編號〕1008-0821(2011)11-0154-03
Design and Realization of Vod System Based on Open Source in LibraryZhang Yuan
(Library,Chnagan University,Xian 710064,China)
〔Abstract〕This paper designed and realized a vod system based on open source.In this vod system the storage part was using the pc architecture,ethernet card+initiator and the GFS shared network storage to achieve and the LVS load balancing was using the VS/DR(Direct Routing)and the hight available heartbeat to realize.
〔Key words〕open source;Video On Demand;Linux Virtual Server;Internet SCSI;Global File System
高校圖書館作為教學科研服務的學術性機構其經費的獲取主要是通 過學校撥款[1],但隨著國內各高校不斷的大興土木和擴大規模,學校的經費緊缺問題越來越嚴重,從而使圖書館也面臨同樣的問 題。開源軟件的出現給圖書館提供了一個解決自身發展需求與經費緊缺這一難題的方法。
開源軟件,顧名思義即是開放源代碼的軟件,它本身是免費的,對于硬件的要求也極低。開源軟件提供給圖書館更多的選擇權[2]、更廉價的服務和更安全的系統,更重要的是通過使用開源軟件還能夠有效地提高圖書館管理人員的素質與能力。本文設計并實現了一套基于開源軟件的VOD視頻點播系統[6-7]。
1 系統的總體結構
為了使系統容易建設,也便于今后系統的維護,更重要是使系統具有良好的可擴展性,對此VOD系統采用了基于LVS(Linux虛擬服務器)集群技術的分層結構,系統可分為3層[3],如圖1所示。
1.1 負載均衡器
整個VOD服務器集群對外的前端機,主要負責將客戶的請求發送到一組真實的服務器上執行,客戶并不清楚是由哪臺服務器提供的服務但認為服務均是來自同一個IP地址(即為虛擬IP地址)。
由于負載均衡器是VOD服務器集群系統惟一的入口點,存在單點故障的隱患,因此增加了備機通過使用Heartbeat高可以性方案來提高系統的可靠性。
1.2 服務器組
一組真正執行客戶端請求的服務器,提供音、視頻等服務,具體由哪臺服務器來提供服務由負載均衡器的負載調度算法來決定。
服務器組中的節點數目是可變的,當整個VOD集群系統接收到的負載請 求超過目前所有節點的處理能力的總和圖1 基于LVS的VOD集群
時,可以通過在服務器組中增加服務器來滿足不斷增長的負載請求,相反如果負載請求數量 不大,導致服務器組中的服務器相對比較空閑,可以把部分服務器從服務器組中移出,充分 體現了系統良好的可伸縮性。
1.3 共享存儲網絡
由IPSAN存儲網絡提供給服務器組一個共享的存儲區,使得服務器組擁有相同的服務內容,能夠為客戶提供相同的服務。
2 LVS負載均衡
LVS:Linux Virtual Server的縮寫,意思是Linux虛擬服務器,它是由畢業于國防科技大學的章文嵩博士于1998年5月創立的一個開源軟件。LVS項目創建的目標是在Linux操作系統下使用集群技術實現一個高性能、高可用的服務器,它具有很好的可伸縮性、可靠性和可管理性。
LVS集群主要采用IP負載均衡技術和基于內容請求分發技術來實現[4-5],其中使用較多的是基于IP的負載均衡技術。在已有的IP負載均衡技術中有3種方法可以實現虛擬服務器,分別為:網絡地址轉換模式VS/NAT(Virtual Server via Network Address Translation)、IP隧道模式VS/TUN(Virtual Server via IP Tunneling)和直接路由模式VS/DR(Virtual Server via Direct Routing)。在本文中采用直接路由模式(VS/DR)來實現LVS的負載均衡,使用Heartbeat來實現系統的高可用性。
2.1 直接路由模式(VS/DR)
負載均衡器和服務器組可以通過高速的路由器或者HUB相連,但必須處在同一個局域網內。負載均衡器和服務器組共享VIP地址,其中負載均衡器配置的VIP地址對外是可見的,用于接收客戶端的請求報文,而所有的真實服務器把VIP地址配置在各自的Non-ARP網絡設備上,對外是不可見的,只是用來處理目標地址為VIP的網絡請求。
在VS/DR模式中,當負載均衡器接收到客戶端的請求報文后,根據各個服務器的負載情況,動態地選擇一臺服務器,不修改也不封裝IP報文,而是將數據幀的MAC地址改為選出服務器的MAC地址,再將修改后的數據幀在局域網上發送。因為數據幀的MAC地址是選出的服務器的MAC地址,所以被選出的服務器肯定能接收到這個數據幀,從中可以獲得該IP報文。當服務器發現報文的目標地址VIP是在本地的網絡設備上,服務器就處理這個報文,然后根據路由表信息將響應報文直接返回給客戶,完成了一次客戶請求服務。
2.2 Heartbeat高可用性
Heartbeat是一款開放、免費的源代碼集群軟件包,由Linux高可用項目(Linux HA)小組提供的,主要使用心跳來監控集群中節點的“健康”狀況。它通過使用通信介質(通常是串行設備和以太網)監控節點的“健康”狀況。如果要使用Heartbeat最好能有多個冗余介質,以便我們既可以使用串行線又可以使用以太網進行鏈接。每個節點運行一個守護程序進程(稱為“心跳”),主守護程序派生出讀和寫每個心跳介質的子進程,以及狀態進程。當檢測到某個節點發生故障時,Heartbeat運行shell腳本來啟動或停止輔助節點上的服務。
3 存儲系統的設計與實現
由于經費的限制,所以只能采用PC架構、千兆以太網卡+initiator軟件連接方式、GFS網絡存儲共享來實現本VOD視頻點播系統的共享存儲網絡[8-9]。
3.1 配置Raid
RAID(Redundant Array of Independent Disks)即獨立磁盤冗余陣列,RAID技術將后端磁盤陣列上多個獨立的物理磁盤以不同方式組合成一個邏輯磁盤,提供給前端服務器使用,從而提高了數據讀寫性能和安全性。常見的RAID級別有RAID0、RAID1、RAID10、RAID5等,在構建IPSAN的存儲系統時,可根據應用業務對性能、成本和容量等多維度需求,綜合考慮,選擇合適的RIAD級別。
RAID0:將數據以條帶方式順序寫入一組磁盤中。RAID0不提供冗余功能,但是卻提供了卓越的吞吐性能,因為讀寫數據是在一組磁盤中的每個磁盤上同時處理的,吞吐性能遠遠超過單個磁盤的讀寫。RAID0適合于對數據可靠性要求不高,但帶寬要求高的應用,例如非線編輯、圖形工作站等,因此在本系統中采用RAID0來提高數據的讀寫性能。
3.2 配置iscsi-target與iscsi-initiator
iscsi-target軟件主要用來實現iSCSI存儲的目的端, iscsi-intiator軟件主要用來實現iSCSI存儲的客戶端即前端服務器。通過iscsi-target可以將磁盤空間映射到網絡上,iscsi-initiator端就可以尋找發現并使用該磁盤,一個target主機上可以映射多個target到網絡上,即可以映射多個塊設備到網絡上。
3.3 GFS共享存儲的實現
GFS(Global File System)為Red Hat Cluster Suite提供的一個集群文件系統,它允許多個節點在塊級別上共享存儲。GFS自己以本地文件系統的形式出現,多個Linux機器通過網絡共享存儲設備,每一臺機器都可以將網絡共享磁盤看作是本地磁盤,如果某臺機器對某個文件執行了寫操作,則后來訪問此文件的機器就會讀到寫以后的結果。
運行Red Hat GFS的節點可以通過Red Hat Cluster Suite配置管理工具進行管理,通過CLVM來進行卷管理。
3.3.1 LVM
LVM是邏輯卷管理(Logical Volume Manager)的簡稱,起源于早期的UNIX系統。LVM提供了一種更高級的磁盤管理服務和工具集,為了方便磁盤管理和劃分,它將幾個物理磁盤或分區組成一個更大的磁盤組,再在磁盤組上進行分區劃分或者裸設備劃分。跟單個磁盤的管理比起來它提供了一種更加靈活的磁盤管理服務,可以在線動態的調整分區的大小和容量擴展,可以實現文件系統跨域不同的磁盤和分區,實現磁盤的條帶。
LVM總體有三部分組成,底層是組成LV的物理卷,LV的數據都存儲在這些物理卷上,這些物理卷可以是整塊磁盤也可以是單個分區,這些磁盤或分區在加入LVM卷組前必須通過LVM 提供的命令進行格式化,將每個磁盤或分區格式化成可以被LVM識別的PE(Physical Extents)單位;中間是卷組,由物理卷組成的一個大的邏輯磁盤組;最上面一層就是邏輯卷了,相當于一個磁盤分區,跟磁盤分區不同的是我們可以創建Linear(直線)、striped(條帶)、mirrord(鏡像)3種邏輯卷,linear的創建方式就是類似于我們在普通磁盤上創建的分區模式,每個邏輯卷底層又被分割成最小的LE(Logical Extents) 可被尋址的基本單位,在同一個卷組中LE跟每一個PE是對應的。
3.3.2 CLVM
CLVM是集群邏輯卷管理器(Cluster Logical Volume Manager)的簡稱,是LVM的一組群集的擴展。這些擴展允許計算機群集使用LVM管理共享存儲。如果您的群集中有一個以上的節點需要訪問您的存儲,那么該存儲會在所有活躍的節點間共享,則您必須使用CLVM。CLVM允許用戶通過在配置邏輯卷時鎖定對物理存儲的訪問來在共享存儲中配置邏輯卷,并使用群集的鎖定服務管理共享存儲。要使用CLVM,必須運行紅帽群集套件軟件,其中包括clvmd守護進程。clvmd守護進程是LVM的關鍵群集擴展,clvmd在每個群集計算機中運行,并在群集中發布LVM元數據更新,用相同的邏輯卷視圖來顯示每個群集計算機。
3.3.3 GFS文件系統
(1)安裝GFS軟件
# yum-y install gfs-utils
# yum-y install kmod-gfs
(2)格式化GFS文件系統
# gfsmkfs-t clvmcluster:mygfs-p lockdlm-j 2/dev/testvg/testlv (3)加載GFS文件系統
# mount/dev/testvg/testlv/urs/local/httpd/htdocs
# mount #查看加載信息
4 視頻點播服務器軟件
Live555是一個為流媒體提供解決方案的跨平臺的C++開源項目[10],它不僅實現了對標準流媒體傳輸協議如RTP/RTCP、RTSP、SIP等的支持,而且實現了對多種音視頻編碼格式的音視頻數據的流化、接收和處理等支持,包括MPEG、H.263+、DV、JPEG視頻和多種音頻編碼。同時由于良好的設計,Live555非常容易擴展對其他格式的支持。目前,Live555已經被用于多款播放器的流媒體播放功能的實現,如VLC(VideoLan)、MPlayer。因此在本VOD系統中選擇Live555作為流媒體服務器端軟件,有利于進行二次開發。
為了方便用戶點播,還需要搭建一個視頻點播的網站。網站的搭建選擇了目前國際流行的LAMP架構[11-12],即Linux操作系統,Apache網絡服務器,Mysql數據庫和Php編程語言。所有組成產品均是開源軟件,是國際上成熟的架構框架,很多流行的商業應用都是采取這個架構。
5 結 語
整個VOD視頻點播系統從LVS負載均衡、GFS共享存儲到流媒體服務器軟件和WEB網站搭建都是基于開源的軟件,這不僅節約了大量的經費,而且有利于二次開發,打造屬于自己特色的服務和系統。目前為止,本套系統使用兩臺PC機作負載均衡集群,可同時支持200并發用戶在線點播,每用戶平均吞吐率可達652.1KB/s,且整個系統運行比較穩定,因此值得推廣。
參考文獻
[1]徐德斌.開源軟件在我國圖書館的應用研究[J].情報科學,2010,(12):1824-1827.
[2]王萍.圖書館開源軟件應用策略[J].圖書館學研究,2010,(5):43-45.
[3]LVS集群的體系結構[EB].http:∥www.linuxvirtualserver.org/zh/lvs2.html
[4]LVS集群中的IP負載均衡技術[EB].http:∥www.linuxvirtualserver.org/zh/lvs3.html
[5]LVS集群的負載調度[EB].http:∥www.linuxvirtualserver.org/zh/lvs4.html
[6]朱咫渝.高校圖書館視頻點播服務實證研究[J].圖書館工作與研究,2009,(3):39-41.
[7]季淑娟,馬巧煥,王瑜,等.基于校園網的VOD系統構架及瓶頸分析[J].大學圖書館學 報,2006,(6):35-37.
[8]Heartbeat+ldirectord+Clvm+iscsiGFS[EB].http:∥storysky.blog.51cto.com/628458/192319
[9]CentOS 5.2+Raid 0+LVM+ISCSI配置詳解[EB].http:∥wenku.baidu.com/view/ce5b6f3567ec102de2bd8902.html
[10]live555學習[EB].http:∥www.live555.com
[11]apache中文網站[EB].http:∥lamp.linux.gov.cn/Apache/ApacheMenu/howto/cgi.html
[12]何世曉,杜朝輝,等.Linux系統案例精解[M].清華大學出版社,2010:194-285.