https://docs.ceph.com/en/latest/cephadm/# cephad工具官網介紹
一、基礎配置
Cephadm使用容器和systemd安裝和管理Ceph集群,並與CLI和儀表板GUI緊密集成。
- cephadm僅支持octopus v15.2.0和更高版本。
- cephadm與新的業務流程API完全集成,並完全支持新的CLI和儀表板功能來管理集群部署。
- cephadm需要容器支持(podman或docker)和Python 3。
- 時間同步
使用的centos8來安裝的ceph,已經內置了python3,不再單獨安裝,centos7需要單獨安裝python3
1、配置hosts解析
# cat /etc/hosts 192.168.40.132 node1 192.168.40.133 node2 192.168.40.134 node3
2、關閉防火牆和selinux
systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
3、設置主機名
hostnamectl set-hostname node1 hostnamectl set-hostname node2 hostnamectl set-hostname node3
4、配置主機時間同步
dnf install -y chrony mv /etc/chrony.conf /etc/chrony.conf.bak cat > /etc/chrony.conf <<EOF server ntp.aliyun.com iburst stratumweight 0 driftfile /var/lib/chrony/drift rtcsync makestep 10 3 bindcmdaddress 127.0.0.1 bindcmdaddress ::1 keyfile /etc/chrony.keys commandkey 1 generatecommandkey logchange 0.5 logdir /var/log/chrony EOF systemctl enable chronyd systemctl restart chronyd
5、安裝docker-ce
dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo
dnf install -y https://download.docker.com/linux/centos/7/x86_64/stable/Packages/containerd.io-1.2.13-3.1.el7.x86_64.rpm
dnf -y install docker-ce --nobest
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://s7owcmp8.mirror.aliyuncs.com"]
}
EOF
sudo systemctl daemon-reload
sudo systemctl restart docker
sudo systemctl enable docker
二、安裝cephadm
cephadm命令可以
- 引導新集群
- 使用有效的Ceph CLI啟動容器化的Shell
- 幫助調試容器化的Ceph守護進程。
以下操作只在一台節點執行就可以
使用curl獲取獨立腳本的最新版本。網絡不好的話可直接去GitHub復制
curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm (wget也行) chmod +x cephadm
安裝cephadmn
./cephadm add-repo --release octopus ./cephadm install
引導新群集
要引導群集,需要先創建一個目錄:/etc/ceph
mkdir -p /etc/ceph
然后運行該命令:ceph bootstrap
cephadm bootstrap --mon-ip 192.168.40.132
此命令將會進行以下操作:
- 為本地主機上的新群集創建monitor和manager守護程序。
- 為 Ceph 群集生成新的 SSH 密鑰,並將其添加到root用戶的文件
/root/.ssh/authorized_keys - 將與新群集通信所需的最小配置文件保存到
/etc/ceph/ceph.conf - 將
client.admin管理(特權!)密鑰的副本寫入/etc/ceph/ceph.client.admin.keyring - 將公鑰的副本寫入
/etc/ceph/ceph.pub
安裝完成后會有一個dashboard界面
Mgr epoch 13 is available Generating a dashboard self-signed certificate... Creating initial admin user... Fetching dashboard port number... Ceph Dashboard is now available at: URL: https://node1:8443/ User: admin Password: rlvdfqj1di You can access the Ceph CLI with: sudo /usr/sbin/cephadm shell --fsid 418abd02-42a9-11eb-91f4-000c298c369a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring Please consider enabling telemetry to help improve Ceph: ceph telemetry on For more information see: https://docs.ceph.com/docs/master/mgr/telemetry/ Bootstrap complete.
瀏覽器訪問8443

瀏覽器訪問3000(ceph監控)

