場景分析
每個機房的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 實現元數據索引,或者自定義的向雲端備份等操作。