0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

基于Ceph對象存儲的混合云機(jī)制的深度解讀

存儲界 ? 來源:未知 ? 作者:李倩 ? 2018-04-29 15:12 ? 次閱讀

1.背景

毫無疑問,乘著云計算發(fā)展的東風(fēng),Ceph已經(jīng)是當(dāng)今最火熱的軟件定義存儲開源項(xiàng)目。如下圖所示,它在同一底層平臺之上可以對外提供三種存儲接口,分別是文件存儲、對象存儲以及塊存儲,本文主要關(guān)注的是對象存儲即radosgw。

基于Ceph可方便快捷地搭建安全性好、可用性高、擴(kuò)展性好的私有化存儲平臺。私有化存儲平臺雖然以其安全性的優(yōu)勢受到越來越多的關(guān)注,但私有化存儲平臺也存在諸多弊端。 例如在如下場景中,某跨國公司需要在國外訪問本地的業(yè)務(wù)數(shù)據(jù),我們該如何支持這種遠(yuǎn)距離的數(shù)據(jù)訪問需求呢。如果僅僅是在私有化環(huán)境下,無非以下兩種解決方案:

直接跨地域去訪問本地數(shù)據(jù)中心中的數(shù)據(jù),毫無疑問,這種解決方案會帶來較高的訪問延遲。

在國外自建數(shù)據(jù)中心,不斷將本地的數(shù)據(jù)異步復(fù)制到遠(yuǎn)程數(shù)據(jù)中心,這種解決方案的缺點(diǎn)是成本太高。

在這種場景下,單純的私有云存儲平臺并不能很好的解決的上面的問題。但是,通過采用混合云解決方案卻能較好地滿足上述需求。對于前文所述遠(yuǎn)距離數(shù)據(jù)訪問的場景,我們完全能借助公有云在遠(yuǎn)程的數(shù)據(jù)中心節(jié)點(diǎn)作為存儲點(diǎn),將本地數(shù)據(jù)中心的數(shù)據(jù)異步復(fù)制到公有云,再通過終端直接訪問公有云中的數(shù)據(jù),這種方式在綜合成本和快捷性方面具備較大優(yōu)勢,適合這種遠(yuǎn)距離的數(shù)據(jù)訪問需求。

2.發(fā)展現(xiàn)狀:RGW Cloud Sync發(fā)展歷程

基于Ceph對象存儲的混合云機(jī)制是對Ceph生態(tài)的良好補(bǔ)充, 基于此,社區(qū)將在Mimic這個版本上發(fā)布RGW Cloud Sync特性,初步支持將RGW中的數(shù)據(jù)導(dǎo)出到支持s3協(xié)議的公有云對象存儲平臺,比如我們測試中使用的騰訊云COS,同Mulsite中的其他插件一樣,RGW Cloud Sync這個特性也是做成了一個全新的同步插件(目前稱之為aws sync module),能兼容支持S3協(xié)議。RGW Cloud Sync特性的整體發(fā)展歷程如下:

Suse公司貢獻(xiàn)了初始版本,這個版本僅支持簡單上傳;

Red Hat在這個初始版本之上實(shí)現(xiàn)了完整語義的支持,比如multipart上傳、刪除等,考慮到同步大文件的時候可能會造成內(nèi)存爆炸的問題,還實(shí)現(xiàn)了流式上傳。

對于Ceph社區(qū)即將在M版本發(fā)布的這個公有云同步特性,進(jìn)行了實(shí)際落地測試使用,并根據(jù)其中存在的問題進(jìn)行了反饋及開發(fā)。在實(shí)際測試過程中,我們搭建了如下所示的運(yùn)行環(huán)境:

其中,Cloud Zone內(nèi)部包含一個公有云同步插件,它被配置為只讀zone,用以將Rgw Zone中寫入的數(shù)據(jù)跨地域同步至騰訊云公有云對象存儲平臺COS之上。順利實(shí)現(xiàn)將數(shù)據(jù)從RGW中同步備份至公有云平臺,并且支持自由定制來實(shí)現(xiàn)將數(shù)據(jù)導(dǎo)入至不同云端路徑,同時我們還完善了同步狀態(tài)顯示功能,能較快監(jiān)測到同步過程中發(fā)生的錯誤以及當(dāng)前落后的數(shù)據(jù)等。

