簡介: 本文主要闡述 CDS 產品中 OSS 服務在容災方面的部署形態以及實現的其本原理。 容災功能可以保證用戶一份數據在多個地方存在冗余備份,當某個機房出現極端異常(比如物理損毀)情況下,數據也不會出現丟失;也可以保障當某個機房出現不可用(比如斷電)時,用戶向外提供的功能也基本不受影響。
前言
對象存儲服務(Object Storage Service,OSS)是阿里雲推出的一種海量、安全、低成本、高可靠的雲存儲服務,適合存放任意類型的文件;容量和處理能力支持任意彈性擴展,並提供多種存儲類型以供選用戶根據自己的業務特性去選擇,可以幫助客戶全面優化存儲成本;提供數據持久性可達到 99.9999999999%(12個9),可用性可達 99.995%。
為了更好的將公有雲的這種線上能力輸出到線下,讓線下客戶也能享受到上述巨大的技術紅利;同時,也為了幫助線下客戶有效的降低硬件部署成本,阿里雲推出了 Cloud Define Storage(CDS)。本文主要闡述 CDS 產品中 OSS 服務在容災方面的部署形態以及實現的其本原理。容災功能可以保證用戶一份數據在多個地方存在冗余備份,當某個機房出現極端異常(比如物理損毀)情況下,數據也不會出現丟失;也可以保障當某個機房出現不可用(比如斷電)時,用戶向外提供的功能也基本不受影響。
容災原理
OSS 包含一個非常重要的后台服務即數據復制服務 DRS(Data Replication Service)。當用戶為 Bucket 開通了數據復制服務時(每一個數據復制服務的規則我們稱之為復制邊),每當用戶上傳一個文件, DRS 服務都會收到通知,然后 DRS 服務會自動異步的將該文件“搬運”到數據復制規則中的目的端,整個過程對用戶完全透明,用戶無需干涉。
上圖是一個跨區域復制的例子,用戶為源 Bucket 開通了數據復制服務並配置好了目的端 Bucket 后,DRS 會自動將數據從源 Bucket 復制到目標端 Bucket。
部署架構
簡單介紹一下 CDS 線下部署的物理概念。從大到小逐層依次為Cloud(雲)、Region(地區)、AZ(可用區)、Cluster(集群),Bucket(桶)。可以用圖說明如下。外面一層可以包括一個或者多個里面一層。
下面以一朵雲下面的多 Region 部署架構更為詳細說明,同一個 Region 內部的兩個集群 Bucket 之間可以做同城容災,兩個不同 Rregion 內部的兩個集群 Bucket 之間可以做異地容災。
容災形態
根據用戶不同的容災場景需求,OSS 提供了不同的容災形態,主要分為同城容災,異地容災(跨區域復制),跨雲復制和兩地三中心 四種場景。現在分別一一介紹他們的特點。
1、同城容災
同城容災的系統架構如下所示:
集群 A 和集群 A' 分別部署在同一個 Region 的兩個 AZ,集群規划時候這兩個集群就被規划成互為容災集群。當在任何一個集群創建 Bucket 時候,后台都會為這個 Bucket 在兩個集群之間開通好雙向的數據復制邊(也就是兩條復制邊),數據通過 Bucket 寫入到任意一個集群,都能被 DRS 自動異步的復制到另外一個集群。當 Bucket所在的當前集群發生故障時候,可以通過運維平台一鍵切換將 Bucket 當前所在的集群切換到另外一個集群。由於 Bucket 的名字相同,用戶訪問 OSS 服務的 Endpoint 也相同,因此用戶不需要修改訪問 OSS 的域名;整個切換過程對用戶透明,基本上不會影響到用戶的業務。
同城容災在用戶的使用方面上,是一種非常方便的容災形態。
2、異地容災
異地容災的系統架構圖如下:
異地容災也叫跨區域復制。由於集群的部署對用戶不可見,因此沒有畫出內部集群部署,只畫出了和用戶使用相關的 Bucket、Region 和 Endpoint。
如上圖所示,同一朵雲下面的 Bucket 名字是不能相同的,BucketA 和 BucketB 分別創建在不同的 Region 上面,即 RegionA 和 RegionB,這兩個 Region 的域名不相同,分別記為 RegionA-endpoint 和 RegionB-endpoint。用戶訪問兩個 Bucket 的域名就分別是 BucketA.RegionA-endpoint 和 BucketB.RegionB-endpoint。兩個 Bucket 之間也開通了兩條復制邊,數據在任何一個 Region 的 Bucket 寫入,都會被 DRS 服務自動異步的復制到另外一個 Region 的 Bucket。當某個 Region 出現整體服務不可用時候,用戶需要自己切換業務訪問 OSS 的域名,從一個Bucket 的 Endpoint 切換到另外一個 Bucket 的 Endpoint,以保證用戶自己的業務不受到影響。
和同城容災形態相比,異地容災雖然出現異常時候需要自己切換訪問 OSS Bucket 的域名,但因為數據可以備份在兩個不同的 Region,所以數據具有更高的安全性。
3、跨雲復制
跨雲復制的系統架構如下:
和異地容災相比,跨雲復制唯一不同的是兩個 Bucket 分別部署在兩朵雲上,提供不同雲之間的數據復制服務,以滿足用戶更多的容災部署形態和需求。因為是兩朵雲,所以 Bucket 名字是可以相同,但兩朵雲下面的 Region 的域名仍舊是不相同的。
用戶使用這種形式的容災,當一朵雲碰到異常時候,也需要用戶自己切換訪問 OSS Bucket 的域名,從一朵雲切換到另外一朵雲上。
4、兩地三中心
兩地三中心有兩種形態。一種是同一朵雲下面的兩地三中心,即兩個 Region 都是同一朵雲下面的;另外一種形態是跨雲的兩地三中心,即其中一個 Region 在一朵雲上,另外一個 Region 在另外一朵雲上。由於實際部署中,跨雲的兩地三中心部署形態要多些,因此以跨雲的兩地三中心舉例說明。
嚴格來說,跨雲的兩地三中心是屬於跨雲復制的一種,只是一個 Bucket(bucketA) 是同城容災類型,另外一個 Bucket(bucketB) 部署在另外一朵雲上,是同城容災和跨雲復制的組合;既 A 和 A' 之間是同城容災,A/A' 和 B 之間是跨雲。在任何一個集群寫入數據 (A、A'、B),數據最后都會在所有的三個集群中都存在,是目前為止備份級別最高的一種容災形態。
如上圖所示, 源端 BucketA 內部對應兩個集群,當一個集群出現異常時候,可以通過一鍵切換切換到另外一個集群上面,用戶不需要改變訪問 OSS 的 Bucket 域名;當其中一朵雲整體出現異常時候,用戶也可以通過修改訪問OSS Bucket 域名方式,切換到另外一朵雲上面。此種部署形態使數據分布在兩個地方,三個集群(簡稱兩地三中心),具有更好的數據安全性。
組合容災
組合容災是關於用戶創造復制邊的一種配置形式,主要是為了向用戶提供更多的使用場景。主要分為一對多、多對一、源目一體形式。實際使用過程中,可以是這三種形式的某種或者多種的組合。
1、一對多
如下圖所示,向 BucketA 寫入數據,數據會自動異步復制到 BucketB 和 BucketC,即一個源端 Bucket 對應多個目標端 Bucket。
2、多對一
如下圖所示,向 BucketB 或者向 BucketC 寫入數據,數據會自動異步復制到 BucketA,即多個源 Bucket 對應相同的目標端 Bucket。
3、源目一體
如下圖所示,用戶寫入 BucketA 的數據會異步復制到 BucketB,用戶寫入 BucketB 的數據會異步復制到 BucketC;需要注意的是,用戶寫入 BucketA 的數據不會通過這種形式被傳遞復制到 BucketC。BucketB 即作為數據復制的目標端,也作為數據復制的源端,所以我們簡稱為源目一體。
未來展望
容災是用戶使用數據過程中最基本的應用需求,只有做好了容災,數據才可能在不同異常情況下都有備份不會出現數據丟失情況。OSS 經過十多年的技術沉淀和打磨,對外提供了豐富的容災功能可以滿足不同用戶、不同場景的不同需求,目前已經被廣泛的應用於銀行、政企等客戶,嚴格保障了客戶的數據安全。在數據容災方面,阿里雲的 CDS-OSS 是具有核心競爭力的。
同時,CDS-OSS 的容災功能仍在持續不斷的打磨之中,未來會有更多新功能、新特性提供給用戶,持續為用戶帶來價值。
原創作品:阿里雲存儲 禪居
原文鏈接
本文為阿里雲原創內容,未經允許不得轉載。