執行完成后我們可以查看ceph.conf已經寫入了
[root@node1 ~]# ll /etc/ceph/ total 12 -rw-------. 1 root root 63 Dec 20 17:55 ceph.client.admin.keyring -rw-r--r--. 1 root root 179 Dec 20 17:55 ceph.conf -rw-r--r--. 1 root root 595 Dec 20 17:55 ceph.pub [root@node1 ~]# cat /etc/ceph/ceph.conf # minimal ceph.conf for 418abd02-42a9-11eb-91f4-000c298c369a [global] fsid = 418abd02-42a9-11eb-91f4-000c298c369a mon_host = [v2:192.168.40.132:3300/0,v1:192.168.40.132:6789/0]
三、啟用 CEPH CLI(將ceph命令映射到本地)
cephadm shell命令在安裝了所有Ceph包的容器中啟動bash shell。默認情況下,如果在主機上的/etc/ceph中找到配置和keyring文件,則會將它們傳遞到容器環境中,以便shell完全正常工作。
# cephadm shell Inferring fsid 418abd02-42a9-11eb-91f4-000c298c369a Inferring config /var/lib/ceph/418abd02-42a9-11eb-91f4-000c298c369a/mon.node1/config Using recent ceph image ceph/ceph:v15 [ceph: root@node1 /]#
[ceph: root@node1 /]# ceph -s
cluster:
id: 418abd02-42a9-11eb-91f4-000c298c369a
health: HEALTH_WARN
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum node1 (age 16m)
mgr: node1.bibyjy(active, since 15m)
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:
可以在節點上安裝包含所有 ceph 命令的包,包括 、(用於安裝 CephFS 文件系統)等
# cephadm add-repo --release octopus (官方的源) Writing repo to /etc/yum.repos.d/ceph.repo... Enabling EPEL...
添加Octopus版本的阿里的yum源
vim /etc/yum.repos.d/ceph.repo
[Ceph] name=Ceph packages for $basearch baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/$basearch enabled=1 gpgcheck=0 type=rpm-md [Ceph-noarch] name=Ceph noarch packages baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/noarch enabled=1 gpgcheck=0 type=rpm-md [ceph-source] name=Ceph source packages baseurl=https://mirrors.aliyun.com/ceph/rpm-octopus/el8/SRPMS enabled=1 gpgcheck=0 type=rpm-md
添加centos8的epel庫
yum install -y https://mirrors.aliyun.com/epel/epel-release-latest-8.noarch.rpm (實測,8.2虛擬機添加不上) sed -i 's|^#baseurl=https://download.fedoraproject.org/pub|baseurl=https://mirrors.aliyun.com|' /etc/yum.repos.d/epel* sed -i 's|^metalink|#metalink|' /etc/yum.repos.d/epel*
ceph好幾個依賴包需要epel源
Installed: ceph-common-2:15.2.8-0.el8.x86_64 fmt-6.2.1-1.el8.x86_64 gperftools-libs-2.7-6.el8.x86_64 leveldb-1.22-1.el8.x86_64 libbabeltrace-1.5.4-3.el8.x86_64 libcephfs2-2:15.2.8-0.el8.x86_64 libibverbs-29.0-3.el8.x86_64 liboath-2.6.2-3.el8.x86_64 librabbitmq-0.9.0-2.el8.x86_64 librados2-2:15.2.8-0.el8.x86_64 libradosstriper1-2:15.2.8-0.el8.x86_64 librbd1-2:15.2.8-0.el8.x86_64 librdkafka-0.11.4-1.el8.x86_64 librdmacm-29.0-3.el8.x86_64 librgw2-2:15.2.8-0.el8.x86_64 libunwind-1.3.1-3.el8.x86_64 python3-ceph-argparse-2:15.2.8-0.el8.x86_64 python3-ceph-common-2:15.2.8-0.el8.x86_64 python3-cephfs-2:15.2.8-0.el8.x86_64 python3-prettytable-0.7.2-14.el8.noarch python3-rados-2:15.2.8-0.el8.x86_64 python3-rbd-2:15.2.8-0.el8.x86_64 python3-rgw-2:15.2.8-0.el8.x86_64 rdma-core-29.0-3.el8.x86_64
手動添加epel源
# cat epel.repo [epel] name=Extra Packages for Enterprise Linux $releasever - $basearch baseurl=https://mirrors.aliyun.com/epel/$releasever/Everything/$basearch #metalink=https://mirrors.fedoraproject.org/metalink?repo=epel-$releasever&arch=$basearch&infra=$infra&content=$contentdir enabled=1 gpgcheck=1 gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-8
安裝ceph-common
# cephadm install ceph-common Installing packages ['ceph-common']...
節點cli安裝成功
# ceph -v
ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)
# ceph -s
cluster:
id: 418abd02-42a9-11eb-91f4-000c298c369a
health: HEALTH_WARN
Reduced data availability: 1 pg inactive
OSD count 0 < osd_pool_default_size 3
services:
mon: 1 daemons, quorum node1 (age 15m)
mgr: node1.bibyjy(active, since 15m)
osd: 0 osds: 0 up, 0 in
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: 100.000% pgs unknown
1 unknown
添加主機到集群
將公鑰添加到新主機
ssh-copy-id -f -i /etc/ceph/ceph.pub node2 ssh-copy-id -f -i /etc/ceph/ceph.pub node3
告訴Ceph,新節點是集群的一部分
# ceph orch host add node2 Added host 'node2' # ceph orch host add node3 Added host 'node3'
添加主機會自動擴展mon和mgr節點(虛擬機測試,其余每個節點都導入鏡像,過了很長時間,重啟虛擬機后才加入成功)
# ceph -s
cluster:
id: 418abd02-42a9-11eb-91f4-000c298c369a
health: HEALTH_WARN
Reduced data availability: 1 pg inactive
OSD count 0 < osd_pool_default_size 3
services:
mon: 3 daemons, quorum node1,node2,node3 (age 39m)
mgr: node1.bibyjy(active, since 40m), standbys: node2.urnpav
osd: 0 osds: 0 up, 0 in
data:
pools: 1 pools, 1 pgs
objects: 0 objects, 0 B
usage: 0 B used, 0 B / 0 B avail
pgs: 100.000% pgs unknown
1 unknown
standbys(備用): node2.urnpav
部署其他監視器(可選)
典型的 Ceph 群集具有三個或五個分布在不同主機的mon守護程序。如果群集中有五個或更多節點,建議部署五個mon。
當Ceph知道mon應該使用什么IP子網時,它可以隨着群集的增長(或收縮)自動部署和縮放mon。默認情況下,Ceph假定其他mon使用與第一個mon的IP相同的子網。
在單個子網的情況下,如果向集群中添加主機,默認最多只會添加5個mon 如果有特定的IP子網給mon使用,可以使用CIDR格式配置該子網:
ceph config set mon public_network 10.1.2.0/24
cephadm只會在配置了特定子網IP的主機上部署mon守護程序 如果要調整特定子網mon的默認數量,可以執行以下命令:
ceph orch apply mon *<number-of-monitors>*
如果要在一組特定的主機上部署mon,可以執行以下命令:
ceph orch apply mon *<host1,host2,host3,...>*
查看當前主機和標簽
# ceph orch host ls HOST ADDR LABELS STATUS node1 node1 node2 node2 node3 node3
禁用自動mon部署,執行以下命令:
ceph orch apply mon --unmanaged
要在不同網絡中添加mon執行以下命令:
ceph orch apply mon --unmanaged ceph orch daemon add mon newhost1:10.1.2.123 ceph orch daemon add mon newhost2:10.1.2.0/24
添加mon到多個主機,也可以用以下命令:
ceph orch apply mon "host1,host2,host3"
部署OSD
可以用以下命令顯示集群中的存儲設備清單
ceph orch device ls

