ceph1--ceph基础/搭建ceph高可用集群
一、ceph基礎
0、存儲分類
單機存儲
SCSI/IDE/SATA//SAS/USB/PCI-E/SSD/M.2NVME協(xié)議(提升性能)
https://item.jd.com/49620677951.html#crumb-wrap
單機存儲需考慮以下問題:磁盤空間問題、IO問題、擴容問題、高可用問題等
網(wǎng)絡存儲(帶文件系統(tǒng))
NFS/Samba/NAS(Network Attached Storage:網(wǎng)絡附屬存儲)/SAN:(Storage Area Network,存儲區(qū)域網(wǎng)絡)
商業(yè)存儲:
商業(yè)解決方案-EMC、NetAPP、戴爾、華為、浪潮
去IOE:IBM、oracle、EMC
分布式存儲:
Ceph、TFS、FastDFS、MogileFS、MooseFS、GlusterFS
(軟件定義的存儲Software Defined Storage SDS):
https://www.vmware.com/cn/products/software-defined-storage.html
對比說明(表格)
有狀態(tài)集群數(shù)據(jù)讀寫特性:
數(shù)據(jù)分為讀數(shù)據(jù)和寫數(shù)據(jù),讀可以在任何一個節(jié)點讀,但是寫只能寫在特定的節(jié)點,如Redis的master、zookeeper的leader、MySQL的master等場景。
分布式存儲數(shù)據(jù)特點:
數(shù)據(jù)分為數(shù)據(jù)和元數(shù)據(jù):
元數(shù)據(jù)即是文件的屬性信息(文件名、權限(屬主、屬組)、大小、時間戳等),在分布式存儲中當客戶端或者應用程序產(chǎn)生的客戶端數(shù)據(jù)被寫入到分布式存儲系統(tǒng)的時候,會有一個服務(Name Node)提供文件元數(shù)據(jù)的路由功能,即告訴應用程序去哪個服務器去請求文件內(nèi)容,然后再有(Data Node)提供數(shù)據(jù)的讀寫請求及數(shù)據(jù)的高可用功能。
1、三種存儲簡介:
參考阿里云的解釋
https://www.aliyun.com/product/oss
參考紅帽的解釋:
https://www.redhat.com/zh/topics/data-storage/file-block-object-storage
文件存儲會以文件和文件夾的層次結構來整理和呈現(xiàn)數(shù)據(jù);
塊存儲會將數(shù)據(jù)拆分到任意劃分且大小相同的卷中;
對象存儲會管理數(shù)據(jù)并將其鏈接至關聯(lián)的元數(shù)據(jù)。
(1)塊存儲:
需要格式化,將文件直接保存到磁盤上。
(2)文件存儲:
提供數(shù)據(jù)存儲的接口,是由操作系統(tǒng)針對塊存儲的應用,即由操作系統(tǒng)提供存儲接口,應用程序通過調(diào)用操作系統(tǒng)將文件保存到塊存儲進行持久化。
(3)對象存儲:
也稱為基于對象的存儲,其中的文件被拆分成多個部分并散布在多個存儲服務器, 在對象存儲中,數(shù)據(jù)會被分解為稱為“對象”的離散單元,并保存在單個存儲庫中,而不是 作為文件夾中的文件或服務器上的塊來保存,對象存儲需要一個簡單的 HTTP 應用編程接 口 (API),以供大多數(shù)客戶端(各種語言)使用。
2、ceph簡介:
Ceph是一個開源的分布式存儲系統(tǒng),同時支持對象存儲、塊設備、文件系統(tǒng)。
ceph是一個對象(object)式存儲系統(tǒng),它把每一個待管理的數(shù)據(jù)流(文件等數(shù)據(jù))切分為一到多個固定大小(默認4兆)的對象數(shù)據(jù),并以其為原子單元(原子是構成元素的最小單元)完成數(shù)據(jù)的讀寫。
對象數(shù)據(jù)的底層存儲服務是由多個存儲主機(host)組成的存儲集群,該集群也被稱之為RADOS(reliable automatic distributed object store)存儲集群,即可靠的、自動化的、分布式的對象存儲系統(tǒng)。
librados是RADOS存儲集群的APl,支持C/C++/JAVA/python/ruby/php/go等編程語言客戶端。
(1)重要概念:
對象訪問接口(編程訪問)
LibRADOS:允許直接訪問統(tǒng)一存儲池(RADOS)的函數(shù)庫,支持C、C++、Java、Python、Rbuy、PHP等多種語言!
對象訪問網(wǎng)關(應用程序訪問)
RADOS SateWay:基于HTTP的對象訪問網(wǎng)關,符合REST風格兼容S3和Swift協(xié)議
塊協(xié)議轉換(虛擬機、iSCSI)
RBD:可擴展、高可用的塊設備,在內(nèi)核級別支持QEMU/KVM
文件協(xié)議轉換(客戶端)
Ceph FS:支持標準POSIX協(xié)議的分布式文件系統(tǒng),支持linux內(nèi)核客戶端和FUSE兩種訪問方式
統(tǒng)一存儲池:
RADOS(Reliable,Autonomic Distributed Object Store):
一個高可用、智能化的分布式對象存儲系統(tǒng),支持自修復、自管理等底層數(shù)據(jù)管理功能
(2)ceph的發(fā)展史:
Ceph項目起源于于2003年在加州大學圣克魯茲分校攻讀博士期間的研究課題(Lustre環(huán)境中的可擴展問題)。
Lustre是一種平行分布式文件系統(tǒng),早在1999年,由皮特·布拉姆(Peter Braam)創(chuàng)建的集群文件系統(tǒng)公司(Cluster File Systems lnc)開始研發(fā),并于2003年發(fā)布Lustre1.0版本。
2007年Sage Weil(塞奇·威爾)畢業(yè)后,Sage Weil繼續(xù)全職從事Ceph工作,
2010年3月19日,Linus Torvalds將Ceph客戶端合并到2010年5月16日發(fā)布的Linux內(nèi)核版本2.6.34,
2012年Sage Weil創(chuàng)建了Inktank Storage用于為Ceph提供專業(yè)服務和支持,
2014年4月Redhat以1.75億美元收購inktank公司并開源.
(3)ceph的設計思想:
ceph的設計旨在實現(xiàn)以下目標:
每一組件皆可擴展;
無單點故障;
基于軟件(而非專用設備)并且開源(無供應商鎖定);
在現(xiàn)有的廉價硬件上運行;
盡可能自動管理,減少用戶干預;
(4)ceph的版本歷史:
https://docs.ceph.com/en/latest/releases/index.html
ceph的第一個版本是發(fā)布于2008年1月的0.1,直到2015年4月的0.94,后期命名規(guī)則發(fā)生改變
x.0.z-開發(fā)版(給早期測試者和勇士們)
x.1.z-候選版(用于測試集群、高手們)
x.2.z-穩(wěn)定、修正版(給用戶們)
x從9開始算起
到2017年底,Ceph項目都采取每年發(fā)布兩個穩(wěn)定版本的做法,
從Jewel版到Nautilus之前,Ceph經(jīng)歷過一段時間的每間隔9個月發(fā)布一個新版本,
Nautilus版本開始改為每年春季3月份發(fā)布一個穩(wěn)定版本,并提供長達26個月左右的后期版本更新.
3、ceph組件及功能:
https://docs.ceph.com/en/latest/start/intro/
ceph術語:
http://docs.ceph.org.cn/glossary/
一個 Ceph 存儲集群至少需要一個 Ceph Monitor、Ceph Manager 和 Ceph OSD。運行 Ceph 文件系統(tǒng)客戶端時也需要 Ceph MDS元數(shù)據(jù)服務器。
OSDs(對象存儲守護程序):
(Object Storage Daemon):每一塊磁盤都是一個osd,一個主機由一個或多個osd組成。
(Ceph OSD, ceph-osd)存儲數(shù)據(jù),處理數(shù)據(jù)復制、恢復、重新平衡,并通過檢查其他 Ceph OSD 守護進程的心跳來向 Ceph 監(jiān)視器和管理器提供一些監(jiān)視信息。冗余和高可用性通常需要至少三個 Ceph OSD。
moniters(ceph監(jiān)視器):
( ceph-mon) 維護集群狀態(tài)的映射,(比如ceph集群中有多少存儲池、每個存儲池有多少PG以及存儲池和PG的映射關系等),包括監(jiān)視器映射、管理器映射、OSD 映射、MDS 映射和 CRUSH 映射。這些映射是 Ceph 守護進程相互協(xié)調(diào)所需的關鍵集群狀態(tài)。監(jiān)視器還負責管理守護進程和客戶端之間的身份驗證。冗余和高可用性通常需要至少三個監(jiān)視器。
managers(ceph管理器):
( ceph-mgr) 負責跟蹤運行時指標和 Ceph 集群的當前狀態(tài),包括存儲利用率、當前性能指標和系統(tǒng)負載。Ceph Manager 守護進程還托管基于 python 的模塊來管理和公開 Ceph 集群信息,包括基于 Web 的Ceph Dashboard和 REST API。高可用性通常需要至少兩個管理器。
MDSs(ceph元數(shù)據(jù)服務器):
(MDS ceph-mds) 代表Ceph 文件系統(tǒng)存儲元數(shù)據(jù)(即 Ceph 塊設備和 Ceph 對象存儲不使用 MDS)。Ceph 元數(shù)據(jù)服務器允許 POSIX 文件系統(tǒng)用戶執(zhí)行基本命令(如 ls、find等),而不會給 Ceph 存儲集群帶來巨大負擔。
RADOS(ceph存儲集群)
(reliable automatic distributed object store),由多個host組成的存儲集群,即可靠的、自動化的、分布式的 對象存儲系統(tǒng)。
Ceph的管理節(jié)點–命令行工具:
1.ceph的常用管理接口是一組命令行工具程序,例如rados、ceph、rbd等命令,ceph管理員可以從某個特定的ceph-mon節(jié)點執(zhí)行管理操作。
2.推薦使用部署專用的管理節(jié)點對ceph進行配置管理、升級與后期維護,方便后期權限管理,管理節(jié)點的權限只對管理人員開放,可以避免一些不必要的誤操作的發(fā)生。
4、ceph邏輯架構
Pool(存儲池):
存儲池、分區(qū),存儲池的大小取決于底層的存儲空間。
PG(placement group):
一個pool內(nèi)部可以有多個PG存在,pool和PG都是抽象的邏輯概念,一個pool中有多少個PG可以通過公式計算。
數(shù)據(jù)存儲過程:
pool:存儲池,必須先創(chuàng)建pool才能向ceph中寫數(shù)據(jù),多個,取決于底層的存儲空間,
PG:每個pool上多個PG,數(shù)據(jù)保存到PG上
OSD:每個主機上的每塊磁盤都是一個osd,多個,數(shù)據(jù)通過PG保存到OSD中,數(shù)據(jù)寫到主OSD再同步到從OSD實現(xiàn)數(shù)據(jù)的高可用性
存儲文件過程:
第一步:計算文件到對象的映射:
計算文件到對象的映射,假如file為客戶端要讀寫的文件,得到oid(object id)=ino+ono
ino:inode number(INO),File 的元數(shù)據(jù)序列號,File的唯一id。
ono:object number(ONO),File切分產(chǎn)生的某個object的序號,默認以4M切分一個塊大小。
第二步:通過hash算法計算出文件對應的pool中的PG:
通過一致性HASH計算Object到PG,Object->PG映射hash(oid)&mask->pgid
第三步:通過CRUSH把對象映射到PG中的OSD
通過CRUSH算法計算PG到OSD,PG->OSD映射:[CRUSH(pgid)->(osd1,osd2,osd3)]
第四步:PG中的主OSD將對象寫入到硬盤
第五步:主OSD將數(shù)據(jù)同步給備份OSD,并等待備份OSD返回確認
第六步:主OSD將寫入完成返回給客戶端
5、ceph元數(shù)據(jù)保存方式:
Ceph對象數(shù)據(jù)的元數(shù)據(jù)信息放在哪里呢?對象數(shù)據(jù)的元數(shù)據(jù)以key-value的形式存在,在RADOS 中有兩種實現(xiàn):xattrs和omap:
ceph 可選后端支持多種存儲引擎,比如filestore,bluestore,kvstore,memstore,ceph使用bluestore存儲對象數(shù)據(jù)的元數(shù)據(jù)信息。
xattrs(擴展屬性):
是將元數(shù)據(jù)保存在對象對應文件的擴展屬性中并保存到系統(tǒng)磁盤上,這要求支持對象存儲的本地文件系統(tǒng)(一般是XFS)支持擴展屬性。
omap(object map對象映射):
是將元數(shù)據(jù)保存在本地文件系統(tǒng)之外的獨立key-value存儲系統(tǒng)中,在使用filestore時是leveldb,在使用bluestore時是rocksdb,
由于filestore存在功能問題(需要將磁盤格式化為XFS格式)及元數(shù)據(jù)高可用問題等問題,因此在目前ceph主要使用bluestore。
filestore與leveldb:
ceph 早期基于filestore使用google的levelDB保存對象的元數(shù)據(jù),LevelDb是一個持久化存儲的KV系統(tǒng),和Redis這種內(nèi)存型的KV系統(tǒng)不同,
leveldb不會像Redis一樣將數(shù)據(jù)放在內(nèi)存從而占用大量的內(nèi)存空間,而是將大部分數(shù)據(jù)存儲到磁盤上,但是需要把磁盤上的leveldb空間格式化為文件系統(tǒng)(XFS).
FileStore將數(shù)據(jù)保存到與Posix兼容的文件系統(tǒng)(例如Btrfs、XFS、Ext4)。在Ceph后端使用傳統(tǒng)的Linux文件系統(tǒng)盡管提供了一些好處,但也有代價,
如性能、對象屬性與磁盤本地文件系統(tǒng)屬性匹配存在限制等。
bluestore與rocksdb:
由于levelDB依然需要需要磁盤文件系統(tǒng)的支持,后期facebok對levelDB進行改進為RocksDB:https://github.com/facebook/rocksdb,RocksDB將對象數(shù)據(jù)的元數(shù)據(jù)保存在RocksDB,
但是RocksDB的數(shù)據(jù)又放在哪里呢?放在內(nèi)存怕丟失,放在本地磁盤但是解決不了高可用,ceph對象數(shù)據(jù)放在了每個OSD中,那么就在在當前OSD中劃分出一部分空間,
格式化為BlueFS文件系統(tǒng)用于保存RocksDB中的元數(shù)據(jù)信息(稱為Bluestore),并實現(xiàn)元數(shù)據(jù)的高可用,BlueStore最大的特點是構建在裸磁盤設備之上,
并且對諸如SSD等新的存儲設備做了很多優(yōu)化工作。
對全SSD及全NVMe SSD閃存適配
繞過本地文件系統(tǒng)層,直接管理裸設備,縮短IO路徑
嚴格分離元數(shù)據(jù)和數(shù)據(jù),提高索引效率
使用KV索引,解決文件系統(tǒng)目錄結構遍歷效率低的問題
支持多種設備類型
解決日志“雙寫”問題
期望帶來至少2倍的寫性能提升和同等讀性能
增加數(shù)據(jù)校驗及數(shù)據(jù)壓縮等功能
RocksDB通過中間層BlueRocksDB訪問文件系統(tǒng)的接口。這個文件系統(tǒng)與傳統(tǒng)的Linux文件系統(tǒng)(例如Ext4和XFS)是不同的,它不是在VFS下面的通用文件系統(tǒng),
而是一個用戶態(tài)的邏輯。BlueFs通過函數(shù)接口(APl,非POSIX)的方式為BlueRocksDB提供類似文件系統(tǒng)的能力
BlueStore的邏輯架構如上圖所示,模塊的劃分都還比較清晰,我們來看下各模塊的作用:
Allocator:負責裸設備的空間管理分配。
RocksDB:rocksdb是facebook 基于leveldb開發(fā)的一款kv數(shù)據(jù)庫,BlueStore將元數(shù)據(jù)全部存放至RocksDB中,這些元數(shù)據(jù)包括存儲預寫式日志、數(shù)據(jù)對象元數(shù)據(jù)、
Ceph的omap數(shù)據(jù)信息、以及分配器的元數(shù)據(jù)。
BlueRocksEnv:這是RocksDB與BlueFS交互的接口;RocksDB提供了文件操作的接口EnvWrapper(Env封裝器),可以通過繼承實現(xiàn)該接口來自定義底層的讀寫操作,
BlueRocksEnv就是繼承自EnvWrapper 實現(xiàn)對BlueFS的讀寫。
BlueFS:BlueFS是BlueStore針對RocksDB開發(fā)的輕量級文件系統(tǒng),用于存放RocksDB產(chǎn)生的.sst和.log等文件。
BlockDecive:BlueStore拋棄了傳統(tǒng)的ext4、xfs文件系統(tǒng),使用直接管理裸盤的方式;BlueStore支持同時使用多種不同類型的設備,
在邏輯上BlueStore 將存儲空間劃分為三層:慢速(Slow)空間、高速(DB)空間、超高速(WAL)空間,不同的空間可以指定使用不同的設備類型,
當然也可使用同一塊設備。
BlueStore的設計考慮了FileStore中存在的一些硬傷,拋棄了傳統(tǒng)的文件系統(tǒng)直接管理裸設備,縮短了10路徑,同時采用ROW的方式,避免了日志雙寫的問題,
在寫入性能上有了極大的提高。
6、ceph CRUSH算法簡介:
Controllers replication under scalable hashing#可控的、可復制的、可伸縮的一致性hash算法。
Ceph 使用CURSH算法來存放和管理數(shù)據(jù),它是Ceph的智能數(shù)據(jù)分發(fā)機制。Ceph 使用CRUSH算法來準確計算數(shù)據(jù)應該被保存到哪里,以及應該從哪里讀取,和保存元數(shù)據(jù)不同的是,
CRUSH按需計算出元數(shù)據(jù),因此它就消除了對中心式的服務器/網(wǎng)關的需求,它使得Ceph客戶端能夠計算出元數(shù)據(jù),該過程也稱為CRUSH查找,然后和OSD直接通信。
1.如果是把對象直接映射到OSD之上會導致對象與OSD的對應關系過于緊密和耦合,當OSD由于故障發(fā)生變更時將會對整個ceph集群產(chǎn)生影響。
2.于是ceph將一個對象映射到RADOS集群的時候分為兩步走:
首先使用一致性hash 算法將對象名稱映射到PG2.7,然后將PGID基于CRUSH算法映射到OSD即可查到對象
3.以上兩個過程都是以”實時計算”的方式完成,而沒有使用傳統(tǒng)的查詢數(shù)據(jù)與塊設備的對應表的方式,這樣有效避免了組件的"中心化”問題,也解決了查詢性能和冗余問題。
使得ceph集群擴展不再受查詢的性能限制。
4.這個實時計算操作使用的就是CRUSH算法
Controllers replication under scalable hashing#可控的、可復制的、可伸縮的一致性hash算法。
CRUSH是一種分布式算法,類似于一致性hash算法,用于為RADOS存儲集群控制數(shù)據(jù)的分配。
二、ceph集群部署
建議:以下操作先用root用戶裝好,之后在再授權給普通用戶管理
版本歷史:
https://docs.ceph.com/en/latest/releases/index.html
https://docs.ceph.com/en/latest/releases/octopus/ #ceph 15 即 octopus 版本支持的系統(tǒng)
部署:
https://github.com/ceph/ceph
https://docs.ceph.com/en/quincy/install/ #ceph的多種安裝方式,官方推薦cephadm和rook,均適用于較新版本,本次采用ceph-deploy進行快速部署。
https://docs.ceph.com/projects/ceph-deploy/en/latest/ #使用ceph-deploy部署ceph
http://docs.ceph.org.cn/install/manual-deployment/ #簡要部署過程
0、環(huán)境準備:
服務器準備:ubuntu1804 2c2g 40G net網(wǎng)卡(eth0)
node五塊磁盤sda 100G sdb sdc sdd sde 30G
(1)修改主機名
(2)設置靜態(tài)ip
(3)配置靜態(tài)解析
(4)配置源文件/導入key文件
(5)創(chuàng)建 ceph 用戶
(6)配置免秘鑰登錄
(7)時間同步
1、安裝 ceph-deploy 部署工具
[root@ceph-deploy ~]# apt-cache madison ceph-deploy [root@ceph-deploy ~]# apt install ceph-deploy -y #或是基于python安裝:#pip install ceph-deploy [root@ceph-deploy ~]# ceph-deploy --help [root@ceph-deploy ~]# mkdir /home/ceph/ceph-cluster #保存當前集群的初始化配置信息 [root@ceph-deploy ~]# cd /home/ceph/ceph-cluster2、初始化 mon 節(jié)點
#全部安裝 Python2 # apt install python2.7 -y # ln -sv /usr/bin/python2.7 /usr/bin/python2 [root@ceph-deploy ceph-cluster]# ceph-deploy new --public-network 192.168.0.0/16 ceph-mon1 #此子命令用于生成一個工作ceph.conf文件,該文件將包含用于配置節(jié)點和/或?qū)⑺鼈兲砑拥郊旱闹匾畔ⅰ?/span> [root@ceph-deploy ceph-cluster]# ll -rw-rw-r-- 1 ceph ceph 263 Oct 21 14:24 ceph.conf #自動生成的配置文件 -rw-rw-r-- 1 ceph ceph 7096 Oct 21 14:24 ceph-deploy-ceph.log #初始化日志 -rw------- 1 ceph ceph 73 Oct 21 14:24 ceph.mon.keyring #用于 ceph mon 節(jié)點內(nèi)部通訊認證的秘鑰環(huán)文件[root@ceph-mon1 ~]# apt install ceph-mon -y [root@ceph-deploy ceph-cluster]# ceph-deploy mon create-initial #初始化 [root@ceph-deploy ceph-cluster]# ll -rw------- 1 root root 113 Aug 26 17:22 ceph.bootstrap-mds.keyring -rw------- 1 root root 113 Aug 26 17:22 ceph.bootstrap-mgr.keyring -rw------- 1 root root 113 Aug 26 17:22 ceph.bootstrap-osd.keyring -rw------- 1 root root 113 Aug 26 17:22 ceph.bootstrap-rgw.keyring -rw------- 1 root root 151 Aug 26 17:22 ceph.client.admin.keyring #驗證 [root@ceph-mon1 ~]# ps -ef | grep ceph-mon ceph 23039 1 0 17:22 ? 00:00:00 /usr/bin/ceph-mon -f --cluster ceph --id ceph-mon1 --setuser ceph --setgroup ceph root 23527 21512 0 17:25 pts/0 00:00:00 grep --color=auto ceph-mon#擴展 ceph-mon 節(jié)點: #Ceph-mon 是原生具備自選舉以實現(xiàn)高可用機制的 ceph 服務,節(jié)點數(shù)量通常是奇數(shù)。 root@ceph-mon2:~# apt install ceph-mon root@ceph-mon3:~# apt install ceph-mon [ceph@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon2 #把某個監(jiān)視器添加到現(xiàn)有集群 [ceph@ceph-deploy ceph-cluster]$ ceph-deploy mon add ceph-mon3 #驗證 ceph-mon 狀態(tài) [ceph@ceph-deploy ceph-cluster]$ ceph quorum_status [ceph@ceph-deploy ceph-cluster]$ ceph quorum_status --format json-pretty [ceph@ceph-deploy ceph-cluster]$ ceph -smon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 4m)3、初始化 note 存儲節(jié)點
[root@ceph-deploy ceph-cluster]# ceph-deploy install --no-adjust-repos --nogpgcheck ceph-node1 ceph-node2 ceph-node3 ceph-node4#分發(fā) admin 秘鑰 [root@ceph-deploy ~]# apt install ceph-common -y [root@ceph-node ~]# apt install ceph-common -y [root@ceph-deploy ceph-cluster]# ceph-deploy admin ceph-node1 ceph-node2 ceph-node3 ceph-node4 #將集群配置和管理員密鑰環(huán)放在遠程nodes節(jié)點上。是他們成為集群管理節(jié)點。 #note節(jié)點驗證秘鑰 [root@ceph-node ~]# ll /etc/ceph/ -rw------- 1 root root 151 Aug 26 17:39 ceph.client.admin.keyring -rw-r--r-- 1 root root 347 Aug 26 17:39 ceph.conf -rw-r--r-- 1 root root 92 Jul 8 22:17 rbdmap -rw------- 1 root root 0 Aug 26 17:39 tmpbl1PLS #如果需要 ceph 用戶也能執(zhí)行 ceph 命令,那么就需要對 ceph 用戶進行授權 [root@ceph-deploy ~]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring [root@ceph-node ~]# setfacl -m u:ceph:rw /etc/ceph/ceph.client.admin.keyring4、初始化 ceph-mgr 節(jié)點:
[root@ceph-mgr1 ~]#apt install ceph-mgr -y[root@ceph-deploy ceph-cluster]# ceph-deploy mgr --help [root@ceph-deploy ceph-cluster]# ceph-deploy mgr create ceph-mgr1 #驗證 ceph-mgr 節(jié)點: [root@ceph-mgr1 ~]# ps -ef | grep ceph root 17155 1 0 16:48 ? 00:00:00 /usr/bin/python3.6 /usr/bin/ceph-crash ceph 28950 1 9 18:09 ? 00:00:11 /usr/bin/ceph-mgr -f --cluster ceph --id ceph-mgr1 --setuser ceph --setgroup ceph root 29116 15145 0 18:11 pts/0 00:00:00 grep --color=auto ceph#擴展 mgr 節(jié)點: root@ceph-mgr2:~#apt install ceph-mgr [ceph@ceph-deploy ceph-cluster]$ ceph-deploy mgr create ceph-mgr2 [ceph@ceph-deploy ceph-cluster]$ ceph-deploy admin ceph-mgr2 #同步配置文件到 ceph-mg2 節(jié)點 #驗證: [root@ceph-deploy ceph-cluster]# ceph -smgr: ceph-mgr1(active, since 15h), standbys: ceph-mgr25、ceph-deploy 管理 ceph 集群
#在 ceph-deploy 節(jié)點配置一下系統(tǒng)環(huán)境,以方便后期可以執(zhí)行 ceph 管理命令 [root@ceph-deploy ceph-cluster]# ceph-deploy admin ceph-deploy #推送證書給自己 #測試ceph命令 [root@ceph-deploy ceph-cluster]# ceph -s [root@ceph-deploy ceph-cluster]# ceph versions [root@ceph-deploy ceph-cluster]# ceph config set mon auth_allow_insecure_global_id_reclaim false #禁用不安全模式!6、準備 OSD 節(jié)點
#擦除磁盤之前通過 deploy 節(jié)點對 node 節(jié)點執(zhí)行安裝 ceph 基本運行環(huán)境 [root@ceph-deploy ceph-cluster]# ceph-deploy install --release pacific ceph-node1 [root@ceph-deploy ceph-cluster]# ceph-deploy install --release pacific ceph-node2 [root@ceph-deploy ceph-cluster]# ceph-deploy install --release pacific ceph-node3 [root@ceph-deploy ceph-cluster]# ceph-deploy install --release pacific ceph-node4 #node 節(jié)點可選刪除不需要的包 [root@ceph-node ~]# apt autoremove #列出遠端存儲 node 節(jié)點的磁盤信息 [root@ceph-deploy ceph-cluster]# ceph-deploy disk list ceph-node1 #使用 ceph-deploy disk zap 擦除各 ceph node 的 ceph 數(shù)據(jù)磁盤: [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node1 /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node1 /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node1 /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node1 /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node2 /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node2 /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node2 /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node2 /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node3 /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node3 /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node3 /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node3 /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node4 /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node4 /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node4 /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy disk zap ceph-node4 /dev/sde#在遠程節(jié)點上創(chuàng)建 OSD: [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node1 --data /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node1 --data /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node1 --data /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node1 --data /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node2 --data /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node2 --data /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node2 --data /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node2 --data /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node3 --data /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node3 --data /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node3 --data /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node3 --data /dev/sde[root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node4 --data /dev/sdb [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node4 --data /dev/sdc [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node4 --data /dev/sdd [root@ceph-deploy ceph-cluster]# ceph-deploy osd create ceph-node4 --data /dev/sde#驗證,默認開機會自動重啟 [root@ceph-deploy ceph-cluster]# ceph -s osd: 20 osds: 20 up (since 39s), 20 in (since 49s) [root@ceph-node ~]# ps -ef | grep osd ceph 1299 1 0 19:52 ? 00:00:02 /usr/bin/ceph-osd -f --cluster ceph --id 1 --setuser ceph --setgroup ceph ceph 1300 1 0 19:52 ? 00:00:02 /usr/bin/ceph-osd -f --cluster ceph --id 0 --setuser ceph --setgroup ceph ceph 1301 1 0 19:52 ? 00:00:02 /usr/bin/ceph-osd -f --cluster ceph --id 2 --setuser ceph --setgroup ceph ceph 4389 1 0 19:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 12 --setuser ceph --setgroup ceph ceph 6040 1 0 19:57 ? 00:00:01 /usr/bin/ceph-osd -f --cluster ceph --id 13 --setuser ceph --setgroup ceph root 6538 2856 0 19:59 pts/0 00:00:00 grep --color=auto osd #設置 OSD 服務自啟動 [root@ceph-node1 ~]# systemctl enable ceph-osd@0 ceph-osd@1 ceph-osd@2 ceph-osd@3 [root@ceph-node2 ~]# systemctl enable ceph-osd@5 ceph-osd@6 ceph-osd@7 ceph-osd@8 [root@ceph-node3 ~]# systemctl enable ceph-osd@10 ceph-osd@11 ceph-osd@12 ceph-osd@13 [root@ceph-node4 ~]# systemctl enable ceph-osd@15 ceph-osd@16 ceph-osd@17 ceph-osd@18#故障移除osd 1. 停用設備:ceph osd out {osd-num} 2. 停止進程:sudo systemctl stop ceph-osd@{osd-num} 3. 移除設備:ceph osd purge {id} --yes-i-really-mean-it 4. 若有 OSD 的配置信息存在于 ceph.conf 配置文件中,管理員在刪除 OSD 之后手動將 其刪除。7、驗證ceph集群:
[root@ceph-deploy ceph-cluster]# ceph health HEALTH_OK [root@ceph-deploy ceph-cluster]# ceph -scluster:id: 20379474-76f1-40e9-bb43-47e8bcd50d3chealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph-mon1,ceph-mon2,ceph-mon3 (age 5m)mgr: ceph-mgr1(active, since 57m), standbys: ceph-mgr2osd: 16 osds: 16 up (since 48m), 16 in (since 49m)data:pools: 1 pools, 1 pgsobjects: 0 objects, 0 Busage: 110 MiB used, 320 GiB / 320 GiB availpgs: 1 active+clean8、測試上傳和下載數(shù)據(jù)
$ ceph -h #一個更底層的命令 $ rados -h # #創(chuàng)建 pool: ceph@ceph-deploy:~$ ceph osd pool create mypool 32 32 #32PG 和 32PGP pool 'mypool' created ceph@ceph-deploy:~$ ceph pg ls-by-pool mypool | awk '{print $1,$2,$15}' #驗證 PG 與 PGP 組合 #驗證 ceph@ceph-deploy:~$ ceph osd pool ls mypool ceph@ceph-deploy:~$ rados lspools mypool #上傳文件 ceph@ceph-deploy:~$ sudo rados put msg1 /var/log/syslog --pool=mypool # 把 messages 文件上傳到 mypool 并指定對象 id 為 msg1 #列出文件 ceph@ceph-deploy:~$ rados ls --pool=mypool #文件信息 ceph@ceph-deploy:~$ ceph osd map mypool msg1 #下載文件 ceph@ceph-deploy:~$ sudo rados get msg1 --pool=mypool /opt/my.txt ceph@ceph-deploy:~$ ll /opt/ #驗證下載文件: ceph@ceph-deploy:~$ head /opt/my.txt #修改文件 ceph@ceph-deploy:~$ sudo rados put msg1 /etc/passwd --pool=mypool ceph@ceph-deploy:~$ sudo rados get msg1 --pool=mypool /opt/2.txt #驗證文件: ceph@ceph-deploy:~$ tail /opt/2.txt #刪除文件 ceph@ceph-deploy:~$ sudo rados rm msg1 --pool=mypool ceph@ceph-deploy:~$ rados ls --pool=mypool總結
以上是生活随笔為你收集整理的ceph1--ceph基础/搭建ceph高可用集群的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: HC-05蓝牙模块简易说明
- 下一篇: rt-n18u usb3.0 linux