文章目錄
- Requirements
- 環境
- 安裝Cephadm
- 部署Ceph單機集群
- 引導(bootstrap)建立新集群
- 管理OSD
- 列出可用的OSD設備
- 部署OSD
- 刪除OSD
- 管理主機
- 列出主機信息
- 添加主機到集群
- 從集群中刪除主機
- 部署Ceph集群
Cephadm通過在單個主機上創建一個Ceph單機集群,然后向集群中添加主機以擴展集群,進而部署其他服務。
VMware安裝Ubuntu20.04并使用Xshell連接虛擬機:https://blog.csdn.net/gengduc/article/details/134889416
Requirements
-
Python3
-
Systemd
-
Podman或Docker
apt install docker.io # 安裝docker systemctl status docker.service ## 查看服務運行狀態
-
時間同步chrony或NTP
apt install chrony systemctl status chronyd.service
-
LVM2
環境
| 主機名hostname | 硬盤設備 | ip地址 | Ceph服務 |
|---|---|---|---|
| node01 | 一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd | 192.168.64.128 | mon×1、mgr×1、osd×3 |
| node02 | 一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd | 192.168.64.129 | mon×1、mgr×1、osd×3 |
| node03 | 一塊系統盤/dev/sda、三塊用于安裝OSD的數據盤/dev/sdb、/dev/sdc、/dev/sdd | 192.168.64.130 | mon×1、mgr×1、osd×3 |

我們將通過cephadm部署Ceph集群,在node01上先部署Ceph單機集群,然后添加node02和node03主機擴展至三臺設備集群。
安裝Cephadm
【node01執行】
apt install cephadm # 安裝cephadm工具whereis cephadm # 檢查安裝情況
# 輸出如下內容
root@node01:~# whereis cephadm
cephadm: /usr/sbin/cephadm
部署Ceph單機集群
引導(bootstrap)建立新集群
Cephadm部署Ceph的方式成為==bootstrap(引導)==。創建新Ceph集群的第一步是在Ceph集群的第一臺主機上運行cephadm bootstrap命令。在Ceph集群的第一臺主機上運行cephadm bootstrap命令的行為會創建Ceph集群的第一個“監視守護進程”,并且該監視守護進程需要IP地址。您必須將Ceph集群node01的IP地址傳遞給ceph bootstrap。
cephadm bootstrap --mon-ip <node01的ip地址>
# 例如
cephadm bootstrap --mon-ip 192.168.64.128
root@node01:~# cephadm bootstrap --mon-ip 192.168.64.128
Creating directory /etc/ceph for ceph.conf # 創建配置文件目錄
Verifying podman|docker is present... # docker/podman存在
Verifying lvm2 is present... # lvm2存在
Verifying time synchronization is in place... # 時間同步
Unit systemd-timesyncd.service is enabled and running # 時間同步啟用并正在運行
Repeating the final host check...
podman|docker (/usr/bin/docker) is present # docker存在
systemctl is present
lvcreate is present
Unit systemd-timesyncd.service is enabled and running
Host looks OK # 主機狀態OK
Cluster fsid: 3c6aed32-9644-11ee-b2df-17e04a57112a # 集群fsid,是集群的唯一標識
Verifying IP 192.168.64.128 port 3300 ... # 驗證主機端口
Verifying IP 192.168.64.128 port 6789 ...
Mon IP 192.168.64.128 is in CIDR network 192.168.64.0/24 # mon IP地址,及所在網段
Pulling container image quay.io/ceph/ceph:v15... # 拉去ceph鏡像
Extracting ceph user uid/gid from container image...
Creating initial keys...
Creating initial monmap...
Creating mon...
Waiting for mon to start... # 等待mon啟動
Waiting for mon...
mon is available
Assimilating anything we can from ceph.conf...
Generating new minimal ceph.conf... # 生成集群的最小配置
Restarting the monitor...
Setting mon public_network...
Creating mgr...
Verifying port 9283 ...
Wrote keyring to /etc/ceph/ceph.client.admin.keyring # 生成密鑰環
Wrote config to /etc/ceph/ceph.conf # 寫入配置
Waiting for mgr to start... # 等待mgr啟動
Waiting for mgr...
mgr not available, waiting (1/10)...
mgr not available, waiting (2/10)...
mgr not available, waiting (3/10)...
mgr not available, waiting (4/10)...
mgr not available, waiting (5/10)...
mgr not available, waiting (6/10)...
mgr is available
Enabling cephadm module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 5...
Mgr epoch 5 is available
Setting orchestrator backend to cephadm...
Generating ssh key...
Wrote public SSH key to to /etc/ceph/ceph.pub # 寫入SSH密鑰到ceph.pub
Adding key to root@localhost's authorized_keys...
Adding host node01...
Deploying mon service with default placement...
Deploying mgr service with default placement...
Deploying crash service with default placement...
Enabling mgr prometheus module...
Deploying prometheus service with default placement...
Deploying grafana service with default placement...
Deploying node-exporter service with default placement...
Deploying alertmanager service with default placement...
Enabling the dashboard module...
Waiting for the mgr to restart...
Waiting for Mgr epoch 13...
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: # Ceph Dashboard可用URL: https://node01:8443/User: adminPassword: qdnqrh6owzYou can access the Ceph CLI with:sudo /usr/sbin/cephadm shell --fsid 3c6aed32-9644-11ee-b2df-17e04a57112a -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyringPlease consider enabling telemetry to help improve Ceph:ceph telemetry onFor more information see:https://docs.ceph.com/docs/master/mgr/telemetry/Bootstrap complete. # 引導創建集群完成
- 在node01上為新集群創建mon和mgr守護程序。
- 為Ceph集群生成新的SSH密鑰,并將其添加到root用戶的
/root/.ssh/authorized_keys文件中。 - 將公鑰的副本寫入
/etc/ceph/ceph.pub。 - 將最小配置文件寫入
/etc/ceph/ceph.conf。與集群通信需要此文件。 - 寫入
client.admin管理(特權!)密鑰/etc/ceph/ceph.client.admin.keyring - 將
_admin標簽添加到node01引導主機。默認情況下,任何帶有此標簽的主機都將(也)獲得/etc/ceph/ceph.conf和/etc/ceph/ceph.client.admin.keyring的副本。
驗證:查看集群狀態
cephadm類似與進入docker容器的docker exec命令