3.核心機(jī)制

Multisite

RGW Cloud Sync這個特性本質(zhì)上是基于Multisite之上的一個全新的同步插件(aws sync module)。首先來看Multisite的一些核心機(jī)制。Multisite是RGW中數(shù)據(jù)遠(yuǎn)程備份的一種解決方案,本質(zhì)上來說它是一種基于日志的異步復(fù)制策略,下圖為一個Multisite的示意圖。

Multisite中主要有以下基本概念:

Zone:存在于一個獨(dú)立的Ceph集群,由一組rgw提供服務(wù),對應(yīng)一組后臺的pool;

Zonegroup:包含至少一個Zone,Zone之間同步數(shù)據(jù)和元數(shù)據(jù);

Realm:一個獨(dú)立的命名空間,包含至少一個Zonegroup,Zonegroup之間同步元數(shù)據(jù)。

下面來看Multisite中的一些工作機(jī)制,分別是Data Sync、Async Framework、Sync Plugin這三部分。其中Data Sync部分主要分析Multisite中的數(shù)據(jù)同步流程,Async Framework部分會介紹Multisite中的協(xié)程框架,Sync Plugin部分會介紹Multisite中的一些同步插件。

Data Sync

Data Sync用以將一個Zonegroup內(nèi)的數(shù)據(jù)進(jìn)行備份,一個Zone內(nèi)寫入的數(shù)據(jù)會最終同步到Zonegroup內(nèi)所有Zone上,一個完整的Data Sync流程包含如下三步:

Init:將遠(yuǎn)程的source zone與local zone建立日志分片對應(yīng)關(guān)系,即將遠(yuǎn)程的datalog映射到本地,后續(xù)通過datalog就知道有沒有數(shù)據(jù)需要更新;

Build Full Sync Map:獲取遠(yuǎn)程bucket的元信息并建立映射關(guān)系來記錄bucket的同步狀態(tài),如果配置multisite的時候source zone是沒有數(shù)據(jù)的,則這步會直接跳過;

Data Sync:開始o(jì)bject數(shù)據(jù)的同步,通過RGW api來獲取source zone的datalog并消費(fèi)對應(yīng)的bilog來同步數(shù)據(jù)。

下面以一個bucket中數(shù)據(jù)的增量同步來闡述Data Sync的工作機(jī)制。了解RGW的人都應(yīng)該知道,一個bucket實(shí)例至少包含一個bucket shard,Data Sync是以bucket shard為單位來同步的,每個bucket shard有一個datalog shard 及bilog shard與之對應(yīng)。

在建立完對應(yīng)關(guān)系及進(jìn)行完全量同步之后,本地Zone會記錄Sourcezone每個datalog 分片對應(yīng)的sync_marker。此后local zone會定期將sync_marker與遠(yuǎn)程datalog的max_marker比對,若仍有數(shù)據(jù)未同步,則通過rgw消費(fèi)datalog entry,datalog entry中記錄了對應(yīng)的bucket shard,消費(fèi)bucket shard對應(yīng)的bilog則可進(jìn)行數(shù)據(jù)同步。如下面這個圖所示,遠(yuǎn)程的datalog是以 gw_data_chang_log_entry這樣一種格式來存儲日志的,我們可發(fā)現(xiàn),每條datalog entry中包含rgw_data_change這樣一個域,而rgw_data_change中包括的key這個域則是bucket shard的名字,之后就可以找到與之對應(yīng)的bilog shard,從而消費(fèi)bilog來進(jìn)行增量同步。而全量同步其實(shí)就是沒有開始這個sync_marker,直接從頭開始消費(fèi)datalog來進(jìn)行數(shù)據(jù)同步。

Async Framework

