天天看點

【CDS技術揭秘系列 01】阿裡雲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 服務會自動異步的将該檔案“搬運”到資料複制規則中的目的端,整個過程對使用者完全透明,使用者無需幹涉。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

上圖是一個跨區域複制的例子,使用者為源 Bucket 開通了資料複制服務并配置好了目的端 Bucket 後,DRS 會自動将資料從源 Bucket 複制到目标端 Bucket。

部署架構

簡單介紹一下 CDS 線下部署的實體概念。從大到小逐層依次為Cloud(雲)、Region(地區)、AZ(可用區)、Cluster(叢集),Bucket(桶)。可以用圖說明如下。外面一層可以包括一個或者多個裡面一層。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

下面以一朵雲下面的多 Region 部署架構更為詳細說明,同一個 Region 内部的兩個叢集 Bucket 之間可以做同城容災,兩個不同 Rregion 内部的兩個叢集 Bucket 之間可以做異地容災。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

容災形态

根據使用者不同的容災場景需求,OSS 提供了不同的容災形态,主要分為同城容災,異地容災(跨區域複制),跨雲複制和兩地三中心 四種場景。現在分别一一介紹他們的特點。

1、同城容災

同城容災的系統架構如下所示:

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

叢集 A 和叢集 A' 分别部署在同一個 Region 的兩個 AZ,叢集規劃時候這兩個叢集就被規劃成互為容災叢集。當在任何一個叢集建立 Bucket 時候,背景都會為這個 Bucket 在兩個叢集之間開通好雙向的資料複制邊(也就是兩條複制邊),資料通過 Bucket 寫入到任意一個叢集,都能被 DRS 自動異步的複制到另外一個叢集。當 Bucket所在的目前叢集發生故障時候,可以通過運維平台一鍵切換将 Bucket 目前所在的叢集切換到另外一個叢集。由于 Bucket 的名字相同,使用者通路 OSS 服務的 Endpoint 也相同,是以使用者不需要修改通路 OSS 的域名;整個切換過程對使用者透明,基本上不會影響到使用者的業務。

同城容災在使用者的使用方面上,是一種非常友善的容災形态。

2、異地容災

異地容災的系統架構圖如下:

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

異地容災也叫跨區域複制。由于叢集的部署對使用者不可見,是以沒有畫出内部叢集部署,隻畫出了和使用者使用相關的 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、跨雲複制

跨雲複制的系統架構如下:

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

和異地容災相比,跨雲複制唯一不同的是兩個 Bucket 分别部署在兩朵雲上,提供不同雲之間的資料複制服務,以滿足使用者更多的容災部署形态和需求。因為是兩朵雲,是以 Bucket 名字是可以相同,但兩朵雲下面的 Region 的域名仍舊是不相同的。

使用者使用這種形式的容災,當一朵雲碰到異常時候,也需要使用者自己切換通路 OSS Bucket 的域名,從一朵雲切換到另外一朵雲上。

4、兩地三中心

兩地三中心有兩種形态。一種是同一朵雲下面的兩地三中心,即兩個 Region 都是同一朵雲下面的;另外一種形态是跨雲的兩地三中心,即其中一個 Region 在一朵雲上,另外一個 Region 在另外一朵雲上。由于實際部署中,跨雲的兩地三中心部署形态要多些,是以以跨雲的兩地三中心舉例說明。

嚴格來說,跨雲的兩地三中心是屬于跨雲複制的一種,隻是一個 Bucket(bucketA) 是同城容災類型,另外一個 Bucket(bucketB) 部署在另外一朵雲上,是同城容災和跨雲複制的組合;既 A 和 A' 之間是同城容災,A/A' 和 B 之間是跨雲。在任何一個叢集寫入資料 (A、A'、B),資料最後都會在所有的三個叢集中都存在,是目前為止備份級别最高的一種容災形态。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

如上圖所示, 源端 BucketA 内部對應兩個叢集,當一個叢集出現異常時候,可以通過一鍵切換切換到另外一個叢集上面,使用者不需要改變通路 OSS 的 Bucket 域名;當其中一朵雲整體出現異常時候,使用者也可以通過修改通路OSS Bucket 域名方式,切換到另外一朵雲上面。此種部署形态使資料分布在兩個地方,三個叢集(簡稱兩地三中心),具有更好的資料安全性。

組合容災

組合容災是關于使用者創造複制邊的一種配置形式,主要是為了向使用者提供更多的使用場景。主要分為一對多、多對一、源目一體形式。實際使用過程中,可以是這三種形式的某種或者多種的組合。

1、一對多

如下圖所示,向 BucketA 寫入資料,資料會自動異步複制到 BucketB 和 BucketC,即一個源端 Bucket 對應多個目标端 Bucket。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

2、多對一

如下圖所示,向 BucketB 或者向 BucketC 寫入資料,資料會自動異步複制到 BucketA,即多個源 Bucket 對應相同的目标端 Bucket。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

3、源目一體

如下圖所示,使用者寫入 BucketA 的資料會異步複制到 BucketB,使用者寫入 BucketB 的資料會異步複制到 BucketC;需要注意的是,使用者寫入 BucketA 的資料不會通過這種形式被傳遞複制到 BucketC。BucketB 即作為資料複制的目标端,也作為資料複制的源端,是以我們簡稱為源目一體。

【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘

未來展望

容災是使用者使用資料過程中最基本的應用需求,隻有做好了容災,資料才可能在不同異常情況下都有備份不會出現資料丢失情況。OSS 經過十多年的技術沉澱和打磨,對外提供了豐富的容災功能可以滿足不同使用者、不同場景的不同需求,目前已經被廣泛的應用于銀行、政企等客戶,嚴格保障了客戶的資料安全。在資料容災方面,阿裡雲的 CDS-OSS 是具有核心競争力的。

同時,CDS-OSS 的容災功能仍在持續不斷的打磨之中,未來會有更多新功能、新特性提供給使用者,持續為使用者帶來價值。

原創作品:阿裡雲存儲 禅居

系列文章傳遞門:

  1. 【CDS技術揭秘系列 總篇】阿裡雲的雲定義存儲來了 https://developer.aliyun.com/article/792044?spm=a2c6h.13148508.0.0.3eef4f0ecyZOjQ
  2. 【CDS技術揭秘系列 01】阿裡雲CDS-OSS容災大揭秘 https://developer.aliyun.com/article/792000?spm=a2c6h.13148508.0.0.3eef4f0ecyZOjQ