一,背景與概述
複雜系統的災難恢複是個難題,具有海量資料及複雜業務場景的大資料容災是個大難題。
maxcompute是集團内重要資料平台,是自主研發的大資料解決方案,其規模和穩定性在業界都是領先的。在周邊系統衆多,業務場景複雜,海量資料存儲和計算排程都是一個難題的情況下,需要保證大資料系統在災難發生時能夠盡快切換到備用系統服務,最小限度影響客戶使用。
容災系統及方案的建設有很多種方式,如同城雙活,異地多活,冷備容災等。maxcompute大資料的容災方案是在多年集團内部斷網演練基礎上,依據maxcompute卓越具有前瞻性的設計形成的,選用了同城異地雙活方案,并經過詳細的系統修改及優化,部署測試,多輪演練,達到了客戶現場輸出的成熟度。
本文詳細介紹了maxcompute在專有雲輸出背景下依托現有技術及技術改造而形成的大資料容災原理,技術方案,操作步驟,及相關rpo與rto設計,還有一些在大資料容災系統設計,實作,演練及部署過程中的思考,這裡貢獻給大家。
二,大資料容災技術方案
2.1,maxcompute容災原理
maxcompute的大資料容災技術方案是基于現有系統架構,資料管理及運維特點形成的,主要依據maxcompute目前現有技術與實作方案:多地域多控多計算叢集支援, 統一進制資料中資料版本管理, 跨叢集複制與同步。
多地域多控多計算叢集支援:
maxcompte從系統架構上支援異地多機房環境下的多控制叢集和多計算叢集架構,在滿足一定帶寬及網絡延遲要求條件下,maxcompte服務能夠從邏輯上管理同樣功能的控制叢集,并選擇其中一個異地主要叢集。且能夠支援對單個項目空間進行多個計算叢集配置,讓同一個項目空間邏輯上擁有多個資料存儲與計算的叢集。即從系統設計開始,maxcompute就沒有區分地理上的控制叢集和計算叢集,可以對滿足一定帶寬和網絡延遲條件下的異地叢集同等對待,并能夠做到從使用者項目空間映射管理上管理異地叢集,具備多叢集統一排程能力。
統一進制資料中資料版本管理:
maxcompute在多計算叢集部署時,同一份資料(表或分區)在多個計算叢集上可能具有不同的版本,maxcompute meta服務會維護每份資料的版本資訊,表示如下:
<code> </code>{"latestversion":*v1*,"status":{"clustera":"*v1*","clusterb":"*v0*"}
項目空間資料跨叢集複制與同步:
maxcompute中的的項目空間支援多個計算叢集的配置,并且在中繼資料中有關于多個叢集中每一份資料的版本資訊,為了便于資料管理互動和計算,為了統一進行資料資源和計算資源的排程管理,maxcompute設計并實作了項目空間中資料的跨叢集複制與同步功能。
maxcompute中當一份資料版本更新後,會觸發一個分布式的跨叢集資料複制任務,将資料複制到其他計算叢集。 也可以針對項目空間中的資料進行統一的資料複制配置,如資料複制的内容及範圍,頻率及規則。同時跨叢集複制同步也,通過對複制任務數的限制可以對機房間資料複制流量進行控制,用以從政策和方式上影響資料分布狀态。
maxcompute容災基于以上三個系統特點和實作,從邏輯上確定服務能夠支援多個邏輯叢集,同一個項目空間能夠跨叢集管理,從實體上可以對同一份資料進行異地多機房存儲與同步,并通過統一的資料同步方案進行資料同步管理和排程。在中繼資料容災的基礎上,形成了一套maxcompute大資料容災方案,該容災方案依賴于資料的異地存放與中繼資料版本管理,服務運作中的資料狀态如下圖所示:

2.2,整體部署方案
主備機房中都會部署一套完整的maxcompute服務(控制叢集、計算叢集、tunnel,maxcompute前端);
主備機房中的maxcompute服務形成雙控制叢集雙計算叢集系統,對外提供統一接口,提供maxcompute服務。
主機房及備用機房的maxcompute服務均能夠正常服務,但平時備用機房maxcompute服務處于靜默狀态,由主機房提供服務。
主備機房的maxcompute服務都打開資料複制功能,由主機房的replication service提供資料複制,按照複制政策定時或者按照資料請求将主機房資料同步至備用機房。
對于這個方案,主備機房各有一套maxcompute服務,子產品說明如下:
在正常工作狀态下,主機房的maxcompute提供服務,備機房的maxcompute沒有服務請求,上層資料業務都隻通過兩個服務域名使用maxcompute:
maxcompute服務域名:指向指令前端叢集的虛拟ip,即系統架構圖中的vip2
tunnel服務域名:指向tunnel前端叢集的虛拟ip,即系統架構圖中的vip1maxcompute通過資料異步複制機制,不斷将主機房的maxcompute資料同步到備機房的計算叢集,maxcompute引入資料版本的機制。
2.3,容災切換方案
容災切換
容災切換分計劃内和計劃外,對于計劃内的切換,檢視資料實時同步狀态,選擇某個已經完全同步的時刻進行容災切換,這樣rto會非常短(分鐘級),rpo為目前時刻,不需要回補資料。除了選擇執行的時間點外,計劃内和計劃外的容災切換流程是一緻的。
主備容災切換流程如下:
停掉主機房的vip1和vip2,主機房的maxcompute服務不再接受新請求。
完成maxcompute服務依賴系統如使用者中心umm和meta存儲服務ots的雙機房容災切換。
maxcompute控制叢集切換及maxcompute計算叢集切換
maxcompute服務切換後資料異常(本資料異常僅包括已制定資料同步方案而因故障未進行同步的資料)梳理及補資料操作
資料檢查
對于在資料同步複制過程中發生主叢集故障的資料,此時資料狀态如下圖所示,需進行複制同步狀态檢查及恢複操作。 maxcompute依托大資料管家進行叢集和服務運維,在大資料管家中開發了支援(resource/volume/table)的未同步資料狀态檢查及中繼資料修複。
對于計劃内的切換,umm和ots不會有資料丢失,且rto為0,對于計劃外的切換,可能有短暫時間内的資料丢失,通常是秒級,對于maxcompute這樣的離線大規模資料處理系統,忽略這段短暫時間内meta資料丢失的影響。
maxcompute提供工具掃描meta資料,生成一份未同步的資料表或分區的清單。
maxcompute提供工具直接操作meta資料,将未同步的資料表或分區drop掉,避免備機房maxcompute服務起來後資料不正确。
啟用備機房的vip1’和vip2’,切換maxcompute服務域名和tunnel服務域名到新的vip,至此備機房的maxcompute服務恢複,接受請求。
上層資料業務根據未同步的資料表或分區清單,進行資料重新導入和重新計算。至此資料恢複完成,可以恢複上層資料業務。
2.4,maxcompute系統改造以支援大資料容災
在實作整合maxcompute容災方案過程中,以及測試過程中,對現有實作中很多邏輯進行了優化和處理,并和相關依賴系統同步改造,完成maxcompute大資料平台的容災方案并測試驗證通過,傳遞客戶現場部署, 主要有:
相關依賴系統如ots,賬号系統umm、aas支援容災改造
控制叢集服務切換邏輯改造
控制叢集配置讀入與生效方式改造,使其能夠接受容災切換的請求并立即生效
相關管理admintask支援多種資料檢查功能
跨叢集複制服務切換及切換後狀态檢查改造
resource資料同步方案
多控多計算在更新和新部署場景下的部署工具改造
大資料管家增加容災切換,資料檢查功能與接口
maxcompute部署底座支援vip及域名切換功能
......
三,rpo與rto
對于maxcompute這種大規模離線資料處理系統來說,資料加工往往有突發的情況,在某個時間段産出的資料量可能非常大,受限于機房間的帶寬,新上傳的和新計算的資料複制到備機房需要一定的時間,maxcompute提供實時檢視目前未同步的資料表/分區,實時的容災資料同步率等資訊,實時資料同步率主要取決于兩個因素的影響:
機房間帶寬大小
主機房maxcompute計算叢集繁忙程度
因為資料複制也是以飛天分布式任務來進行的,需要用到主機房的maxcompute計算叢集的計算資源(主要是cpu和記憶體),maxcompute可以根據這兩個因素給出資料同步完成的時間預估。
資料中心災難恢複流程,主要圍繞兩個名額rpo和rto,借下圖來說明maxcompute容災方案的細節:
maxcompute的多控制、多計算叢集的架構天然的支援高可用和資料容災場景,在機房或叢集遭受不可恢複性破壞時,確定資料不會丢失,業務不受影響。
maxcompute是典型的離線計算平台,需要支援大量資料的寫入操作,隻能選擇異步複制。
rpo恢複點目标:
rto恢複時間目标:
容災配置及部署對rpo/rto的影響
rpo時間要求配置resource、table, volume 的同步周期。
rpo(recoverypointobjective)影響範圍通過資料檢查掃描得到的resource、table, volume未同步清單展現
大資料管家手動操作完成(控制叢集切換 + 計算叢集切換 + 資料檢查完成 + meta資料修補) + 使用者使用上層業務系統補資料完成 = 切換完畢
rto (recoverytimeobjective) = 災難決策 + 技術恢複(maxcompute依賴系統及服務恢複 + maxcompute服務恢複 + 資料檢查與恢複)
四,項目落地執行個體
本容災方案已經經過多輪内部演練,達到了産品輸出的成熟度要求,在阿裡雲專有雲底座部署的基礎上,該方案已經在内部多輪資料同步驗證,服務切換演練驗證,資料檢查驗證,能夠做到災難場景下的服務切換,達到了系統設計目的,能夠做到容災方案對客戶影響降到最低。
maxcompute容災方案和實作是阿裡雲專有雲輸出中系統能力重要一部分,支援了多個專有雲版本。已經在政通專有雲中依據目前容災方案部署完畢,并能夠平滑切換到新的專有雲版本。做到了不同版本的專有雲中系統能力的相容和延續性。目前部署後的主備叢集工作正常,資料同步正常。
控制叢集切換(容災模式)
計算叢集切換(容災模式)
未同步資料檢查
五,一些思考
1, 正向切換和反向切換
正切和回切方案是一樣的,maxcompute資料異步複制系統隻根據計算叢集的資料版本來做資料複制,當切換到備機房後,備機房的資料版本會更新,資料會從備機房複制回原來的主機房,進而完成資料的同步。
是以,回切的步驟和正切的步驟一緻。但需要等待資料從備用機房同步到主機房完成後做預設計算叢集切換,不然會造成兩邊資料不一緻問題。
2, maxcompute容災方案建立在依賴系統容災的基礎上,依賴系統服務狀态對maxcompute容災及功能使用非常重要,在做方案過程中,需要綜合考慮整體服務級的容災方案,不僅着眼與maxcompute系統本身,對其依賴系統容災方案,備援配置,服務狀态,資料狀态都需要通盤考慮。
3,大資料服務容災是典型的分布式系統容災方案涉及到系統間協調,主要考慮點為資料狀态,服務狀态切換,在災難發生時最大程度保護重要資料,盡快使服務恢複,對客戶影響降到最小。
4,系統設計的前瞻性對容災方案及最終落地方案影響很大,客戶業務狀況對容災場景和方案設計及實作影響很大。
5,大資料容災部署狀态及災難發生後的容災切換隻是系統能力中的一個,更多的工作在于從業務層面合理配置設定資料資源,系統設計層面支援容災能力,容災切換和操作過程中準确判斷系統及資料狀态,是一個需要客戶和服務提供商也就是maxcompute平台團隊共同面對的問題。
6,容災方案都有一定的場景限制,本大資料容災方案集中讨論了在異地單機房故障情況下容災切換能力,對于上層業務系統适配連結使用多地maxcompute服務沒有闡述。這一點上也需要服務提供方和客戶方共同參與,協調溝通最符合業務場景的大資料容災方案與項目實踐。
作者:揚舟