RGW中使用的異步執(zhí)行框架是基于boost::asio::coroutine這個庫來開發(fā)的,它是一個stackless coroutine,和常見的協(xié)程技術(shù)不同,Async Framework沒有使用ucontext技術(shù)來保存當(dāng)前堆棧信息來支持協(xié)程,而是使用宏的技巧來達(dá)到類似效果,它通過 reenter/yield/fork 幾個偽關(guān)鍵字(宏)來實(shí)現(xiàn)協(xié)程。RGWCoroutine是RGW中定義的關(guān)于協(xié)程的抽象類,它本身也是boost::asio::coroutine 的子類,它是用于描述一個任務(wù)流的,包含一個待實(shí)現(xiàn)的隱式狀態(tài)機(jī)。RGWCoroutine可以call其他RGWCoroutine,也可以spawn一個并行的RGWCoroutine。

RGWCoroutine 類會包含一個 RGWCoroutinesStack成員,使用call調(diào)用其他RGWCoroutine的時候會將其對應(yīng)的任務(wù)流都存儲在堆棧上,直到所有任務(wù)流完成之后控制權(quán)才會回到調(diào)用者處。然而,spawn一個新的RGWCoroutine時候會生成一個新的任務(wù)棧來存儲任務(wù)流,它不會阻塞當(dāng)前正在執(zhí)行的任務(wù)流。當(dāng)一個協(xié)程需要執(zhí)行一個異步IO操作的時候,它會標(biāo)記自身為阻塞狀態(tài),而這個IO事件會在任務(wù)管理器處注冊,一旦IO完成后任務(wù)管理器會解鎖當(dāng)前堆棧,從而恢復(fù)這個協(xié)程的控制。下圖為一個簡單的協(xié)程使用例子,實(shí)現(xiàn)了一個有預(yù)定周期的請求處理器。

Sync Plugin

前文所述的數(shù)據(jù)同步過程是將數(shù)據(jù)從一個ceph zone同步到另一ceph zone,我們完全可以將過程抽象出來,使數(shù)據(jù)同步變得更加通用,方便添加不同的sync module來實(shí)現(xiàn)將數(shù)據(jù)遷移到不同的目的地。因?yàn)樯蠈酉M(fèi)datalog的邏輯都是一致的,只有最后一步上層數(shù)據(jù)到目的地這步是不一樣的,因此我們只需實(shí)現(xiàn)數(shù)據(jù)同步和刪除的相關(guān)接口就可實(shí)現(xiàn)不同的同步插件,每個插件在RGW中都被稱為一個sync module,目前Ceph中有以下四個sync module:

rgw:默認(rèn)sync module,用以在ceph zone之間同步數(shù)據(jù)

log:用于獲取object的擴(kuò)展屬性并進(jìn)行打印

elasticsearch:用于將數(shù)據(jù)的元信息同步至ES以支持一些搜索請求

aws:Mimic版本發(fā)布,用于導(dǎo)出RGW中的數(shù)據(jù)到支持S3協(xié)議的對象存儲平臺 4

RGW Cloud Sync

Streaming process

前文講到Suse公司貢獻(xiàn)了RGW Cloud Sync的初始版本,如下圖所示,它的一個同步流程邏輯上來說主要分為三步,第一通過aws sync module通過http connection將遠(yuǎn)程的object拉取過來裝載至內(nèi)存中,之后將這個object put到云端,之后云端會返回一個put result。

對于小文件來說,這個流程是沒問題的,但是如果這個object比較大的情況,全部load到內(nèi)存中就有問題了,因此Red Hat在此基礎(chǔ)之上支持了Streaming process。本質(zhì)上是使用了一個新的協(xié)程,這里稱之為pipe CR,它采用類似管道的機(jī)制,同時保持兩個http connection,一個用于拉取遠(yuǎn)程object,一個用于上傳object,且這兩個過程是并行的,這樣可以有效防止內(nèi)存爆炸,具體如下圖所示。

Multipart upload

Multipart upload是在Streaming process基礎(chǔ)之上用以支持大文件的分片上傳。它的整體流程如下:

Json config

公有云存儲環(huán)境相對來說比較復(fù)雜,需要更加復(fù)雜的配置來支持aws sync module的使用,因此Red Hat在這個插件上支持了json config。

