ceph 對象存儲跨機房容災


場景分析

每個機房的Ceph都是獨立的cluster,彼此之間沒有任何關系。

多個機房都獨立的提供對象存儲功能,每個Ceph Radosgw都有自己獨立的命名空間和存儲空間。

這樣帶來兩個問題:

  • 針對Radosgw來說,我們的業務沒法提供統一的命名空間;

  • 沒有機房級別的容災,若一個機房Radosgw無法訪問,則機房提供的對象存儲癱瘓;

Realm:
Zonegroup: 理解為數據中心,由一個或多個Zone組成,每個Realm有且僅有 一個Master Zonegroup,用於處理系統變更,其他的稱為Slave Zonegroup,元數據與Master Zonegroup保持一致;

Zone: Zone是一個邏輯概念,包含一個或者多個RGW實例。每個Zonegroup有且僅有一個Master Zone,用於處理bucket和user等元數據變更。

Period: 保存realm當前的配置信息,使用epoch維護版本信息。

Metadata Sync:Zone是一個邏輯概念,包含一個或者多個RGW實例。每個Zonegroup有且僅有一個Master Zone,用於處理bucket和user等元數據變更。

目前Ceph在多集群方案聚焦於接口層的方案,而不是在 RADOS 層面實現。比如 RADOS Object Storage在集群間通過Agent的方式進行數據同步,當然,在Jewel 版本中RADOS Object Storage V2種已經支持多讀多寫的機制,由於對象存儲的弱語意,RADOS Object Storage的跨站仍然是最終一致性。其定義了 Zone,ZoneGroup 和聯合集群概念,每個 Zone 可以理解為一個傳統 Ceph 集群的部分,ZoneGroup 是多個Zone的集合,通常由不同地的Ceph集群中的Zone構成,而整個聯合集群中只允許一個Master ZoneGroup 來進行寫操作。因此從邏輯上來部署的話,Master ZoneGroup可以由多個Ceph集群構成,而Slave ZoneGroup也可以將這些Ceph集群的其他池作為Zone。這樣就完成了多地多活的集群方案。

新版 Multi-Site 沿用記日志再同步的架構,代碼基本重寫,引入了boost 的協程框架,配置更清晰。同一個域下多 Zone之間的數據為多主模式,可以同時寫;元數據為主從模式,由主Zone寫入並同步到從Zone,保證元數據一致性。並且即將支持桶級同步。最近主線合並了同步模型的插件框架,用戶可以自定義插件來對接 elasticsearch 實現元數據索引,或者自定義的向雲端備份等操作。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM