Ceph集群里Rbd、Cephfs以及高可用性部署


什么是Ceph FS ?
 
Ceph FS 即 ceph filesystem,可以實現文件系統共享功能,客戶端通過 ceph 協議掛載並使用ceph 集群作為數據存儲服務器。
Ceph FS 需要運行 Meta Data Services(MDS)服務,其守護進程為 ceph-mds,ceph-mds 進程管理與 cephFS 上存儲的文件相關的元數據,並協調對 ceph 存儲集群的訪問。
 
什么是RBD ?
 
RBD(RADOS Block Devices)即為塊存儲的一種,RBD 通過 librbd 庫與 OSD 進行交互,RBD 為KVM 等虛擬化技術和雲服務(如 OpenStack 和 CloudStack)提供高性能和無限可擴展性的存
儲后端,這些系統依賴於 libvirt 和 QEMU 實用程序與 RBD 進行集成,客戶端基於 librbd 庫即可將 RADOS 存儲集群用作塊設備,不過,用於 rbd 的存儲池需要事先啟用 rbd 功能並進
行初始化。
 
 
環境准備:
 
Ceph集群一套、測試端一台(這里采用Centos7)
 
說明:本次部署均采用普通賬號權限
 
 
RBD部署:
 
1.部署Ceph(上期已經部署完成,這里不再演示,直接使用即可)
 
2.登錄到ceph-deploy虛擬機執行ceph-s,查看狀態
 [ root@ceph-deploy ceph-cluster]#ceph -s

 

 

3.准備2個普通賬號,一個用於Ceph FS部署,一個用於Rbd
 
這里我創建2個賬號,gfeng和gfeng-fs
 
 
首先:創建用於rbd的存儲池並進行初始化等操作:

 

 

創建存儲池:
[root@ceph-deploy ceph-cluster]# ceph osd pool create rbd-data1 32 32
pool 'rbd-data1' created
#驗證存儲池:
[ceph@ceph-deploy ceph-cluster]$ ceph osd pool ls

 

在存儲池啟用 rbd:  

[root@ceph-deploy ceph-cluster]# ceph osd pool application enable rbd-data1 rbd 

enabled application 'rbd' on pool 'rbd-data1'

 

初始化 rbd:
[root@ceph-deploy ceph-cluster]# rbd pool init -p rbd-data1

 

4.創建 img 鏡像:

rbd 存儲池並不能直接用於塊設備,而是需要事先在其中按需創建映像(image),並把映 像文件作為塊設備使用。rbd 命令可用於創建、查看及刪除塊設備相在的映像(image), 

以及克隆映像、創建快照、將映像回滾到快照和查看快照等管理操作。

 

 

創建鏡像:

 

#創建兩個鏡像:
# rbd create data-img1 --size 5G --pool rbd-data --image-format 2 --image-feature layering
# rbd create data-img2 --size 10G --pool rbd-data --image-format 2 --image-feature layering

 

驗證鏡像:
#rbd ls --pool rbd-data 
data-img1
data-img2

 

列出鏡像個多信息: 

#rbd ls --pool rbd-data -l 

NAME
SIZE PARENT FMT PROT LOCK
data-img1 5  GiB 2
data-img2 10 GiB 2

 

 
5.准備普通賬號:

創建普通賬戶
[root@ceph-deploy ceph-cluster]#ceph auth add client.gfeng mon 'allow r' osd 'allow rwx pool=rbd-data1'
added key for client.gfeng
驗證用戶信息
[root@ceph-deploy ceph-cluster]# ceph auth get client.gfeng

創建用 keyring 文件
[root@ceph-deploy ceph-cluster]#ceph-authtool -C ceph.client.gfeng.keyring
creating ceph.client.gfeng.keyring

 

 


導出用戶 keyring
[root@ceph-deploy ceph-cluster]# ceph auth get client.gfeng -o ceph.client.gfeng.keyring
exported keyring for client.gfeng

查看生成的文件:

 

 

6.配置客戶端使用 RBD:

在 centos 客戶端掛載 RBD,使用普通賬號 gfeng 及掛載 RBD 並驗證使用。

客戶端要想掛載使用 ceph RBD,需要安裝 ceph 客戶端組件 ceph-common,但是 ceph-common
不在 cenos 的 yum 倉庫,因此需要單獨配置 yum 源。
#配置 yum 源:
# yum install epel-release
# yum install
https://mirrors.aliyun.com/ceph/rpm-octopus/el7/noarch/ceph-release-1-1.el7.noarch.rpm -y

安裝 ceph 客戶端:

 

[root@ceph-client ~]# yum install ceph-common -y

 

7.同步普通用戶認證文件:

[root@ceph-deploy ceph-cluster]#  scp ceph.conf ceph.client.gfeng.keyring root@客戶端IP:/etc/ceph/

 

登錄客戶端驗證權限:

cd /etc/ceph

[root@ceph-client  ceph]#ceph --user gfeng -s #查看集群狀態,看是否能顯示

 

 

 

使用普通用戶權限映射 rbd 

[root@ceph-deploy ceph-cluster]#  rbd --user gfeng -p rbd-data map data-img1

[root@ceph-deploy ceph-cluster]#  rbd --user gfeng -p rbd-data map data-img1

如果出現如下提示:

rbd: sysfs write failed
RBD image feature set mismatch. You can disable features unsupported by the kernel with "rbd
feature disable rbd-data1/data-img1 object-map".
In some cases useful info is found in syslog - try "dmesg | tail".
rbd: map failed: (6) No such device or address #部分特性不支持,需要在 ceph 管理端關閉特性
object-map

管理端關閉 img data-img1 特性 object-map
[root@ceph-deploy ceph-cluster]# rbd feature disable rbd-data/data-img1 object-map

 [root@ceph-deploy ceph-cluster]# rbd feature disable rbd-data/data-img2 object-map

客戶端再次映射,成功后執行lsblk查看

 

 

8.對rbd0和rbd1執行mkfs.xfs格式化操作,並創建2個掛載目錄/data/ceph-disk0和/data/ceph-disk1

使用mount命令掛載:

mount /dev/rbd0 /data/ceph-disk0

mount /dev/rbd1 /data/ceph-disk1

最后執行df -h 查看

 

9.擴容測試:

rbd 鏡像空間拉伸:

[root@ceph-deploy ceph-cluster]# rbd resize --pool rbd-data --image data-img2 --size 15G

[root@ceph-deploy ceph-cluster]# rbd ls -p rbd-data -l 查看結果

 

 

 

10.到客戶端執行擴容操作並驗證:

[root@ceph-client  ceph]#xfs_growfs /dev/rbd1

再次df -h 查看:

 

 

至此普通賬號映射掛載,以及拉升擴容成功

 

Ceph FS部署:

 

1.要使用 cephFS,需要部署 cephfs 服務

在管理節點mgr1上執行:

root@ceph-mgr1:~# apt-cache madison ceph-mds
root@ceph-mgr1:~# apt install ceph-mds

部署完成后,登錄到ceph-deploy上執行:

root@ceph-deploy:~/ceph-cluster#  ceph-deploy mds create ceph-mgr1

 

2.創建 CephFS metadata 和 data 存儲池: 

使用 CephFS 之前需要事先於集群中創建一個文件系統,並為其分別指定元數據和數據相關
的存儲池。下面創建一個名為 cephfs 的文件系統用於測試,它使用 cephfs-metadata 為元數
據存儲池,使用 cephfs-data 為數據存儲池:

創建存儲池:

[root@ceph-deploy ceph-cluster]# ceph osd pool create cephfs-metadata 32 32
pool 'cephfs-metadata' created #保存 metadata 的 pool
[root@ceph-deploy ceph-cluster]#ceph osd pool create cephfs-data 64 64

 

3.創建 cephFS 並驗證:

 

 

 執行:ceph mds stat 驗證狀態:

 

 

4.登錄到ceph-deploy上創建普通賬號gfeng-fs

 

創建普通賬號並給與權限:

 

查看狀態:

 

 

 

 5.創建用 keyring 文件

   導出生成key文件

 

 

6.同步普通配置文件:

[root@ceph-deploy ceph-cluster]#  scp ceph.conf gfeng-key root@客戶端IP:/etc/ceph/

 

7.客戶端掛載測試

內核空間掛載 ceph-fs: 客戶端掛載有兩種方式,一是內核空間一是用戶空間,內核空間掛載需要內核支持 ceph 模 塊,用戶空間掛載需要安裝 ceph-fuse

首先分別在ceph-mon1,ceph-mon2,ceph-mon3上安裝ceph-mds

[root@ceph-mon1 ~]# apt install ceph-mds -y
[root@ceph-mon2 ~]# apt install ceph-mds -y
[root@ceph-mon3 ~]# apt install ceph-mds -y

ceph-mds使用的端口為6789

執行掛載:

 

 

 

這里要指定剛才生成導出的key文件

寫入數據測試:

 

 

服務端驗證:

 

 

可以看到數據已經寫入

 

高可用部署:

從上面剛才的配置,我們可以看到只有mgr1一個節點,所以這里打算加入3台,組成2主2備

 

1.安裝ceph-mds

這里打算使用4台,分別是ceph-mgr1、ceph-mgr2、ceph-mon2、ceph-mon3

由於之前其他幾台節點已經安裝過ceph-mds,這里只需安裝ceph-mgr2節點

[root@ceph-mgr2 ~]# apt install ceph-mds -y 

 

2:添加 MDS 服務器:

在部署節點ceph-deploy上操作:


root@ceph-deploy:~/ceph-cluster# ceph-deploy mds create ceph-mon2

按照上面操作,將其他2台也加入

如果出現如下報錯:

 

 

執行強制同步:

root@ceph-deploy:~/ceph-cluster# ceph-deploy --overwrite-conf config push ceph-mon2

 

驗證 mds 服務器當前狀態:
root@ceph-deploy:~/ceph-cluster# ceph mds stat
mycephfs-1/1/1 up {0=ceph-mgr1=up:active}, 3 up:standby

發現有一主三備

當前處於激活狀態的 mds 服務器有一台,處於備份狀態的 mds 服務器有三台,設置處於激活狀態 mds 的數量,設置為為兩主兩備

root@ceph-deploy:~/ceph-cluster#ceph fs set mycephfs max_mds 2

再次執行查看:

 

 執行ceph fs get mycephfs查看:

 

 

 

 

3.高可用測試:

模擬故障,重啟或停掉mon2節點服務

 

 

到服務端查看:

 

 

 

 發現ceph-mon3已經變成了主,而模擬故障的ceph-mon2節點則變成了備,高可用測試完成。

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 
 
 
 

 

 

 


 

 


 

 

 

 

 
 


免責聲明!

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



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