如果滿足以下所有_條件_,則存儲設備被視為可用:
- 設備必須沒有分區。
- 設備不得具有任何 LVM 狀態。
- 不得安裝設備。
- 設備不能包含文件系統。
- 設備不得包含 Ceph BlueStore OSD。
- 設備必須大於 5 GB。
Ceph 拒絕在不可用的設備上預配 OSD。為保證能成功添加osd,我剛才在每個node上新加了一塊磁盤 創建新 OSD 的方法有幾種方法:
在未使用的設備上自動創建osd
# ceph orch apply osd --all-available-devices Scheduled osd.all-available-devices update...
可以看到已經在三塊磁盤上創建了osd
services:
mon: 3 daemons, quorum node1,node2,node3 (age 52m)
mgr: node2.urnpav(active, since 74m)
osd: 3 osds: 2 up (since 17m), 2 in (since 7m)
從特定主機上的特定設備創建 OSD
ceph orch daemon add osd host1:/dev/sdb
查看osd的map
# ceph osd tree ID CLASS WEIGHT TYPE NAME STATUS REWEIGHT PRI-AFF -1 0.05846 root default -5 0.01949 host node1 2 hdd 0.01949 osd.2 down 0 1.00000 -3 0.01949 host node2 0 hdd 0.01949 osd.0 up 1.00000 1.00000 -7 0.01949 host node3 1 hdd 0.01949 osd.1 up 1.00000 1.00000
http://docs.ceph.org.cn/rados/operations/monitoring-osd-pg/ 官網關於osd狀態文檔
http://docs.ceph.org.cn/rados/troubleshooting/troubleshooting-osd/#osd-not-running osd not running問題排查
啟動一個down的osd
sudo /etc/init.d/ceph -a start osd.1
部署MDS
使用 CephFS 文件系統需要一個或多個 MDS 守護程序。如果使用新的ceph fs卷接口來創建新文件系統,則會自動創建這些文件 部署元數據服務器:
ceph orch apply mds *<fs-name>* --placement="*<num-daemons>* [*<host1>* ...]"
CephFS 需要兩個 Pools,cephfs-data 和 cephfs-metadata,分別存儲文件數據和文件元數據
# ceph osd pool create cephfs_data 64 64
# ceph osd pool create cephfs_metadata 64 64
創建一個 CephFS, 名字為 cephfs
# ceph fs new cephfs cephfs_metadata cephfs_data
# ceph orch apply mds cephfs --placement="3 node1 node2 node3"
Scheduled mds.cephfs update...
[root@node1 ~]# ceph -s
data:
pools: 3 pools, 129 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 57 GiB / 60 GiB avail
pgs: 129 active+undersized
驗證至少有一個MDS已經進入active狀態,默認情況下,ceph只支持一個活躍的MDS,其他的作為備用MDS
# ceph fs status cephfs
cephfs - 0 clients
======
RANK STATE MDS ACTIVITY DNS INOS
0 active cephfs.node2.xdznta Reqs: 0 /s 10 13
POOL TYPE USED AVAIL
cephfs_metadata metadata 1024k 26.9G
cephfs_data data 0 17.9G
STANDBY MDS
cephfs.node1.pemzxl
MDS version: ceph version 15.2.8 (bdf3eebcd22d7d0b3dd4d5501bee5bac354d5b55) octopus (stable)
部署RGW
Cephadm將radosgw部署為管理特定領域和區域的守護程序的集合,RGW是Ceph對象存儲網關服務RADOS Gateway的簡稱,是一套基於LIBRADOS接口封裝而實現的FastCGI服務,對外提供RESTful風格的對象存儲數據訪問和管理接口。

