侯玉峰,倪 明
(華東計算技術研究所 航天產品部,上海 201800)
衛星群分布式技術的研究與實現①
侯玉峰,倪 明
(華東計算技術研究所 航天產品部,上海 201800)
隨著航天技術的發展,越來越多的信息需在星上處理,衛星群分布式技術已成為近年來研究的熱點. 與地面環境不同,衛星受到體積、功耗、空間輻射等條件的限制,在衛星群建立分布式環境需掌握架構設計、操作系統、資源管理等關鍵技術. 針對以上問題,本文先研究衛星群分布式計算與存儲架構、其次研究衛星群分布式資源監控的實現過程,最后通過衛星群驗證系統證明其可行性與優越性.
衛星; 分布式; 計算; 存儲; 資源監控
隨著信息技術的發展,人們已進入了大數據時代,構建集群對海量數據進行分布式計算與存儲已成為一種共識,航天衛星領域也同樣如此. 構建衛星群分布式架構很有意義,在國家層面上,面對紛亂復雜的周邊形勢,若能實現衛星組網進行分布式計算與存儲,便可大幅提高衛星能力,擴展衛星功能,對國防偵查、態勢感知、地圖導航、通信指揮等起到更大作用. 在公眾層面上,人們可通過移動設備隨時接入衛星網絡,從而享受衛星群系統提供的更加精確的實時定位、物流追蹤和遙感信息服務. 綜上,通過衛星組網進行分布式計算與存儲已成為航天衛星領域發展的必然趨勢[1].
當下地面環境上的分布式計算技術已相當成熟,但由于衛星所處太空環境的限制,計算機需要高標準的制造要求、低功耗的處理架構,以及剪裁過的操作系統,因而衛星群分布式環境的構建與地面有明顯差異[2].
針對引言所述問題,本文選擇了八臺采用ARM體系架構,搭載銀河麒麟操作系統的國產飛騰服務器作為衛星計算機. 整個集群系統分為天地兩部分,地面共三臺服務器,通過電口交換機互連,其中一臺模擬管控臺計算機,通過搭建django框架,編寫web應用程序顯示衛星群的信息,剩余兩臺采用飛騰的存儲服務器用于模擬數據中心. 天上采用五臺剪裁過的低功耗飛騰服務器來模擬衛星,服務器間通過光口交換機互連,模擬衛星群的點對點激光通信過程,天地集群間通過光纖收發器的光電轉化技術進行互連. 集群系統的總體設計架構如圖1所示.

圖1 衛星群總體設計架構
衛星群的分布式架構分為存儲和計算兩部分,分別在2.1節和2.2節中介紹.
衛星群中的一臺節點記作master節點,剩余的四臺記作slave節點,各節點的本地文件系統,在邏輯上是一個統一的存儲系統. 當某臺衛星進行存儲時,會根據冗余備份機制,選擇網絡距離最近的兩個衛星進行存儲,保持數據的備份數為 3. 進行存儲時,master節點運行namenode進程,負責管理衛星文件系統的命名空間,維護文件系統樹,保存命名空間鏡像文件和編輯日志文件,此外還記錄每個文件中各個塊的節點信息.slave節點運行datanode進程,是存儲數據塊的工作節點,并定期向master節點發送它們所存儲的塊列表[3].
衛星群采用分布式存儲架構后,不僅能夠增大存儲空間,而且可以將監測到的數據進行冗余備份,增強了數據的安全性,存儲備份過程如圖2,箭頭指向為數據備份的目的地.

圖2 衛星群存儲備份示意圖
master節點從衛星群的文件系統取數據后,按照指定的大小分成多個block,接著將block切分成多個inputsplit傳送到各slave節點處. 然后各個slave節點通過map程序對塊進行處理,結果通過combine函數預處理后先寫入環緩沖,緩沖區溢滿后,再將結果進行分區、排序、寫磁盤操作. 隨后master節點通過Reduce程序從衛星群的文件系統中取到相應的數據塊進行處理,最后將所有Reduce程序的處理結果存儲到衛星群文件系統中[4-6].
衛星群采用分布式計算架構后,通過對數據進行分發和歸約操作使計算速度加快,計算流程如圖3.
資源監控是集群部署中的關鍵組件,具有實時、精確、全面的特性,通過采集集群運行指標,展示詳細的工作狀態. 衛星群部署資源監控系統,一方面是為了保證衛星群運行穩定,讓運維人員能第一時間發現節點宕機、失連等故障,及時解決問題,從而將損失降到最低. 另一方面也是評判星上應用程序是否高效的一個重要依據. 衛星群的資源監控運用了Ganglia的原理,所有需要監控的衛星節點上運行gmond進程,用于收集衛星信息,并將這些數據以XML格式定時發送給主節點. 主節點運行gmetad進程,接收各從節點的數據,并以rrdtool的形式存放在rrds文件中. 與此同時,主節點運行gweb進程,該進程通過HTML、PHP、JS等前端技術,讀取監控數據文件,并將其顯示到瀏覽器中.

