金安
摘要:隨著互聯網企業業務的持續增長,為降低運營風險,容災系統建設勢在必行。在闡述容災系統概念的基礎上,針對企業業務與生產環境現狀,充分考慮到容災系統的目標與范圍,設計并實現了一套同城雙活容災系統,并對事務沖突機制、高可用服務架構、注冊發現與內網DNS等關鍵技術要點進行了闡述。3次演練結果證明,該方案在設計的規定指標內,當生產機房出現整體故障時,容災系統可以在很短時間內接管原機房的所有服務,有效保障了數據一致性及業務持續性。
關鍵詞:
容災;RTO;PRO;NRO;軟件事務存儲
DOIDOI:10.11907/rjdk.181946
中圖分類號:TP319
文獻標識碼:A 文章編號文章編號:1672-7800(2018)008-0149-04
英文摘要Abstract:With the continuous growth of an Internet business, the disaster recovery system construction is imperative to reduce the risk of operations. Based on the concept of disaster system, according to current situation of the enterprise business and production environment, and fully considering the goal and scope of the system, we design and implement a suitable set of dual city disaster recovery system for the company. In this paper, key technical points such as transaction conflict mechanism, HA service architecture, registration discovery and Intranet DNS are also explained. Three disaster recovery drill results prove that the scheme ensures the business continuity and data consistency effectively within the design indexes. The system can take over all services in a very short time when faults occur.
英文關鍵詞Key Words:disaster recovery system;RTO;RPO;NRO;software transactional memory
0 引言
隨著移動互聯網技術的發展,數據本身已成為企業生存與競爭的核心價值所在。據IDC報告預測,2020年全球數據量將從目前的8.6ZB增長到40ZB,其中我國占比為13%。因此,一個國家擁有的數據規模與數據分析能力將成為綜合國力的重要部分,對數據的存儲、處理、分析及使用也成為國家間、企業間新的競爭焦點[1]。
不可抗力與人為失誤等原因都會給企業帶來毀滅性打擊,從一份安盛公司的報告得出,80%以上的中小企業在遭受重大災難后的18個月內都面臨破產或業務難以為繼的困境,同時伴隨著巨額的財產和名譽損失,所以保障數據安全性與業務連續性已成為信息化工作的重中之重。文獻[2]-[3]基于IOE架構設計并實現了容災系統;文獻[5]-[6]采用CDP實時數據保護技術有效保障了業務的連續性。然而,對于大型互聯網系統,完全基于SAN網絡架構已不能滿足大數據同步的需求。文獻[7]-[8]分別提出一種緩存寫操作重放技術與基于RS編碼技術的數據存儲方式,為本文容災系統的數據同步與存儲提供了很好的參考;文獻[9]-[10]分析了國內信息系統演練中存在的問題,從理論上完善了容災演練建設制度。
本文以某互聯網公司為例,針對該企業業務特點,并考慮TCO因素,在規范化系統等級制度的基礎上,設計一種基于事務沖突機制與高可用架構等技術特點的同城雙活容災系統,并建立了一套良好的演練機制,以保障業務的連續性需求。
1 容災系統概述
1.1 容災系統定義與分類
容災系統定義為:建立至少兩套以上功能相同的系統,相互之間可以進行健康狀態檢查與功能切換[11]。根據對系統的保護程度,容災系統可分為數據級別與業務級別容災。從地域建設模式來看,可分為同城容災、異地容災和兩地三中心容災3種模式。
數據層容災是業務層容災的基礎,業務層容災是數據層容災的終極目標,容災建設應以數據容災為根本,以業務持續性為目標,最終實現災難發生時業務的平穩過渡,并保證企業的安全生產[12]。
1.2 容災系統恢復能力指標
容災系統恢復能力主要采用RTO、RPO、NRO 3個指標作為評判依據[13]。RTO是容災恢復的時間指標,RTO越小,意味著容災能力越強;RPO是指針對數據而言,恢復業務后所能容忍的數據丟失量;NRO是指災難發生后,最終用戶通過備用網絡訪問災備中心所需的時間[11]。三者時序關系如圖1所示。
事實證明,快速收斂聚合的網絡可以為業務與數據遷移提供可靠的傳輸路徑[14]。除DNS解析生效外,NRO都要做到超前于RTO,這點在本文的容災演練中可以得到驗證。
2 同城雙活容災系統方案設計與實現
2.1 業務與生產環境現狀
該互聯網企業平臺系統注冊賬號為5億以上,每天的活躍登錄用戶3 000萬左右,登錄TPS峰值20 000次以上,平均響應時間40ms,登錄成功率為90%左右,業務涵蓋注冊、認證、登錄、風控、計費、支付、客服與短信等系統,每天新增業務數據50G左右,日志量500T以上。該系統生產環境部署在A機房,其中有生產機器1 000臺以上,包括四七層代理轉發、業務、緩存、數據庫、消息隊列、日志流分析等集群。
雖然系統符合業界SOA規范,架構可以橫向擴展,但是隨著業務增長需要不斷疊加模塊與機器的做法,機房一旦發生災難,對業務和系統將帶來毀滅性打擊[15]。
2.2 容災系統目標與范圍
依據災難恢復等級標準,結合該企業互聯網業務量特點,對系統恢復的優先級作出分類,將不可繞過服務均定義為核心系統,根據順序等級進行恢復。對于可繞過服務,可進行柔性降級處理或低等級容災恢復。關鍵服務災難恢復能力需達到6級,對應RTO<30min,RPO=0,NRO 考慮到TCO與ROI指標,決定采用同城雙活模式,按照業務策略比例共同對外提供服務,以避免系統閑置造成浪費,必要時可將對外服務能力提高到雙倍。在提高利用率的同時,可以降低系統切換時間,以減少災難影響程度并降低用戶感知度[16]。 2.3 容災系統方案設計 一個完整的容災系統由數據備份、備用數據處理、備用網絡、備用基礎設施、技術支持、運行維護支持與災難恢復預案7大技術管理要素組成[13]。對于大型互聯網系統而言,業務級容災還涉及到業務監控、配套安全、日志采集分析、權限控制與業務授權等,容災設計難度遠大于傳統行業。 根據系統工程方法論,容災可分為圖2中所描述的7大步驟。本文僅對方案設計、關鍵技術實現與容災演練進行闡述。 該互聯網企業在上海有10大機房,平臺系統部署在生產A機房,為實現同城雙活容災系統,除新建容災B機房外,需將各大機房間的網絡形成環狀,機房之間用雙路裸光纖連接,即使AB機房兩路光纖中斷,網絡也可自動通過反向路由到達。由于機房數據同步量大,為保證數據同步的實時性,專線帶寬為4萬兆。 通過GSLB和SmartDNS系統對業務訪問流量進行AB機房雙活導入。LB和四七層代理可進行業務規則分流與邏輯控制,系統根據最小化功能特點細分為接入層、邏輯層、原子層、數據層與存儲層等集群。數據層涵蓋了緩存與落地數據,存儲介質分為傳統/分布式存儲、HDFS集群與本地文件系統等。架構設計如圖3所示。 3 容災系統實現關鍵技術 3.1 數據同步備份與事務沖突算法 對于容災系統而言,數據的一致性與延遲性問題是必須解決的技術問題。根據業務場景不同,數據同步分為兩種,雙機房讀寫分離與雙機房實時讀寫。為達到最佳同步效果,對于峰值壓力,在業務層將數據操作頻率放入隊列進行控制,以做到平滑過渡。另外,可以通過DB層透傳打標事務的方式避免數據循環復制。除常用的同步技術外,借鑒業界經驗,還實現了一種基于事務沖突的檢查方法,可較好地處理事務的并發邏輯同步[17]。 事務沖突機制借鑒Bloom Filter的原理,使用k個Hash函數,每個字符串與k個bit對應,當前位串中存儲元素超過一定誤判率下能夠容納的個數時,增加新的相同長度位串, 并將新元素加入到新位串中[18]。根據布隆過濾器原理與算法,經過推導的最終公式如下: k為Hash函數個數,m為位串長度,f為可以接受的錯誤率,n為f下長度為m的位串至多可容納的元素個數[19-20]。例如,如果錯誤率為8*10-5,則此時m應大約為n的20倍,k大約為10個。為了比較事務讀寫集合是否存在交集, 通常通過事務的Signature(簡稱Sig)取交集加以判定。目前開源STM中實現的是RingSTM SW算法,其是基于Sig監測事務沖突的,但系統中同時只允許一個事務寫Sig運行[21-22]。在本文中,事務每讀取或寫入一個共享變量時, 將該變量寫入讀或寫Sig中, 當進行沖突檢測時, 調用比較Sig函數對事務間讀寫集合的Sig進行比較, 便可迅速判定二者是否沖突。該優化檢測算法將采用更有效的Hash函數與動態長度Sig降低誤判率,盡可能降低對存儲的需求,提高檢測效率,對于該算法本文不再贅述。 對于數據傳輸的有序與完整性,分別采用管道技術與基于Hash算法快速定位時間戳的最早日志方式加以確保。為保證數據的正確性,也使用了本地回放機制與多重校驗機制。 為安全起見,數據庫采用安全協議SSHFS,通過備份中轉機備份數據到HDFS,中轉機與HDFS之間采用FUSE-DFS進行掛載。另外,定期將數據自動導入數據庫,用自動化工具自動校驗數據的正確性,并以報告的方式給出結果。 3.2 高可用服務架構 為提高容災系統的可靠性與靈活性,運維在匯聚層、機柜與電源等方面對相同服務的集群硬件進行容錯放置。軟件層次上應對程序設置超時策略,以快速轉移故障并進行資源釋放,并使用消息隊列集群對服務進行異步調用。在訪問高峰期,為避免大量并發調用影響其它核心服務使用,采取柔性降級處理,以保證核心服務對外不中斷。對于業務調用失敗或重復調用的情況,業務層應保證服務必須擁有冪等性屬性。對于TCP服務集群,只需在調用端配置幾個VIP即可做到雙機房之間的自動漂移,調用方只要嵌入調用SDK的相關接口即可。 3.3 注冊發現框架 容災建設前,各個服務具有獨立的自我描述文件,在線上更新時除更新描述業務配置外,還需更新IP與端口等運維信息,導致維護時較為困難。為提高效率并實現容災切換的便捷性,設計服務注冊發現系統如圖4所示。 注冊發現系統由注冊中心SRC、服務消費者SC與服務提供者SP 3部分組成,SRC管理各個服務與服務上下線策略等,SC需要向SRC獲取各注冊服務的信息,SP需要向SRC匯報自身服務的IP、域名與所在域等關鍵信息。域根據機房進行劃分,根據IP判斷所在的域。同一個IP既可以是SC,也可以是SP。SP可以屬于多個域,SC只能屬于一個域,SC通過SRC獲取某個域的服務及IP域名對應列表。SC可以周期性地去SRC獲取配置文件,或根據被動通知完成配置文件更新,使配置文件可動態生成。
3.4 SmartDNS技術
為實現內網域名的解析功能,需在雙機房搭建內網域名服務器。對于內網分配設置的子域,只能由內網DNS進行權威解析,非約定的子域通過內網DNS向外網權威服務器進行遞歸查詢,內網DNS映射關系由平臺增加域名后推送更新。
為保證業務DNS客戶端的容錯性,業務模塊啟動時需備份當前的配置文件,如果下拉配置失敗,以備份為準進行運行;對于大流量、短連接業務,開啟NSCD服務以減輕查詢壓力;當機房災難發生,根據定制好的域名切換場景策略,比如單域名、發布業務集、域名類別、業務策略等;在平臺中更新域名映射記錄并重啟業務服務,使域名新映射生效。解析流程如圖5所示。
4 容災系統維護與切換演練
根據同城容災場景與故障經驗統計,本容災切換可分為公網故障、專線故障與整體機房故障3種。對于公網故障而言,只需根據預先準備好的域名一鍵切換后等待權威和各級域名提供商更新即可,若涉及到CDN需回源操作;對于專線故障,需將容災B機房的流量切換至生產A機房,同時停止B機房的VIP服務。對于整體機房故障而言,除需要按照外網故障時的步驟進行操作,還需將兩者機房交叉訪問的業務集群進行內網域名的重新指向生效切換,以確保所有路由都在同一機房。
為了驗證預案及切換步驟的準確性、檢查組織流程制度的合理性并培訓相關操作人員,企業組織了3次有序、全面的容災切換演練。第一次為外網與專線故障演練,第二次為針對各個DB的單次演練,第三次是整體機房故障切換演練。對于第一次演練,發現1.2%左右的TCP集群客戶端SDK未能自動切換,主要由于客戶端未能及時更新SDK、部分SDK遺留容災配置與調用方網絡配置等原因造成。對于C類域名,10分鐘內生效50%,4小時內生效90%,通過排查發現該現象與域名解析商的TTL有關;對于B類域名,10分鐘內生效50%,半小時內生效70%,排查發現該現象多為調用方綁定VIP導致。第二次演練逐步將所有DB切換到容災機房,即將業務訪問的DB內網域名更新至B機房,并將A機房相關的業務模塊重啟生效,主要發現的問題為一些業務模塊需禁寫數據庫配置才能切換生效、數據庫防火墻設置會導致業務模塊死鎖現象發生。第三次演練時間選擇在凌晨5~6點之間,整體回切選擇在3天后的同一時間段,以檢驗B機房能否真正承擔A機房的生產任務。演練結果表明,機房整體故障切換,對于關鍵服務,RTO為28min,RPO為0;對于非關鍵服務,RTO為36min,RPO幾乎沒有數據丟失,容災B機房在A機房故障后完全可以單獨運行并提供服務,達到了方案的設計預期值。
5 結語
系統容災與數據恢復一直是信息技術行業關注的焦點,本文以上海某互聯網企業為例,設計并實現了一種面向零數據丟失的容災系統,基于優化的事務沖突機制,有效保證了業務數據的一致性與較高的事務并發邏輯[23]。在系統建設完成后,按照預案要求與容災場景進行了3次比較全面的容災演練,確保了容災系統預案規劃的有效性,規范了容災組織流程與制度,培養了工作人員處理容災故障時良好的心理素質與工作能力,并檢驗了容災系統的有效性[24]。另外,在發生故障時如何達到更加智能化的一鍵容災切換從而降低RTO,以及優化事務沖突機制算法以降低誤判率,是今后需要重點關注與研究的方向。
參考文獻:
[1] HU H,WEN Y,CHUA T,et al. Towards scalable systems for big data analytics: a technology tutorial[J]. IEEE Access,2014,2:652-687.
[2] 劉郁恒,楊龍剛.業務運營支撐系統雙活容災建設方案研究[J].移動通信,2017,41(4):88-92.
[3] 歐陽志成.容災技術在電力企業的研究與應用[J].產業觀察,2018(1):32-34.
[4] 葉虹余.基于NAS架構的數據容災備份系統的統計與實現[J].軟件工程,2018,21(3):44-46.
[5] 彭曄,劉曉壘,杜敏.CDP異地災備系統的研究與實現[J].中國管理信息化,2013,16(21):49-51.
[6] 劉辰,李俊,雷斌,等.大型企業在云網融合下的業務連續性保護研究與實現[J].世界有色金屬,2018(3):199-201.
[7] 劉錦,劉曉潔,李濤,等.一種異地容災系統的設計與實現[J].計算機應用研究,2007,24(8):294-296.
[8] 夏紅燕.信息網絡分布式數據容災應用研究[J].電腦知識與技術,2018,14(12):36-38.
[9] 王暉,謝靜綺.“互聯網+”時代下檔案容災演練問題的思考[J]. 蘭臺世界,2018(2):65-67.
[10] 許昌軍,孫福國,曹玉龍.面向零數據丟失的滁州煙草數據中心災備系統實踐[J]. 電腦與信息技術,2014,22(4):33-36.
[11] 姚文斌,趙玲,王真,等.容災信息系統的建模與仿真[J].北京郵電大學學報,2015,38(3):50-53.
[12] 彭江強,李鋒,周龍.雙中心在企業容災中的應用[J].數據通信,2014,11(2):66-70.
[13] 全國信息安全標準化技術委員會. 信息安全技術——信息系統災難恢復規范[M].北京:中國標準出版社,2007.
[14] 齊貴霞,劉歡,王娟.電力通信網絡容災系統建設研究[J].河北電力技術,2017,36(3):57-59.
[15] 周華鋒,易仁波,王玉琴.南方電網一體化運行智能系統災備建設模式初探[J].南方電網技術,2014,8(2):9-14.
[16] 姚文斌,伍淳華.中國災備標準和產業發展現狀[J].中興通訊技術,2010,16(5):24-28.
[17] 彭林,謝倫國,張小強.事務存儲中的一種自適應沖突檢測算法[J].計算機工程與科學,2009,31(11):69-71.
[18] 劉瑩,高富祥.軟件事務存儲中沖突檢測算法研究[J].東北大學學報:自然科學版, 2013,34(6):774-777.
[19] 時磊,楊驊,王紅梅,等.基于布隆過濾器的事務存儲架構中的告訴緩存[J].微電子學與計算機,2011,28(3):140-143.
[20] 竇強,王勇.事務存儲系統中PGHB沖突檢測算法改進[J].電子學報,2010,38(1):195-198.
[21] 彭林,謝倫國,張小強.事務存儲中的一種自適應沖突檢測算法[J].計算機工程與科學,2009,31(11):69-72.
[22] 石東旭.軟件事務存儲動態競爭管理策略[J].軟件導刊,2012,11(4):6-8.
[23] 宋偉,楊學軍.基于事務回退的事務存儲系統的故障恢復[J].軟件學報,2011,22(9):2248-2262.
[24] 陳思,李華峰,涂慶華,等.數字化校園異地容災系統設計與實現[J].計算機與現代化,2014(4):47-50.
(責任編輯:黃 健)