相對其他插件來說主要增加了三個配置項(xiàng),分別是host_style, acl_mapping,target_path,其中host_style是配置域名的使用格式,acl_mapping 是配置acl信息的同步方式,target_path是配置元數(shù)據(jù)在目的處的存放點(diǎn)。如下圖所示為一個實(shí)際使用的配置,它表示配置了aws zone,采用path-style這種域名格式,target_path是rgw加其所在zonegroup的名字并加上它的user_id,之后是它的bucket名字,最終這個object在云端的路徑就是target_path加上object名字。

5.關(guān)于RGW Cloud Sync方面的后續(xù)工作主要有以下四項(xiàng):

同步狀態(tài)顯示的優(yōu)化,比如顯示落后的datalog、bucket、object等,同時將一些同步過程中發(fā)生的錯誤上報至Monitor;

數(shù)據(jù)的反向同步,即支持將公有云的數(shù)據(jù)同步至RGW;

支持將RGW的數(shù)據(jù)導(dǎo)入更多的公有云平臺,而不是僅僅支持S3協(xié)議的平臺;

在此基礎(chǔ)之上以RGW為橋梁來實(shí)現(xiàn)不同云平臺之間的數(shù)據(jù)同步。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 云計算
    +關(guān)注

    關(guān)注

    39

    文章

    7702

    瀏覽量

    137116
  • 存儲
    +關(guān)注

    關(guān)注

    13

    文章

    4226

    瀏覽量

    85580

原文標(biāo)題:深度解讀基于Ceph對象存儲的混合云機(jī)制