圖4 衛星群資源監控數據流圖
執行流程如圖4所示,首先修改gmond與gmetad的配置文件,包括設置衛星群信息、存儲信息以及采樣頻率. 配置設置好后,啟動 gmond 與 gmetad 進程,開始監控集群. 集群信息每隔設定時間存儲到rrdtool中,對應于master節點的rrds目錄. 然后通過PHP文件獲取衛星群信息,TPL和JS文件進行界面的布局,Apache2服務器和FireFox瀏覽器進行代碼解析和前端顯示. 通過使用分布式資源監控技術,監控衛星群的運行數據,從而可對衛星群進行性能檢測、故障維修以及資源分配.
衛星群的監控指標包括CPU使用率、MEMORY使用率、LOAD負載率、NET負載率. 數據的計算方法如下.
(1) CPU 使用率
CPU有內核態、用戶態和空閑態三種狀態. 用Cc表示內核態,Cu表示用戶態,Ci表示空閑態. 通過命令vmstat的返回值,獲取衛星的這三個數據值后,CPU使用率CPUu表達式如下:

(2) 內存空閑率
用Mf表示空閑內存量,Mt表示總內存量. 通過讀取內存文件獲取free屬性值后,內存空閑率MEMi表達式如下:

(3) LOAD 負載率
進程有運行態、就緒態和阻塞態三種狀態. 用Pe表示運行進程數,Pr表示就緒進程數,Pb表示阻塞進程數. 通過讀取進程文件獲取ps各屬性值后,平均負載率PROr表達式如下:

(4) 網絡負載率
從本星流入流量記作Ni,從本星流出流量記作No,本星網絡吞吐能力記作Nt,網絡負載率NETl表達式如下:

衛星群的數據存儲結構為一個四維數組. 以CPU的度量數據為例,第一維包括user、nice、system、wait、idea 五項指標. 每項指標下有各類信息,其中datapoint存儲一段時間的數據,共241個采樣時間點,每個采樣時間點存儲(數據值,時間)的鍵值對. 如圖5所示.

圖5 衛星群 CPU 數據結構
心跳監測是實現衛星群資源監控的運行機制,其中衛星主節點運行RecourseManager進程,衛星從節點運行NodeManager進程. 從節點運行一個循環,每隔一段時間向主節點發送心跳Heartbeat,在此期間,將從節點采集的數據傳送給主節點[5]. 主節點接受到心跳的同時,將收集到的數據存入 rrdtool中,并發出 reply. 發送心跳的函數為transmitHeartBeat(),接受心跳的函數為heartbeat()函數,如圖6 所示.

圖6 心跳監測機制圖
衛星群資源監控底層代碼通過調用gmetad()方法獲取數據,使用socket與衛星主節點的8652端口進行交互,將衛星群各節點的性能指標,以xml數據格式存儲于rrds文件夾內[7]. 核心代碼如下:

衛星群原有的監控界面簡陋,監控指標少,且只能進行一段時間的整體監控,如圖7.
本人在熟悉監控代碼的基礎上,利用js、php、css等技術,完成了對圖表樣式以及界面的改進、并增添了衛星實時數據動態監控、衛星節點數據對比、衛星節點動態部署等功能. 主要實現過程如下.
(1) 圖表樣式美化
在test_cluster.js文件中,利用js的jquery技術獲取了衛星群的信息,之后調用highcharts圖表庫編寫繪圖函數draw_line、draw_area、draw_histo、draw_pie,實現了圖表樣式的美化[8]. 數據獲取函數如下:


圖7 修改前監控圖表
效果圖如圖8.

圖8 修改后監控圖表
(2) 節點數據對比功能
通過編寫節點對比函數draw_total,實現多個衛星節點的數據匯總. 在此圖表內,可對比衛星主節點master與任意衛星從節點slave的數據,以便進行衛星節點間的性能分析與評估[9]. 部分實現代碼如下:


圖9 節點對比圖
(3) 實時數據動態監控
test_dynamic.js文件用于動態顯示衛星群的實時數據,具體過程見下.
打開受控節點的gmond.conf文件,參數collect_every 值為采樣頻率,設置為 1,time_threshold 值為時間閾值,設置為 300. 之后設置數據存儲大小,修改配置語句“RRA:AVERAGE:0.5.1.1:244”,該配置語句表示存儲空間默認每15s存一次數據,共存夠244個后. 由于采樣頻率已改為1,固須將存儲空間加大,將244修改為3000即可. 隨后將主節點下的rrds文件夾刪除,重啟衛星群后,修改采樣間隔操作即可成功. 最后在test_dynamic.js文件中開啟highcharts的動畫屬性animation,開啟方法如下:

動態監控效果圖如圖10.
(4) 動態增減節點
為實現衛星群的動態部署,需添加衛星節點的動態增減功能. 可通過修改hdfs-sites文件,將節點狀態從live轉換為decommissioned,表示所選衛星節點已與衛星群斷開連接. 相關配置如下:


圖10 實時數據動態顯示
衛星硬件配置如表1所示.

表1 衛星硬件配置
驗證系統包括四個功能,詞頻統計、資源監控、數據恢復和動態部署與報警,見表2.

表2 應用介紹
驗證系統的界面遷移如圖11所示.

圖11 界面遷移圖
衛星群資源監控整體界面如圖12所示,該監控系統可對衛星群進行整體、實時、單點和不同節點的對比監控,通過全方位監控衛星群,保證其安全可靠的運行.

圖12 衛星群資源監控圖
如圖13所示,選中衛星2與與地面三臺設備后,這四臺機器構成一個星地集群,其他衛星被移除集群,并顯示紅色進行報警,選中節點顯示綠色表示正常運行.
以詞頻統計的測試程序為例,展示衛星群分布式計算的優越性. 用動態部署所選中的星地四臺節點,對大小350 Mb的文本文件進行詞頻統計的分布式計算,用時 72 s,單機計算 242 s,衛星群分布式計算增速三倍有余. 圖14為衛星單機與分布式計算對比圖.
衛星分布式計算性能與文件大小關聯性見表3.
衛星群分布式計算環境下,當計算文件小于125 M時,單機反而快于分布式計算,這是是因為此時節點間的通信開銷遠大于計算開銷. 當文件大于125 M之后,分布式計算逐漸快于單機計算,且在300 MB文件左右,提高的速度趨于穩定,約為單機性能的 3.3 倍. 這是合理的,因為衛星群分布式計算需要占取網絡和存儲資源,理論上不可能達到4倍的提升速度.

圖13 衛星動態部署與報警

圖14 計算對比圖

表3 文件大小與性能關系表
傳統衛星單機存儲技術,如果數據損壞無法第一時間得知,且需由地面上傳數據. 而衛星群分布式存儲技術,始終保持數據的備份數為3,當某一節點丟失數據后,最近的節點會迅速進行數據的自動恢復. 圖15展示了將ip地址為192.168.1.2的衛星2的blk_1073741835_1011文件刪除后,ip地址為192.168.1.5的衛星3自動將丟失數據傳送給衛星2的數據恢復過程.

圖15 數據恢復日志
本文通過選取符合衛星條件限制的處理器架構和操作系統,模擬搭建了衛星群的分布式計算環境,運用現有的分布式技術,實現了衛星群的動態部署、分布式計算、存儲和資源監控功能,并對衛星群資源監控功能進行了改進和擴展. 通過衛星群驗證系統的實驗,證明了分布式技術在國產衛星平臺上部署的可行性.此外通過衛星群與單機衛星節點在計算時間和數據恢復上的對比,證明了分布式技術在國產衛星平臺性能上的優越性.
1王敬超,于全. 基于分布式星群的空間信息網絡體系架構與關鍵技術. 中興通訊技術,2016,22(4): 9–13,18.
2彭東. 深度探索嵌入式操作系統. 北京: 機械工業出版社,2015.
3陸嘉恒. Hadoop 實戰. 2 版. 北京: 機械工業出版社,2012.
4White T. Hadoop 權威指南. 3 版. 華東師范大學數據科學與工程學院譯. 北京: 清華大學出版社,2015.
5Holmes A. Hadoop 硬實戰. 梁李印,寧青,楊卓犖,譯. 北京:電子工業出版社,2015.
6顧炯炯. 云計算架構技術與實踐. 北京: 清華大學出版社,2016.
7Zandstra M. 深入 PHP. 人民郵電出版社,2016.
8尤海鵬. 基于Ganglia的數據中心監控平臺設計[碩士學位論文]. 濟南: 山東大學,2014.
9曹東航. 基于Ganglia的云平臺監控的研究與實現[碩士學位論文]. 成都: 電子科技大學,2016.
Research and Realization of Distributed Technology on Satellite Cluster
HOU Yu-Feng,NI Ming
(Department of Aerospace Products,East China Institute of Computer Technology,Shanghai 201800,China)
With the development of space technology,more and more information needs to be computed on the satellite.The distributed technology of satellite cluster hence has become a research hotspot in recent years. Different from the ground environment,the satellite is limited with some constraints such as volume,power consumption and space radiation. The key technology such as architecture design,operating systems and resource management should be grasped to establish distributed environment on satellite cluster. To solve problems above,this paper first studies the distributed computing architecture and storage architecture on satellite cluster. Then,it focuses on the implementation of distributed resource monitoring on satellite cluster. Finally,it proves its feasibility and superiority through the authentication system of satellite cluster.
satellite; distributed; computing; storage; resource monitoring
侯玉峰,倪明.衛星群分布式技術的研究與實現.計算機系統應用,2017,26(12):233–239. http://www.c-s-a.org.cn/1003-3254/6111.html
2017-03-14; 修改時間: 2017-03-31; 采用時間: 2017-04-07