Ubuntu22.04LTS基於cephadm快速部署Ceph Reef(18.2.X)叢集

尹正杰發表於2024-08-21

                                              作者:尹正傑

版權宣告:原創作品,謝絕轉載!否則將追究法律責任。

目錄
  • 一.ceph概述
    • 1.ceph支援的儲存型別對比
    • 2.ceph元件介紹
    • 3.ceph的部署方式
    • 4.網路劃分
    • 5.下載ceph
  • 二.Ubuntu系統部署ceph Reef(18.2.X)叢集
    • 1.基礎配置
    • 2. 啟動ceph新叢集
    • 3.初始化dashboard的管理員密碼
    • 4.訪問ceph叢集
    • 5.新增主機
    • 6.新增OSD裝置

一.ceph概述

1.ceph支援的儲存型別對比

儲存型別 典型裝置 優點 缺點 應用場景
cephFS FTP,NFS伺服器為了克服塊儲存檔案無法共享的問題,所以有了檔案儲存。
在伺服器上架設FTP和NFS服務,就是檔案儲存。
1.造價低;
2.方便檔案共享;
1.讀寫速度低;
2.傳輸速度慢;
1.日誌儲存;
2.有目錄結構的檔案儲存;
RBD 磁碟陣列,硬碟主要將裸磁碟空間對映給主機使用的。 1.透過RAID與LVM等手段,對資料提供了保護;
2.多塊廉價的硬碟組合起來,提高容量;
3.多塊磁碟組合出來的邏輯盤,提升讀寫效率;
1.採用SAN架構組網時,光纖交換機,造價成本高;
2.主機之間無法共享資料;
1.docker容器,虛擬機器磁碟儲存分配;
2.日誌儲存;
3.檔案儲存;
RGW 內建大容量硬碟的分散式伺服器(swift,s3)多型伺服器內建大容量硬碟,安裝上物件儲存管理軟體,對外提供讀寫訪問功能。 1.具備塊儲存的讀寫高速;
2.具備檔案儲存的共享等特性;
適合更新變動較少的資料。
1.圖片
2.影片
3.音樂等。

2.ceph元件介紹

元件名稱 功能描述
monitors ceph monitor(監視器)對應守護程序為ceph-mon,維護叢集狀態的對映,包括監視器對映,管理器對映,OSD對映,MDS對映和CRUSH對映。這些對映是ceph守護程序相互協調所需的關鍵叢集狀態。
ceph monitor(監視器)還負責守護程序和客戶端之間身份驗證,通常至少需要三個監視器才能實現冗餘和高可用性,基於paxos協議實現節點間的資訊同步。
managers ceph manager(管理器)對應守護程序ceph-mgr,負責跟蹤執行時和ceph叢集的當前狀態,包括儲存利用率,當前效能指標和系統負載。
ceph管理器守護程序還託管基於Python的模組來管理和公開ceph叢集資訊,包括基於web的ceph儀表盤和REST API。
高可用性通常至少要兩個管理器,基於raft協議實現節點間的資訊同步。
ceph osds Ceph OSD(物件儲存裝置)對應守護程序ceph-osd,負責儲存資料,處理資料複製,恢復,重新平衡,並透過檢查其他ceph osd守護程序的心跳像ceph monitor(監視器)和ceph manager(管理器)提供一些監控資訊。
同上至少需要3個ceph osd來實現冗餘和高可用,本質上osd就是一個個host主機上的儲存磁碟。
MDSs ceph後設資料伺服器(MDS[Metadata Server])對應守護程序ceps-mds,負責cephFS儲存後設資料。
ceph後設資料伺服器允許POSIX(為應用程式提供的介面標準)檔案系統使用者執行基本命令(如ls,find等),而不會給ceph儲存叢集帶來巨大負擔。
PGs PG全稱Placement Groups,是一個邏輯概念,一個PG包含多個OSD。
引入PG這一層其實就是為了更好分配資料和定位資料,寫入資料等適合,寫入主osd,冗餘兩份。

3.ceph的部署方式