Ceph DashBoard訪問地址:https://192.168.64.128:8443。
沒有配置本地主機的DNS解析,不要直接使用主機名node01訪問)。

管理OSD
列出可用的OSD設備
# 查看設備列表,顯示可用作OSD的設備
ceph orch device ls [--hostname=...] [--wide] [--refresh]

部署OSD
# 創建新的OSD
ceph orch daemon add osd <host>:<device-path> [--verbose]
root@node01:/# ceph orch daemon add osd node01:/dev/sdb
Created osd(s) 0 on host 'node01'
root@node01:/# ceph orch daemon add osd node01:/dev/sdc
Created osd(s) 1 on host 'node01'
root@node01:/# ceph orch daemon add osd node01:/dev/sdd
Created osd(s) 2 on host 'node01'

刪除OSD
ceph orch osd rm <osd_id(s)> [--replace] [--force] # 刪除OSD
ceph orch device zap <hostname> <path> # 擦除設備(清除設備)

管理主機
列出主機信息
ceph orch host ls [--format yaml] [--host-pattern <name>] [--label <label>] [--host-status <status>] [--detail]

添加主機到集群
將新主機添加到集群,兩個步驟:
-
在新主機的root用戶的
authorized_keys文件中安裝群集的公共SSH密鑰:ssh-copy-id -f -i /etc/ceph/ceph.pub root@*<new-host>*
-
告訴Ceph集群新主機是集群的新節點:
ceph orch host add *<newhost>* [*<ip>*] [*<label1> ...*]

這里在將node03添加進集群的時候,node03節點的mgr服務沒有部署成功。重新放置部署。



從集群中刪除主機
從主機中刪除守護進程后,才可以安全的刪除主機。
ceph orch host rm <host> # 從集群中刪除主機

部署Ceph集群
按照上面的方法部署三臺設備的Ceph集群,步驟如下:
- 使用cephadm bootstrap引導部署Ceph單機集群
- 在引導主機node01上部署OSD
- 向集群中添加主機node02、node03
- 分別在node02和node03上部署OSD

至此,三臺設備的集群部署完成!通過Ceph Dashboard查看集群信息。
