作者:尹正傑
版權宣告:原創作品,謝絕轉載!否則將追究法律責任。
目錄
- 一.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 ~]#