部署方式 原理說明 備註
cephadm 1.使用容器和systemd安裝和管理ceph叢集並與cli和儀表盤GUI緊密整合;
2.僅支援Octopus和更新版本,需要容器和Python3支援;
3.與新的編排API完全整合;
需要提前安裝docker和python環境,官方推薦方法。
rook 1.在Kubernetes中執行的ceph叢集,同時還支援透過Kubernetes API管理儲存資源和配置;
2.僅支援Nautilus和較新版本的ceph;
需要準備一套k8s環境。
ceph-ansible 使用ansible部署ceph叢集,對於新的編排器功能,管理功能和儀表盤支援不好。 需要你熟練使用ansible功能。
ceph-deploy 是一個快速部署叢集的工具,不支援CentOS 8系統。對於CentOS官方支援也僅到N版本。 1.對於O版本也可以部署成功,但是dashboard功能並不友好,慎重選擇;
2.官方已經棄用了,但對於學習來說是一個不錯的工具;
ceph-mon 使用JuJu安裝ceph
puppet-ceph 使用puppet安裝ceph
二進位制原始碼 手工安裝
window圖形 在windows主機上,透過滑鼠操作就能完成安裝。
版本特性:
	x.0.z
		開發版本
	x.1.z
		候選版本
	x.2.z
		穩定版本
		
推薦閱讀:
	https://docs.ceph.com/en/latest/releases/general/
	https://docs.ceph.com/en/latest/install/
	https://docs.ceph.com/en/latest/releases/

4.網路劃分

公有網路(public):
	用於使用者資料通訊,可以使用"--public-network"選項指定,比如: 10.0.0.0/24。
	
叢集網路(cluster):
	用於叢集內部的管理通訊,可以使用“--cluster-network”選項指定,比如:"172.30.100.0/24"。
	
	
溫馨提示:
	- 1.早期使用ceph-deploy部署時的確可以使用"--public-network"和“--cluster-network”指定。
	- 2.但cephadm部署僅支援"--cluster-network"選項。

5.下載ceph

https://download.ceph.com/

二.Ubuntu系統部署ceph Reef(18.2.X)叢集

1.基礎配置

	1.基於cephadm部署前提條件,官方提的要求Ubuntu 22.04 LTS出了容器執行時其他都滿足
		- Python 3
		- Systemd
		- Podman or Docker for running containers
		- Time synchronization (such as Chrony or the legacy ntpd)
		- LVM2 for provisioning storage devices

參考連結:
	https://docs.ceph.com/en/latest/cephadm/install/#requirements
	
	
	2.設定時區
timedatectl set-timezone Asia/Shanghai
ll /etc/localtime 


	3.安裝docker環境
略,國內的小夥伴建議二進位制安裝,yum或者apt安裝都需要FQ,可以考慮使用國內的軟體源。

當然,SVIP的小夥伴不要慌,用完給大家的一鍵部署腳步即可。

	4.新增hosts檔案解析
[root@ceph141 ~]# cat >> /etc/hosts <<EOF
10.0.0.141 ceph141
10.0.0.142 ceph142
10.0.0.143 ceph143
EOF

	5.叢集時間同步
參考連結:
	https://www.cnblogs.com/yinzhengjie/p/14238720.html#3配置時間同步

2. 啟動ceph新叢集

	1.下載需要安裝ceph版本的cephadm
CEPH_RELEASE=18.2.4
curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm

	2.將cephadm新增到PATH環境變數
[root@ceph141 ~]# mv cephadm /usr/local/bin/
[root@ceph141 ~]# 
[root@ceph141 ~]# chmod +x /usr/local/bin/cephadm 
[root@ceph141 ~]# 
[root@ceph141 ~]# ls -l /usr/local/bin/cephadm
-rwxr-xr-x 1 root root 215316 Aug 20 22:19 /usr/local/bin/cephadm
[root@ceph141 ~]# 

	3.建立新叢集
[root@ceph141 ~]# cephadm bootstrap --mon-ip 10.0.0.141 --cluster-network 10.0.0.0/24 --allow-fqdn-hostname
...
Pulling container image quay.io/ceph/ceph:v18...
Ceph version: ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)

...
             URL: https://ceph141:8443/
            User: admin
        Password: ii8p7dzqtt

...
        sudo /usr/local/bin/cephadm shell --fsid c044ff3c-5f05-11ef-9d8b-51db832765d6 -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

