分布式存儲(chǔ)系統(tǒng) Ceph 介紹與環(huán)境部署
一、概述
Ceph是當(dāng)前非常流行的開源分布式存儲(chǔ)系統(tǒng),具有高擴(kuò)展性、高性能、高可靠性等優(yōu)點(diǎn),同時(shí)提供塊存儲(chǔ)服務(wù)(rbd)、對(duì)象存儲(chǔ)服務(wù)(rgw)以及文件系統(tǒng)存儲(chǔ)服務(wù)(cephfs),Ceph在存儲(chǔ)的時(shí)候充分利用存儲(chǔ)節(jié)點(diǎn)的計(jì)算能力,在存儲(chǔ)每一個(gè)數(shù)據(jù)時(shí)都會(huì)通過計(jì)算得出該數(shù)據(jù)的位置,盡量的分布均衡。目前也是OpenStack的主流后端存儲(chǔ)。
特點(diǎn):
- 高性能摒棄了傳統(tǒng)的集中式存儲(chǔ)元數(shù)據(jù)尋址的方案,采用CRUSH算法,數(shù)據(jù)分布均衡,并行度高??紤]了容災(zāi)域的隔離,能夠?qū)崿F(xiàn)各類負(fù)載的副本放置規(guī)則,例如跨機(jī)房、機(jī)架感知等。能夠支持上千個(gè)存儲(chǔ)節(jié)點(diǎn)的規(guī)模,支持TB到PB級(jí)的數(shù)據(jù)。
- 高可用性副本數(shù)可以靈活控制。支持故障域分隔,數(shù)據(jù)強(qiáng)一致性。多種故障場(chǎng)景自動(dòng)進(jìn)行修復(fù)自愈。沒有單點(diǎn)故障,自動(dòng)管理。
- 高可擴(kuò)展性去中心化。擴(kuò)展靈活。隨著節(jié)點(diǎn)增加而線性增長(zhǎng)。
- 特性豐富支持三種存儲(chǔ)接口:塊存儲(chǔ)、文件存儲(chǔ)、對(duì)象存儲(chǔ)。支持自定義接口,支持多種語言驅(qū)動(dòng)。
GitHub地址:https://github.com/ceph/ceph
官方文檔:https://docs.ceph.com/en/latest/start/intro/
二、Ceph 架構(gòu)
支持三種接口:
- Object:有原生的API,而且也兼容Swift和S3的API。
- Block:支持精簡(jiǎn)配置、快照、克隆。
- File:Posix接口,支持快照。
- RADOS——全稱Reliable Autonomic Distributed Object Store,即可靠的、自動(dòng)化的、分布式對(duì)象存儲(chǔ)系統(tǒng)。RADOS是Ceph集群的精華,用戶實(shí)現(xiàn)數(shù)據(jù)分配、Failover等集群操作。
- Librados——Rados提供庫(kù),因?yàn)镽ADOS是協(xié)議很難直接訪問,因此上層的RBD、RGW和CephFS都是通過librados訪問的,目前提供PHP、Ruby、Java、Python、C和C++支持。
- MDS——存儲(chǔ)Ceph文件系統(tǒng)的元數(shù)據(jù)。
三、Ceph核心組件介紹
- OSD——OSD是負(fù)責(zé)物理存儲(chǔ)的進(jìn)程,一般配置成和磁盤一一對(duì)應(yīng),一塊磁盤啟動(dòng)一個(gè)OSD進(jìn)程。主要功能是存儲(chǔ)數(shù)據(jù)、復(fù)制數(shù)據(jù)、平衡數(shù)據(jù)、恢復(fù)數(shù)據(jù),以及與其它OSD間進(jìn)行心跳檢查,負(fù)責(zé)響應(yīng)客戶端請(qǐng)求返回具體數(shù)據(jù)的進(jìn)程等。
OSD 是Ceph集群中存儲(chǔ)實(shí)際用戶數(shù)據(jù)的惟一組件,通常,一個(gè)OSD守護(hù)進(jìn)程綁定到集群中的一個(gè)物理磁盤。因此,通常來說,Ceph集群中物理磁盤的總數(shù)與在每個(gè)物理磁盤上存儲(chǔ)用戶數(shù)據(jù)的OSD守護(hù)進(jìn)程的總數(shù)相同。
- PG——ceph中引入了PG(placement group)的概念,PG是一個(gè)虛擬的概念而已,并不對(duì)應(yīng)什么實(shí)體。ceph先將object映射成PG,然后從PG映射成OSD。
- Pool——Pool是存儲(chǔ)對(duì)象的邏輯分區(qū),它規(guī)定了數(shù)據(jù)冗余的類型和對(duì)應(yīng)的副本分布策略,支持兩種類型:副本(replicated)和 糾刪碼( Erasure Code)。
Pool、PG和OSD的關(guān)系:
- Monitor監(jiān)控——一個(gè)Ceph集群需要多個(gè)Monitor組成的小集群,它們通過Paxos同步數(shù)據(jù),用來保存OSD的元數(shù)據(jù)。負(fù)責(zé)監(jiān)控整個(gè)Ceph集群運(yùn)行的Map視圖(如OSD Map、Monitor Map、PG Map和CRUSH Map),維護(hù)集群的健康狀態(tài),維護(hù)展示集群狀態(tài)的各種圖表,管理集群客戶端認(rèn)證與授權(quán)。
- MDS——MDS全稱Ceph Metadata Server,是CephFS服務(wù)依賴的元數(shù)據(jù)服務(wù)。負(fù)責(zé)保存文件系統(tǒng)的元數(shù)據(jù),管理目錄結(jié)構(gòu)。對(duì)象存儲(chǔ)和塊設(shè)備存儲(chǔ)不需要元數(shù)據(jù)服務(wù); 如果不使用CephFS可以不安裝。
- Mgr——ceph 官方開發(fā)了 ceph-mgr,主要目標(biāo)實(shí)現(xiàn) ceph 集群的管理,為外界提供統(tǒng)一的入口。例如cephmetrics、zabbix、calamari、prometheus。
Ceph manager守護(hù)進(jìn)程(Ceph -mgr)是在Kraken版本中引入的,它與monitor守護(hù)進(jìn)程一起運(yùn)行,為外部監(jiān)視和管理系統(tǒng)提供額外的監(jiān)視和接口。
- RGW——RGW全稱RADOS gateway,是Ceph對(duì)外提供的對(duì)象存儲(chǔ)服務(wù),接口與S3和Swift兼容。
- CephFS——ceph文件系統(tǒng)提供了一個(gè)符合posix標(biāo)準(zhǔn)的文件系統(tǒng),它使用Ceph存儲(chǔ)集群在文件系統(tǒng)上存儲(chǔ)用戶數(shù)據(jù)。與RBD(塊存儲(chǔ))和RGW(對(duì)象存儲(chǔ))一樣,CephFS服務(wù)也作為librados的本機(jī)接口實(shí)現(xiàn)。
四、Ceph 三種存儲(chǔ)類型
1)塊存儲(chǔ)服務(wù)(RBD)
塊是一個(gè)字節(jié)序列(通常為 512)。 基于塊的存儲(chǔ)接口是一種成熟且常見的數(shù)據(jù)存儲(chǔ)方式 介質(zhì)包括硬盤、固態(tài)硬盤、CD、軟盤,甚至磁帶。 塊設(shè)備接口的無處不在非常適合交互 具有包括 Ceph 在內(nèi)的海量數(shù)據(jù)存儲(chǔ)。Ceph 數(shù)據(jù)塊設(shè)備可精簡(jiǎn)配置、可調(diào)整大小,并按條帶方式存儲(chǔ)數(shù)據(jù)在多個(gè) OSD。
優(yōu)點(diǎn):
- 通過Raid與LVM等手段,對(duì)數(shù)據(jù)提供了保護(hù);
- 多塊廉價(jià)的硬盤組合起來,提高容量;
- 多塊磁盤組合出來的邏輯盤,提升讀寫效率;
缺點(diǎn):
- 采用SAN架構(gòu)組網(wǎng)時(shí),光纖交換機(jī),造價(jià)成本高;
- 主機(jī)之間無法共享數(shù)據(jù);
使用場(chǎng)景:
- docker容器、虛擬機(jī)磁盤存儲(chǔ)分配;
- 日志存儲(chǔ);
- 文件存儲(chǔ);
總結(jié): 一個(gè)Linux內(nèi)核級(jí)的塊設(shè)備,允許用戶像任何其他Linux塊設(shè)備一樣訪問Ceph。
2)文件系統(tǒng)存儲(chǔ)服務(wù)(CephFS)
Ceph 文件系統(tǒng)(CephFS),是建立在 Ceph 分布式對(duì)象存儲(chǔ)的頂部, CephFS提供了最先進(jìn)的、多用途、高度可用且高性能的文件存儲(chǔ)在各種場(chǎng)景應(yīng)用,包括共享home目錄、FTP和NFS 共享存儲(chǔ)等等。
Ceph有了塊存儲(chǔ),為什么還需要文件系統(tǒng)接口呢?
主要是因?yàn)閼?yīng)用場(chǎng)景的不同,Ceph的塊設(shè)備具有優(yōu)異的讀寫性能,但不能多處掛載同時(shí)讀寫,目前主要用在OpenStack上作為虛擬磁盤,而Ceph的文件系統(tǒng)接口讀寫性能較塊設(shè)備接口差,但具有優(yōu)異的 共享性。
優(yōu)點(diǎn):
- 造價(jià)低,隨便一臺(tái)機(jī)器就可以了。
- 方便文件共享。
缺點(diǎn):
- 讀寫速率低。
- 傳輸速率慢。
使用場(chǎng)景:
- 日志存儲(chǔ)。
- 有目錄結(jié)構(gòu)的文件存儲(chǔ)。
3)對(duì)象存儲(chǔ)服務(wù)(RGW)
Ceph 對(duì)象網(wǎng)關(guān) 是構(gòu)建在 librados.它在應(yīng)用程序和 Ceph 之間提供了一個(gè) RESTful 網(wǎng)關(guān)。 存儲(chǔ)集群。 Ceph 對(duì)象存儲(chǔ) 支持兩種接口:
- S3 兼容: 通過接口提供對(duì)象存儲(chǔ)功能 與 Amazon S3 RESTful API 的大部分子集兼容。
- 快速兼容: 通過接口提供對(duì)象存儲(chǔ)功能 與 OpenStack Swift API 的一大塊子集兼容。
優(yōu)點(diǎn):
- 具備塊存儲(chǔ)的讀寫高速。
- 具備文件存儲(chǔ)的共享等特性。
使用場(chǎng)景:
- 圖片存儲(chǔ)。
- 視頻存儲(chǔ)。
五、Ceph版本發(fā)行生命周期
Ceph從Nautilus版本(14.2.0)開始,每年都會(huì)有一個(gè)新的穩(wěn)定版發(fā)行,預(yù)計(jì)是每年的3月份發(fā)布,每年的新版本都會(huì)起一個(gè)新的名稱(例如,“Mimic”)和一個(gè)主版本號(hào)(例如,13 代表 Mimic,因?yàn)椤癕”是字母表的第 13 個(gè)字母)。
版本號(hào)的格式為x.y.z,x表示發(fā)布周期(例如,13 代表 Mimic,17代表Quincy),y表示發(fā)布版本類型,即
- x.0.z - y等于0,表示開發(fā)版本
- x.1.z - y等于1,表示發(fā)布候選版本(用于測(cè)試集群)
- x.2.z - y等于2,表示穩(wěn)定/錯(cuò)誤修復(fù)版本(針對(duì)用戶)
在Octopus版本后使用cephadm來部署ceph集群,如果使用cephadm部署,在后期新的版本升級(jí)時(shí),可以做到完全自動(dòng)化,并可以通過ceph -W cephadm查看升級(jí)進(jìn)度,升級(jí)完成后,無法降級(jí),升級(jí)時(shí)請(qǐng)不要跨版本升級(jí),例如:當(dāng)前使用Octopus升級(jí)到Quincy,要先把Octopus升級(jí)到Pacific,然后在升級(jí)至Quincy,這是最穩(wěn)妥的方式。
穩(wěn)定版本的生命周期在第一個(gè)發(fā)布月份后,大約2年時(shí)間將停止該版本的更新維護(hù),具體版本發(fā)布時(shí)間見下表。
六、Ceph 集群部署
Ceph的部署工具:
- ceph-deploy:官方的部署工具,不再積極維護(hù)ceph-deploy。它不支持RHEL8,CentOS 8或更新的操作系統(tǒng)。
- ceph-ansible:紅帽的部署工具
- ceph-chef:利用chef進(jìn)行自動(dòng)部署Ceph的工具
- puppet-ceph:puppet的ceph模塊
- cephadm——cephadm 僅支援 Octopus 及更新版本(推薦)。
1)集群部署規(guī)劃
IP | hostname | 角色 | 磁盤 | 操作系統(tǒng) |
192.168.182.130 | local-168-182-130 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
192.168.182.131 | local-168-182-131 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
192.168.182.132 | local-168-182-132 | monitor,mgr,rgw,mds,osd | 2*20G | centos7 |
- monitor:Ceph監(jiān)視管理節(jié)點(diǎn),承擔(dān)Ceph集群重要的管理任務(wù),一般需要3或5個(gè)節(jié)點(diǎn)。
- mgr: Ceph 集群管理節(jié)點(diǎn)(manager),為外界提供統(tǒng)一的入口。
- rgw: Ceph對(duì)象網(wǎng)關(guān),是一種服務(wù),使客戶端能夠利用標(biāo)準(zhǔn)對(duì)象存儲(chǔ)API來訪問Ceph集群。
- mds:Ceph元數(shù)據(jù)服務(wù)器,MetaData Server,主要保存的文件系統(tǒng)服務(wù)的元數(shù)據(jù),使用文件存儲(chǔ)時(shí)才需要該組件。
- osd:Ceph存儲(chǔ)節(jié)點(diǎn)Object Storage Daemon,實(shí)際負(fù)責(zé)數(shù)據(jù)存儲(chǔ)的節(jié)點(diǎn)。
2)前期準(zhǔn)備
- 關(guān)閉filewalld服務(wù)
- 2、關(guān)閉并禁用SELinux
- 3、配置hosts
- 4、ssh免密配置
- 4、配置時(shí)間同步
3)添加磁盤
如果添加完磁盤,看不到,可以執(zhí)行以下命令:
4)安裝docker :(所有節(jié)點(diǎn)操作,包括新增)
5)安裝cephadm
下載cephadm腳本: (只在主節(jié)點(diǎn)操作)
6)初始化 ceph 集群
當(dāng)前節(jié)點(diǎn)安裝 mon、 mgr 角色,部署 prometheus、 grafana、 alertmanager、 node-exporter等服務(wù)。
根據(jù)提示可知,有個(gè)web地址:https://ip:8443/,這里的截圖是部署完之后的截圖。
通過ceph命令查看集群狀態(tài)
7)添加新節(jié)點(diǎn)
在新主機(jī)的根用戶authorized_keys文件中安裝群集的公共SSH密鑰 :
配置新節(jié)點(diǎn)
8)部署監(jiān)視器(monitor)
9)部署 osd
存儲(chǔ)設(shè)備清單可以顯示為:
可用存儲(chǔ)設(shè)備的條件:
- 設(shè)備必須沒有分區(qū)。
- 設(shè)備不得具有任何LVM狀態(tài)。
- 不得安裝設(shè)備。
- 該設(shè)備不得包含文件系統(tǒng)。
- 該設(shè)備不得包含Ceph BlueStore OSD。
- 設(shè)備必須大于5 GB。
創(chuàng)建osd的方式:
刪除OSD節(jié)點(diǎn):(安全)
10)部署mds(cephFS元數(shù)據(jù)守護(hù)程序)
11)部署RGW
查看集群狀態(tài)