使用cephadm時,radosgw守護程序是通過mon配置數據庫而不是通過ceph.conf或命令行配置的。如果該配置尚未就緒,則radosgw守護進程將使用默認設置啟動(默認綁定到端口80)。要在node1、node2和node3上部署3個服務於myorg領域和us-east-1區域的rgw守護進程,在部署rgw守護進程之前,如果它們不存在,則自動創建提供的域和區域:
ceph orch apply rgw myorg cn-east-1 --placement="3 node1 node2 node3"
或者可以使用radosgw-admin命令手動創建區域、區域組和區域:
radosgw-admin realm create --rgw-realm=myorg --default radosgw-admin zonegroup create --rgw-zonegroup=default --master --default radosgw-admin zone create --rgw-zonegroup=default --rgw-zone=cn-east-1 --master --default radosgw-admin period update --rgw-realm=myorg --c
查看
# ceph orch ls NAME RUNNING REFRESHED AGE PLACEMENT IMAGE NAME IMAGE ID alertmanager 1/1 6m ago 7d count:1 docker.io/prom/alertmanager:v0.20.0 0881eb8f169f crash 3/3 6m ago 7d * docker.io/ceph/ceph:v15 5553b0cb212c grafana 1/1 6m ago 7d count:1 docker.io/ceph/ceph-grafana:6.6.2 a0dce381714a mds.cephfs 3/3 6m ago 6m node1;node2;node3;count:3 docker.io/ceph/ceph:v15 5553b0cb212c mgr 2/2 6m ago 7d count:2 docker.io/ceph/ceph:v15 5553b0cb212c mon 3/3 6m ago 6d label:mon docker.io/ceph/ceph:v15 5553b0cb212c node-exporter 3/3 6m ago 7d * docker.io/prom/node-exporter:v0.18.1 e5a616e4b9cf osd.all-available-devices 3/3 6m ago 80m * docker.io/ceph/ceph:v15 5553b0cb212c prometheus 1/1 6m ago 7d count:1 docker.io/prom/prometheus:v2.18.1 de242295e225 rgw.myorg.cn-east-1 0/3 - - node1;node2;node3;count:3 <unknown> <unknown>
一個健康的測試三節點集群

ceph常用命令
1 ceph -s #查看集群狀態 2 ceph osd tree #查看osd的map 3 ceph osd lspools #查看ceph集群所有的pool 4 rbd create name --size 10G --image-feature layering#創建rbd 5 rbd ls -l #查看rbd列表 6 rbd remove rbd-name #刪除rbd 7 rbd map disk01 #在客戶端映射rbd map 8 rbd showmapped #顯示rbd map 9 ceph osd pool create poolname pg的數量 #創建存儲池 10 ceph osd pool rm poolname poolname --yes-i-really-really-mean-it #刪除存儲池 11 ceph fs new cephfs cephfs_metadata cephfs_data #開啟ceph文件系統的pool 12 ceph fs ls #顯示ceph fs(文件系統) 13 ceph mds stat #參看mds 狀態 14 ssh cent@mds-nodename "sudo ceph-authtool -p /etc/ceph/ceph.client.admin.keyring" > admin.key #獲取admin key 15 systemctl stop ceph-mds@mds-nodename #停止ceph-mds服務 16 ceph mds fail 0 #把mds狀態重置 17 ceph fs rm cephfs --yes-i-really-mean-it #刪除ceph-文件系統
https://mp.weixin.qq.com/s/5KPLCSryefAmCCeA09vv1w 使用cephadm安裝ceph octopus
https://blog.csdn.net/caiyqn/article/details/106535070 CentOS8安裝與配置Ceph Octopus教程
