Ceph 對象存儲多站點復制:第一部分
在本系列文章中,我們將通過詳細的實踐案例,指導大家如何配置和優化Ceph對象存儲解決方案中最核心的復制功能。我們將重點介紹Reef版本中新增的多站點復制增強特性,幫助用戶構建更強大、更可靠的分布式存儲系統。
本系列文章將涵蓋以下核心主題:
- Ceph對象存儲多站點復制入門——深入解析多站點復制的基本概念和核心價值
- Ceph對象多站點架構與配置指南——詳細講解系統架構設計原理與最佳實踐配置方案
- Reef版本性能優化:復制同步公平性——重點介紹新版本在復制性能方面的突破性改進
- RGW服務負載均衡:Ceph Ingress服務部署——手把手指導如何實現高可用、高性能的服務部署
- Ceph對象多站點同步策略——深入探討靈活高效的同步策略配置方案
- Ceph對象存儲歸檔區域——全面解析歸檔存儲的最佳實踐與實施方法
在數據保護領域,復制、災難恢復、備份和恢復策略的選擇直接影響著業務連續性。不同的策略對應著不同的服務級別協議(SLA),特別是在恢復時間目標(RTO)和恢復點目標(RPO)方面表現出顯著差異。
以復制策略為例,同步復制能夠實現最低的RPO,理論上可以達到零數據丟失。Ceph通過跨數據中心的集群擴展能力,能夠實現高效的站點間同步復制。相比之下,異步復制雖然接受非零RPO,但在大規模分布式場景下展現出更好的擴展性和成本效益。
Ceph為每種存儲模式(對象、塊和文件)都提供了專門的異步復制機制。其中,對象存儲的異步多站點復制通過將數據跨集群復制,為地理分布式部署提供了強大的支持。本系列文章將重點探討對象存儲的多站點異步復制方案,解析其在分布式環境下的最佳實踐。
一、Ceph 對象存儲多站點復制
在深入技術細節之前,讓我們先概覽Ceph對象存儲(RGW)的核心能力:它提供了一套成熟完善的企業級地理復制解決方案。RGW的多站點復制機制支持跨區域部署,無論是單一區域還是多區域架構,都能實現高效的異步對象復制。得益于異步復制和最終一致性模型的設計,Ceph對象存儲能夠在廣域網(WAN)環境下保持卓越的性能表現。
Ceph 對象存儲多站點復制為企業帶來了顯著優勢,尤其是那些需要跨多個地理位置存儲和管理海量數據的企業。以下是其主要優勢:
提高數據可用性,多區域支持
Ceph對象存儲支持地理分布式集群部署,顯著提升數據可用性。通過最終一致性模型的異步復制機制,有效規避硬件故障、自然災害等風險,同時無需嚴格網絡延遲要求,確保業務連續性。
Active/Active復制架構
采用Active/Active復制架構,支持多終端用戶就近訪問。用戶可通過最近的RGW(S3)端點進行并發讀寫操作,實現數據雙向同步。這種設計不僅提升了數據訪問速度,還大幅降低了系統停機風險。
值得注意的是,只有區域組中指定的主區域接受元數據更新。例如,在創建用戶和存儲桶時,非主區域上的所有元數據修改都將轉發到配置的主區域。如果主節點發生故障,則必須觸發手動主區域故障轉移。
彈性擴展能力
多站點復制架構賦予系統卓越的擴展性。企業可根據業務需求靈活添加新站點或集群,實現存儲基礎設施的無縫擴展,完全規避容量瓶頸和性能限制。
Realm, Zonegroups 以及 Zones
Ceph 對象存儲多站點集群由領域(Realm), 區域組(Zonegroup) 以及 區域(Zone) 組成:
- Realm定義了跨多個Ceph存儲集群的全局命名空間,確保在整個分布式系統中的對象標識唯一性。
- 每個Zonegroup可以包含一個或多個zone,作為邏輯分組單元,管理特定地理范圍內的存儲資源。
- zones是Ceph多站點配置的最小單元,由單個Ceph集群內的一個或多個對象網關(RGW)組成,負責具體的存儲操作和數據服務。
如下圖所示,Ceph對象存儲的多站點復制發生在Zone級別。在一個典型的配置中,我們擁有一個全局Realm和多個Zonegroup。Realm級別的全局對象命名空間確保了跨Zonegroup和Zone的對象ID唯一性。
每個存儲桶由其創建時所在的Zonegroup擁有,其對象數據僅會復制到該Zonegroup的其他區域。當其他Zonegroup接收到該存儲桶的數據請求時,系統會自動將請求重定向到存儲桶所在的Zonegroup進行處理。
在Ceph對象存儲集群中,您可以配置一個或多個獨立的領域(Realm)。每個領域都是一個自包含的全局對象命名空間,這意味著:
- 每個領域都維護著獨立的用戶、存儲桶和對象集合
- 同一領域內不允許存在同名存儲桶
- 領域之間完全隔離,互不影響
Ceph對象存儲還提供了租戶(Tenant)概念,用于實現S3命名空間的進一步隔離。雖然租戶機制不在本系列討論范圍內,但可以通過官方文檔深入了解這一特性。
如圖所示,我們展示了一個典型的多領域配置場景。兩個獨立的領域分別擁有自己的區域組和復制區域,形成了完全隔離的命名空間體系。這種架構設計為不同業務單元或客戶群體提供了安全的數據隔離方案。
每個區域代表一個 Ceph 集群,一個區域組中可以有一個或多個區域。配置后,多站點復制將在區域之間進行。在本系列博客中,我們將僅在一個區域組中配置兩個區域,但可以在單個區域組中配置更多數量的復制區域。
Ceph 多站點復制策略
Ceph對象存儲新版本引入了革命性的"多站點同步策略",實現了細粒度的存儲桶級別復制控制。這一創新特性為用戶帶來了前所未有的靈活性和成本優化空間,同時解鎖了多項關鍵復制功能:
核心功能亮點
- 存儲桶級復制控制
用戶可針對單個存儲桶獨立啟用或禁用同步功能,實現對復制工作流的精確控制。 - 選擇性復制機制
支持全區域復制的同時,可靈活排除特定存儲桶,實現更精細的資源管理。 - 多目標復制架構
單個源存儲桶可同時向多個目標存儲桶進行數據復制,滿足復雜業務場景需求。 - 靈活數據流配置
支持按存儲桶配置對稱或定向數據流,實現最優化的數據同步方案。
下圖展示了同步策略功能在實際應用中的典型場景。
二、Ceph 多站點配置
自Quincy版本起,Ceph引入了一個全新的rgw管理器模塊,集成在cephadm編排器中。該模塊顯著簡化了多站點復制的配置流程。本節將指導您如何使用rgw管理器模塊,通過命令行界面(CLI)在兩個獨立Ceph集群(每個集群作為一個區域)之間配置對象存儲多站點復制。
注意:從Reef版本開始,多站點配置也可通過Ceph UI/儀表板完成。雖然本指南主要使用CLI方式,但可以在官方文檔中找到圖形化配置的相關信息。
在我們的示例配置中,采用以下邏輯架構:
- 領域(Realm):命名為multisite
- 區域組(Zonegroup):命名為multizg
- 區域(Zone):包含zone1和zone2兩個區域
每個區域代表一個地理分布的數據中心內的獨立Ceph集群。下圖展示了該多站點配置的邏輯架構示意圖:
集群配置說明(作為實驗環境部署,我們采用了一個精簡的配置方案):
- 節點配置:每個Ceph集群包含4個節點
- 存儲配置:每個節點配置6個OSD
- 服務部署:每個集群部署4個RGW服務(每個節點1個)
服務角色分配:
- 客戶端服務:2個RGW專門處理S3客戶端請求
- 復制服務:其余RGW負責多站點復制操作
網絡通信機制:
Ceph對象存儲的多站點復制數據通過RGW服務使用HTTP協議在集群間傳輸。這種設計帶來了顯著的網絡優勢:我們只需在需要配置多站點的Ceph集群(區域)之間啟用HTTP通信即可。
下圖展示了我們將逐步配置的最終架構示意圖。
在我們的示例配置中,客戶端SSL連接將在每個站點的負載均衡器層終止。RGW服務之間的所有通信將使用純HTTP協議。
在配置TLS/SSL時,我們可以選擇在負載均衡器層或RGW服務層終止客戶端到S3端點的加密連接。雖然理論上可以同時采用兩種方式(即在負載均衡器和RGW之間重新加密),但目前Ceph ingress服務尚不支持這種配置方案。
在接下來的第二篇文章中,我們將詳細介紹如何在Ceph集群之間建立多站點復制,具體步驟將基于下圖所示的架構展開。
但在開始配置 Ceph 對象存儲多站點復制之前,我們需要提供更多有關初始狀態的上下文。我們部署了兩個 Ceph 集群,第一個集群的節點為ceph-node-00到ceph-node-03 ,第二個集群的節點為ceph-node-04到ceph-node-07 。
[root@ceph-node-00 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-node-00.cephlab.com 192.168.122.12 _admin,osd,mon,mgr
ceph-node-01.cephlab.com 192.168.122.179 osd,mon,mgr
ceph-node-02.cephlab.com 192.168.122.94 osd,mon,mgr
ceph-node-03.cephlab.com 192.168.122.180 osd
4 hosts in cluster
[root@ceph-node-04 ~]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph-node-04.cephlab.com 192.168.122.138 _admin,osd,mon,mgr
ceph-node-05.cephlab.com 192.168.122.175 osd,mon,mgr
ceph-node-06.cephlab.com 192.168.122.214 osd,mon,mgr
ceph-node-07.cephlab.com 192.168.122.164 osd
4 hosts in cluster
核心Ceph服務已完成部署,包括Ceph的可觀測性組件棧,但目前尚未部署RGW服務。所有Ceph服務均以容器化方式運行在RHEL系統上,通過Podman進行管理。
[root@ceph-node-00 ~]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
alertmanager ?:9093,9094 1/1 6m ago 3w count:1
ceph-exporter 4/4 6m ago 3w *
crash 4/4 6m ago 3w *
grafana ?:3000 1/1 6m ago 3w count:1
mgr 3/3 6m ago 3w label:mgr
mon 3/3 6m ago 3w label:mon
node-exporter ?:9100 4/4 6m ago 3w *
osd.all-available-devices 4 6m ago 3w label:osd
prometheus ?:9095 1/1 6m ago 3w count:1
[root@ceph-node-00 ~]# ceph version
ceph version 18.2.0-131.el9cp (d2f32f94f1c60fec91b161c8a1f200fca2bb8858) reef (stable)
[root@ceph-node-00 ~]# podman inspect cp.icr.io/cp/ibm-ceph/ceph-7-rhel9 | jq .[].Labels.summary
"Provides the latest IBM Storage Ceph 7 in a fully featured and supported base image."
# cat /etc/redhat-release
Red Hat Enterprise Linux release 9.2 (Plow)
總結
在本系列的第一部分中,我們全面探討了Ceph對象存儲多站點復制的核心特性和架構設計。通過深入解析多站點復制的工作原理、配置要素和最佳實踐,為后續的實際配置奠定了堅實基礎。