Or, if you are only running a single cluster on this host:

        sudo /usr/local/bin/cephadm shell 

Please consider enabling telemetry to help improve Ceph:

        ceph telemetry on

For more information see:

        https://docs.ceph.com/en/latest/mgr/telemetry/

Bootstrap complete.


溫馨提示:
	- 1.此步驟會去官方下載映象,我們可以將驚喜手動匯入;
		https://docs.ceph.com/en/latest/install/containers/#containers
		
	- 2.注意觀察輸出資訊,記錄dashboard賬號資訊

3.初始化dashboard的管理員密碼

如上圖所示,我們首次登陸需要修改密碼,按照你的環境自行修改即可。

如下圖所示,密碼修改成功後就可以登陸dashboard頁面啦~


溫馨提示:
	除了上面在WebUI的方式修改密碼外,也可以基於命令列方式修改密碼,只不過在應用時可能需要等待一段時間才能生效。【目前官方已經棄用,大概需要等1-5min】
[root@ceph141 ~]# echo jasonyin2020 | ceph dashboard set-login-credentials admin -i -
******************************************************************
***          WARNING: this command is deprecated.              ***
*** Please use the ac-user-* related commands to manage users. ***
******************************************************************
Username and password updated
[root@ceph141 ~]# 

4.訪問ceph叢集

	方式一: 使用cephadm shell互動式配置