文章出處:【微信號:cunchujie,微信公眾號:存儲界】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評論

    相關(guān)推薦

    基于DPU的Ceph存儲解決方案

    容量和性能,只需添加新的存儲節(jié)點(diǎn)即可,無需重新配置現(xiàn)有系統(tǒng),非常適合環(huán)境的動態(tài)需求; 自我修復(fù): 通過副本或糾刪碼技術(shù),Ceph能夠自動檢測并修復(fù)數(shù)據(jù)損壞或丟失,保證數(shù)據(jù)的高可用性和持久性; 統(tǒng)一接口:
    的頭像 發(fā)表于 07-15 13:44 ?1253次閱讀
    基于DPU的<b class='flag-5'>Ceph</b><b class='flag-5'>存儲</b>解決方案

    Ceph是什么?Ceph的統(tǒng)一存儲方案簡析

    ,Ceph僅從軟件層面就提供了對象、塊和文件存儲。對象存儲要比塊或者文件更加適應(yīng)現(xiàn)在的混合的非結(jié)
    發(fā)表于 10-08 15:40

    什么是對象存儲?

    可以通過 RESTful API 進(jìn)行訪問,這使得它與許多應(yīng)用程序和服務(wù)集成變得更加容易。對象存儲的好處在于,它可以非常容易地擴(kuò)展,支持海量數(shù)據(jù),并且可以使分布式環(huán)境下運(yùn)行,raksmart機(jī)房服務(wù)提供
    發(fā)表于 03-10 14:42

    OC的消息轉(zhuǎn)發(fā)機(jī)制深度解讀

    相信大家對Object-C的消息傳遞機(jī)制并不陌生(如果不熟悉,我后續(xù)會再寫一篇關(guān)于消息傳遞機(jī)制的文章),今天我來講解另外一個重要的問題,就是對象在收到無法解讀的消息之后會發(fā)生什么情況。
    發(fā)表于 09-25 17:33 ?0次下載

    基于存儲密文安全共享機(jī)制

    存儲環(huán)境為海量數(shù)據(jù)的存儲和共享提供方便的同時也帶了安全隱患。為保證數(shù)據(jù)安全,用戶將自己的隱私數(shù)據(jù)加密后存儲在開放的
    發(fā)表于 03-07 14:53 ?0次下載
    基于<b class='flag-5'>云</b><b class='flag-5'>存儲</b>密文安全共享<b class='flag-5'>機(jī)制</b>

    備份正在升級至對象存儲

    大量非結(jié)構(gòu)化數(shù)據(jù)需要存儲正呈指數(shù)增長,數(shù)據(jù)的存儲方式正在隨著數(shù)據(jù)自身結(jié)構(gòu)和體量而發(fā)生變化,備份的存儲方式正在升級到對象
    發(fā)表于 06-28 16:10 ?738次閱讀

    深度解讀基于Ceph對象存儲混合機(jī)制

    基于Ceph可方便快捷地搭建安全性好、可用性高、擴(kuò)展性好的私有化存儲平臺。私有化存儲平臺雖然以其安全性的優(yōu)勢受到越來越多的關(guān)注,但私有化存儲平臺也存在諸多弊端。
    發(fā)表于 07-08 16:11 ?1263次閱讀
    <b class='flag-5'>深度</b><b class='flag-5'>解讀</b>基于<b class='flag-5'>Ceph</b><b class='flag-5'>對象</b><b class='flag-5'>存儲</b>的<b class='flag-5'>混合</b><b class='flag-5'>云</b><b class='flag-5'>機(jī)制</b>

    對象存儲的優(yōu)勢有哪些?

    當(dāng)網(wǎng)盤、跑游戲、做備份、存視頻,數(shù)智趨勢下,對象存儲過得風(fēng)生水起,從BAT的公有到企業(yè)私有都有出鏡。IDC中國SDS市場數(shù)據(jù)顯示,20
    發(fā)表于 04-15 15:11 ?916次閱讀

    存儲中的Ceph分布式文件系統(tǒng)及節(jié)點(diǎn)選擇

    集群中高效分布數(shù)據(jù)對象及其副本。經(jīng)典Ceph存儲系統(tǒng)中在副本模式下選擇存儲節(jié)點(diǎn)時該系統(tǒng)僅以節(jié)點(diǎn)存儲
    發(fā)表于 03-31 10:46 ?13次下載
    <b class='flag-5'>云</b><b class='flag-5'>存儲</b>中的<b class='flag-5'>Ceph</b>分布式文件系統(tǒng)及節(jié)點(diǎn)選擇

    Ceph分布式存儲系統(tǒng)性能優(yōu)化研究綜述

    ,Ceph已被廣泛地應(yīng)用于計算和大數(shù)據(jù)存儲系統(tǒng)。作為計算的底層平臺,Ceph除了提供虛擬機(jī)的存儲
    發(fā)表于 04-13 13:58 ?5次下載
    <b class='flag-5'>Ceph</b>分布式<b class='flag-5'>存儲</b>系統(tǒng)性能優(yōu)化研究綜述

    對象存儲和塊存儲區(qū)別介紹

     計算時代存儲技術(shù)的新熱點(diǎn)——對象存儲,也叫做“面向對象存儲”,也有人把它稱作
    發(fā)表于 01-03 06:51 ?1.5w次閱讀

    數(shù)據(jù)存儲的全能俠——華為對象存儲服務(wù)OBS

    大數(shù)據(jù)時代中,數(shù)據(jù)信息對企業(yè)的重要性好比是企業(yè)流動的血液,而企業(yè)數(shù)據(jù)信息的存儲空間就是心臟,擁有了為企業(yè)用戶提供海量、安全、高可靠、低成本的數(shù)據(jù)存儲能力的華為對象
    的頭像 發(fā)表于 12-29 17:48 ?880次閱讀

    對象存儲有哪些用處?

    對象存儲是一個非常靈活的解決方案,適用于多種數(shù)據(jù)存儲場景。 對象存儲用處如下:
    的頭像 發(fā)表于 03-13 12:13 ?933次閱讀

    SDNLAB技術(shù)分享:Ceph在云英的實(shí)踐

    RBD,對象存儲RADOSGW和CephFS三種,基本覆蓋了絕大部分企業(yè)對存儲的需求,所以越來越多企業(yè)加入到使用Ceph的行列。在國內(nèi)也有越來越多的個人和企業(yè)參與到
    發(fā)表于 06-16 09:32 ?387次閱讀
    SDNLAB技術(shù)分享:<b class='flag-5'>Ceph</b>在云英的實(shí)踐

    Ceph分布式存儲簡介&amp;Ceph數(shù)據(jù)恢復(fù)流程

    Ceph存儲可分為塊存儲對象存儲和文件存儲。Ceph
    的頭像 發(fā)表于 09-26 15:41 ?843次閱讀