[root@ceph141 ~]# cephadm shell 
Inferring fsid c044ff3c-5f05-11ef-9d8b-51db832765d6
Inferring config /var/lib/ceph/c044ff3c-5f05-11ef-9d8b-51db832765d6/mon.ceph141/config
Using ceph image with id '2bc0b0f4375d' and tag 'v18' created on 2024-07-24 06:19:35 +0800 CST
quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906
root@ceph141:/# 
root@ceph141:/# ceph -s
  cluster:
    id:     c044ff3c-5f05-11ef-9d8b-51db832765d6
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph141 (age 14m)
    mgr: ceph141.gqogmi(active, since 10m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
root@ceph141:/# 
root@ceph141:/# exit 
exit
[root@ceph141 ~]# 


	方式二: 使用cephadm非互動式配置
[root@ceph141 ~]# cephadm shell -- ceph -s
Inferring fsid c044ff3c-5f05-11ef-9d8b-51db832765d6
Inferring config /var/lib/ceph/c044ff3c-5f05-11ef-9d8b-51db832765d6/mon.ceph141/config
Using ceph image with id '2bc0b0f4375d' and tag 'v18' created on 2024-07-24 06:19:35 +0800 CST
quay.io/ceph/ceph@sha256:6ac7f923aa1d23b43248ce0ddec7e1388855ee3d00813b52c3172b0b23b37906
  cluster:
    id:     c044ff3c-5f05-11ef-9d8b-51db832765d6
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph141 (age 12m)
    mgr: ceph141.gqogmi(active, since 8m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
[root@ceph141 ~]# 


	方式三: 安裝ceph通用包,其中包含所有ceph命令,包括ceph、rbd、mount.ceph(用於掛載CephFS檔案系統)等【推薦使用】
[root@ceph141 ~]# cephadm add-repo --release reef
[root@ceph141 ~]# cephadm install ceph-common
...
Installing repo GPG key from https://download.ceph.com/keys/release.gpg...
Installing repo file at /etc/apt/sources.list.d/ceph.list...  # 會在宿主機建立原始檔並安裝,速度較慢,請耐性等待!
Updating package list...
Completed adding repo.
Installing packages ['ceph-common']
[root@ceph141 ~]#
[root@ceph141 ~]# ceph -v  # Duang~宿主機可以正常訪問啦!
ceph version 18.2.4 (e7ad5345525c7aa95470c26863873b581076945d) reef (stable)
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph -s  # 直接在宿主機訪問即可
  cluster:
    id:     c044ff3c-5f05-11ef-9d8b-51db832765d6
    health: HEALTH_WARN
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph141 (age 22m)
    mgr: ceph141.gqogmi(active, since 18m)
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
[root@ceph141 ~]# 

5.新增主機

	1.檢視宿主機配置
[root@ceph141 ~]# ll /etc/ceph/
total 32
drwxr-xr-x   2 root root  4096 Aug 20 23:28 ./
drwxr-xr-x 131 root root 12288 Aug 20 23:28 ../
-rw-------   1 root root   151 Aug 20 23:10 ceph.client.admin.keyring
-rw-r--r--   1 root root   171 Aug 20 23:10 ceph.conf
-rw-r--r--   1 root root   595 Aug 20 23:06 ceph.pub
-rw-r--r--   1 root root    92 Jul 12 23:42 rbdmap
[root@ceph141 ~]# 



	2.把秘鑰放到其他伺服器上
[root@ceph141 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph142
[root@ceph141 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph143


	3.檢查叢集元件
[root@ceph141 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  5m ago     30m  count:1    
ceph-exporter                   1/1  5m ago     30m  *          
crash                           1/1  5m ago     30m  *          
grafana        ?:3000           1/1  5m ago     30m  count:1    
mgr                             1/2  5m ago     30m  count:2    
mon                             1/5  5m ago     30m  count:5    
node-exporter  ?:9100           1/1  5m ago     30m  *          
prometheus     ?:9095           1/1  5m ago     30m  count:1    
[root@ceph141 ~]# 

	4.新增叢集
[root@ceph141 ~]#  ceph orch host add ceph142 10.0.0.142
Added host 'ceph142' with addr '10.0.0.142'
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph orch host add ceph143 10.0.0.143
Added host 'ceph143' with addr '10.0.0.143'
[root@ceph141 ~]# 


	5.再次檢視叢集元件
[root@ceph141 ~]# ceph orch ls
NAME           PORTS        RUNNING  REFRESHED  AGE  PLACEMENT  
alertmanager   ?:9093,9094      1/1  47s ago    35m  count:1    
ceph-exporter                   1/3  47s ago    35m  *          
crash                           2/3  47s ago    35m  *          
grafana        ?:3000           1/1  47s ago    35m  count:1    
mgr                             2/2  47s ago    35m  count:2    
mon                             2/5  47s ago    35m  count:5    
node-exporter  ?:9100           1/3  47s ago    35m  *          
prometheus     ?:9095           1/1  47s ago    35m  count:1    
[root@ceph141 ~]# 
 
 	6.檢視dashboard的叢集節點列表
如上圖所示。

6.新增OSD裝置

	1.初始化之前檢視各節點的裝置資訊
[root@ceph141 ~]# lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
...
sdb                         8:16   0  200G  0 disk 
sdc                         8:32   0  300G  0 disk 
[root@ceph141 ~]# 

[root@ceph142 ~]# lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
...
sdb                         8:16   0  200G  0 disk 
sdc                         8:32   0  300G  0 disk 
sr0                        11:0    1 1024M  0 rom  
[root@ceph142 ~]# 
 
[root@ceph143 ~]# lsblk 
NAME                      MAJ:MIN RM  SIZE RO TYPE MOUNTPOINTS
...
sdb                         8:16   0  300G  0 disk 
sdc                         8:32   0  200G  0 disk 
sr0                        11:0    1 1024M  0 rom  
[root@ceph143 ~]# 

	2.新增OSD之前檢查叢集狀態
[root@ceph141 ~]# ceph osd tree
ID  CLASS  WEIGHT  TYPE NAME     STATUS  REWEIGHT  PRI-AFF
-1              0  root default                           
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph -s
  cluster:
    id:     c044ff3c-5f05-11ef-9d8b-51db832765d6
    health: HEALTH_WARN
            Failed to place 1 daemon(s)
            1 failed cephadm daemon(s)
            OSD count 0 < osd_pool_default_size 3
 
  services:
    mon: 1 daemons, quorum ceph141 (age 44m)
    mgr: ceph141.gqogmi(active, since 40m), standbys: ceph142.tisapy
    osd: 0 osds: 0 up, 0 in
 
  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   0 B used, 0 B / 0 B avail
    pgs:     
 
[root@ceph141 ~]# 


	3.新增osd,這裡新增的節點的硬碟不能做過分割槽和檔案系統
[root@ceph141 ~]# ceph orch daemon add osd ceph141:/dev/sdb
Created osd(s) 0 on host 'ceph141'
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph orch daemon add osd ceph141:/dev/sdc
Created osd(s) 1 on host 'ceph141'
[root@ceph141 ~]# 

[root@ceph141 ~]# ceph orch daemon add osd ceph142:/dev/sdb
Created osd(s) 2 on host 'ceph142'
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph orch daemon add osd ceph142:/dev/sdc
Created osd(s) 3 on host 'ceph142'
[root@ceph141 ~]# 

[root@ceph141 ~]# ceph orch daemon add osd ceph143:/dev/sdb
Created osd(s) 4 on host 'ceph143'
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph orch daemon add osd ceph143:/dev/sdc
Created osd(s) 5 on host 'ceph143'
[root@ceph141 ~]# 



	4.再次檢視OSD相關資訊
[root@ceph141 ~]# ceph -s
  cluster:
    id:     c044ff3c-5f05-11ef-9d8b-51db832765d6
    health: HEALTH_WARN
            Failed to place 1 daemon(s)
            2 failed cephadm daemon(s)
            clock skew detected on mon.ceph143
            2 mgr modules have recently crashed
 
  services:
    mon: 2 daemons, quorum ceph141,ceph143 (age 114s)
    mgr: ceph141.gqogmi(active, since 47m), standbys: ceph142.tisapy
    osd: 6 osds: 6 up (since 77s), 6 in (since 101s)
 
  data:
    pools:   1 pools, 1 pgs
    objects: 2 objects, 577 KiB
    usage:   162 MiB used, 1.5 TiB / 1.5 TiB avail
    pgs:     1 active+clean
 
[root@ceph141 ~]# 
[root@ceph141 ~]# ceph osd tree
ID  CLASS  WEIGHT   TYPE NAME         STATUS  REWEIGHT  PRI-AFF
-1         1.46489  root default                               
-3         0.48830      host ceph141                           
 0    hdd  0.19530          osd.0         up   1.00000  1.00000
 1    hdd  0.29300          osd.1         up   1.00000  1.00000
-5         0.48830      host ceph142                           
 2    hdd  0.19530          osd.2         up   1.00000  1.00000
 3    hdd  0.29300          osd.3         up   1.00000  1.00000
-7         0.48830      host ceph143                           
 4    hdd  0.29300          osd.4         up   1.00000  1.00000
 5    hdd  0.19530          osd.5         up   1.00000  1.00000
[root@ceph141 ~]# 

	
	5.檢視裝置資訊
[root@ceph141 ~]# ceph orch device ls
HOST     PATH      TYPE  DEVICE ID                               SIZE  AVAILABLE  REFRESHED  REJECT REASONS                                                           
ceph141  /dev/sdb  hdd   ATA_VBOX_HARDDISK_VB7f99f134-d6f80b2c   200G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph141  /dev/sdc  hdd   ATA_VBOX_HARDDISK_VB8587e457-f6eca36a   300G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph141  /dev/sr0  hdd   VBOX_CD-ROM_VB2-01700376               1023M  No         8s ago     Failed to determine if device is BlueStore, Insufficient space (<5GB)    
ceph142  /dev/sdb  hdd   ATA_VBOX_HARDDISK_VB44d8d962-22b2507e   200G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph142  /dev/sdc  hdd   ATA_VBOX_HARDDISK_VB7b0f012c-688b1185   300G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph142  /dev/sr0  hdd   VBOX_CD-ROM_VB2-01700376               1023M  No         8s ago     Failed to determine if device is BlueStore, Insufficient space (<5GB)    
ceph143  /dev/sdb  hdd   ATA_VBOX_HARDDISK_VBab58677d-fb9dc89f   300G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph143  /dev/sdc  hdd   ATA_VBOX_HARDDISK_VB586591eb-921dc802   200G  No         8s ago     Has a FileSystem, Insufficient space (<10 extents) on vgs, LVM detected  
ceph143  /dev/sr0  hdd   VBOX_CD-ROM_VB2-01700376               1023M  No         8s ago     Failed to determine if device is BlueStore, Insufficient space (<5GB)    
[root@ceph141 ~]#  

相關文章