#作者:閆乾苓
文章目錄
- 1.版本選擇
- Ceph版本發布歷史
- 目前官方在維護的版本
- 2.部署方法
- 3.服務器規劃
- 4.前置配置
- 4.1系統更新
- 4.2配置hosts
- cat >> /etc/hosts << EOF
- ssh-keygen
- ssh-copy-id ceph01
- ssh-copy-id ceph02
- ssh-copy-id ceph03
- 4.5 Python3
- 4.6 Systemd
- 4.7 LVM2
- 4.8 docker安裝
- 5.使用 cephadm 部署Ceph 集群
- 5.1安裝cephadm
- 5.2引導新集群
- 5.3啟用 Ceph CLI
- 5.4添加主機
- 5.4添加存儲(部署 OSD)
1.版本選擇
本文檔使用最新穩定版squid 19.2.0進行安裝部署測試
Ceph版本發布歷史
目前官方在維護的版本
名稱 | 發布時間 | 最新版本 | 停止維護時間(估計) |
---|---|---|---|
Squid | 2024-09-26 | 19.2.0 | 2026-09-19 |
Reef | 2023-08-07 | 18.2.4 | 2025-08-01 |
2.部署方法
使用官方推薦的Cephadm進行部署,Cephadm 通過引導單個主機、擴展集群以包含任何其他主機,然后部署所需的服務來創建新的 Ceph 集群。
3.服務器規劃
IP | Hostname | 硬件配置 |
---|---|---|
192.168.61.11 | ceph01 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
192.168.61.12 | ceph02 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
192.168.61.13 | ceph03 | CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB |
操作系統信息:
系統版本:BigCloud Enterprise Linux release 8.8 (Core)
內核:5.10.134-12.2.el8.bclinux.x86_64
4.前置配置
4.1系統更新
(所有節點執行)
# yum update
4.2配置hosts
(所有節點執行)
cat >> /etc/hosts << EOF
192.168.61.11 ceph01
192.168.61.12 ceph02
192.168.61.13 ceph03
EOF
4.3節點間ssh免密配置
(ceph01執行)
ssh-keygen
ssh-copy-id ceph01
ssh-copy-id ceph02
ssh-copy-id ceph03
4.4時間同步配置
使用chrony做為時間同步服務,ceph01作為集群內時間服務的server端,配置向公網ntp服務器(ntp.aliyun.com)同步時間,ceph02、ceh03作為集群內時間服務的client端,向ceph01 server端同步時間。
所有節點查看chrony是否安裝
# rpm -qa |grep chrony
chrony-4.2-1.0.1.an8.x86_64
如果沒有安裝,執行以下命令進行安裝
# yum install chrony備份原配置文件
# cp /etc/chrony.conf{,.df}ceph01節點(chrony服務端,需要能訪問外網ntpserver)修改配置文件
# cat > /etc/chrony.conf << EOF
pool ntp.aliyun.com iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
allow 192.168.61.0/24
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOFceph02、ceph03節點(chrony客戶端)修改配置文件
# cat > /etc/chrony.conf << EOF
pool ceph01 iburst
driftfile /var/lib/chrony/drift
makestep 1.0 3
rtcsync
keyfile /etc/chrony.keys
leapsectz right/UTC
logdir /var/log/chrony
EOF所有節點執行chronyd服務器重啟并設置開機啟動
# systemctl restart chronyd
# systemctl enable chronyd所有節點查看chronyd 服務是否正常
# systemctl status chronydceph01 查看配置的NTP服務器的狀態
[root@ceph01 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^* 203.107.6.88 2 7 377 35 -1438us[-1796us] +/- 24msceph02、ceph03查看配置的NTP服務器的狀態
[root@ceph02 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^? ceph01 0 8 0 - +0ns[ +0ns] +/- 0ns[root@ceph03 ~]# chronyc sources -v
MS Name/IP address Stratum Poll Reach LastRx Last sample
========================================================
^? ceph01 0 8 0 - +0ns[ +0ns] +/- 0ns# 所有節點查看系統時間與時區是否設置正確
# date
4.5 Python3
默認已安裝,所有節點查看:(這個是python最低版本要求,是否是唯一的支持版本)
# python3 -V
Python 3.6.8
4.6 Systemd
默認已安裝,所有節點查看:
# systemctl --version
systemd 239 (239-74.0.2.an8.3)
4.7 LVM2
默認已安裝,所有節點查看:
# rpm -q lvm2
lvm2-2.03.14-9.oe2203sp2.x86_64
4.8 docker安裝
# dnf -y install dnf-plugins-core# dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo## 查看可安裝版本列表
# dnf list docker-ce --showduplicates | sort -r# dnf install docker-ce-26.1.3-1.el8 docker-ce-cli-26.1.3-1.el8 containerd.io docker-buildx-plugin docker-compose-plugin# systemctl enable docker
# systemctl start docker
# systemctl status docker# docker info |grep "Server Version:"
Server Version: 26.1.3
5.使用 cephadm 部署Ceph 集群
5.1安裝cephadm
(ceph01節點執行)
指定ceph的版本,比如本文是squid 19.2.0版本,并下載cephadm的可執行程序
[root@ceph01 ~]# CEPH_RELEASE=19.2.0
[root@ceph01 ~]# curl --silent --remote-name --location https://download.ceph.com/rpm-${CEPH_RELEASE}/el9/noarch/cephadm
[root@ceph01 ~]# chmod +x cephadm
因cephadm沒有對bclinux系統做適配,所以添加cephadm repo源有如下提示:
[root@ceph01 ~]# ./cephadm add-repo --release squid
ERROR: Distro bclinux version 8.8 not supported
Ceph squid19.2.0技術上支持centos7/8/9等主流linux系統,僅對linux kernel提出最低版本要求(4.19以上)。官方尤其對centos9做了全面的測試并提供各個組件的官方安裝包。而且這里的部署是裸金屬上的容器化部署,對系統平臺要求放寬。為了讓cephadm支持本環境的安裝,需要通過修改bclinux8的/etc/os-release達到ceph squid19.2.0 可以在bclinux8上安裝的目的。
[root@ceph01 ~]# cp /etc/os-release{,.df}
[root@ceph01 ~]# cat > /etc/os-release << EOF
NAME="CentOS Stream"
VERSION="9"
ID="centos"
ID_LIKE="rhel fedora"
VERSION_ID="9"
PLATFORM_ID="platform:el9"
PRETTY_NAME="CentOS Stream 9"
ANSI_COLOR="0;31"
LOGO="fedora-logo-icon"
CPE_NAME="cpe:/o:centos:centos:9"
HOME_URL="https://centos.org/"
BUG_REPORT_URL="https://issues.redhat.com/"
REDHAT_SUPPORT_PRODUCT="Red Hat Enterprise Linux 9"
REDHAT_SUPPORT_PRODUCT_VERSION="CentOS Stream"
EOF
雖然獨立的 cephadm 足以引導集群,但最好在主機上安裝該命令
[root@ceph01 ~]# ./cephadm add-repo --release squid
Writing repo to /etc/yum.repos.d/ceph.repo...
Enabling EPEL...
Completed adding repo.[root@ceph01 ~]# ./cephadm install
Installing packages ['cephadm']...
通過運行以下命令確認cephadm現在位于PATH 環境變量中
[root@ceph01 ~]# which cephadm
/usr/sbin/cephadm
5.2引導新集群
創建新 Ceph 集群的第一步是在 Ceph 集群的第一臺主機上運行該命令。在 Ceph 集群的第一臺主機上運行該命令會創建 Ceph 集群的第一個 Monitor 守護進程 。您必須將 Ceph 集群的第一臺主機的 IP 地址傳遞給該命令,因此您需要知道該主機的 IP 地址。
[root@ceph01 ~]# cephadm bootstrap --mon-ip 192.168.61.11
此命令將:
- 在本地主機上為新集群創建一個監視器和一個管理器守護進程。
- 為 Ceph 集群生成新的 SSH 密鑰并將其添加到 root 用戶/root/.ssh/authorized_keys文件中。
- 將公鑰的副本寫入/etc/ceph/ceph.pub。
- 向/etc/ceph/ceph.conf寫入一個最小配置文件。此文件是與 Ceph 守護進程通信所必需的。
- 將client.admin管理(特權!)密鑰的副本寫入/etc/ceph/ceph.client.admin.keyring。
- 將標簽添加到引導主機。默認情況下,任何具有此標簽的主機也將獲得/etc/ceph/ceph.conf/和/etc/ceph/ceph.client.admin.keyring _admin的副本。
引導集群命令正常結束輸出信息如下:
Ceph Dashboard is now available at:URL: https://ceph01:8443/User: adminPassword: b8c7zgjz8g
Enabling client.admin keyring and conf on hosts with "admin" label
Saving cluster configuration to /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/config directory
You can access the Ceph CLI as following in case of multi-cluster or non-default config:sudo /usr/sbin/cephadm shell --fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd -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/sbin/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.
5.3啟用 Ceph CLI
[root@ceph01 ~]# cephadm shell
Inferring fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd
Inferring config /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config
Using ceph image with id '37996728e013' and tag 'v19' created on 2024-09-28 06:08:21 +0800 CST
quay.io/ceph/ceph@sha256:200087c35811bf28e8a8073b15fa86c07cce85c575f1ccd62d1d6ddbfdc6770a
[ceph: root@ceph01 /]# ceph -scluster:id: 0978cb18-dc68-11ef-b0d7-000c29460ffdhealth: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum ceph01 (age 13m)mgr: ceph01.vqsdyy(active, since 11m)osd: 0 osds: 0 up, 0 indata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:
5.4添加主機
要將每個新主機添加到集群,請執行兩個步驟:
1.在新主機的root用戶的authorized_keys文件中安裝集群的公共SSH密鑰:
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph02
[root@ceph01 ~]# ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph03
2.告訴Ceph新節點是集群的一部分:
[root@ceph01 ~]# cephadm shell
Inferring fsid 0978cb18-dc68-11ef-b0d7-000c29460ffd
Inferring config /var/lib/ceph/0978cb18-dc68-11ef-b0d7-000c29460ffd/mon.ceph01/config
Using ceph image with id '37996728e013' and tag 'v19' created on 2024-09-28 06:08:21 +0800 CST
quay.io/ceph/ceph@sha256:200087c35811bf28e8a8073b15fa86c07cce85c575f1ccd62d1d6ddbfdc6770a
[ceph: root@ceph01 /]# ceph orch host add ceph02 192.168.61.12
Added host 'ceph02' with addr '192.168.61.12'
[ceph: root@ceph01 /]# ceph orch host add ceph03 192.168.61.13
Added host 'ceph03' with addr '192.168.61.13'
查看集群中所有主機:
[ceph: root@ceph01 /]# ceph orch host ls
HOST ADDR LABELS STATUS
ceph01 192.168.61.11 _admin
ceph02 192.168.61.12
ceph03 192.168.61.13
3 hosts in cluster
5.4添加存儲(部署 OSD)
集群中每個節點增加單獨的500G磁盤作為存儲盤
[root@ceph01 ~]# lsblk
..
nvme0n2 259:3 0 500G 0 disk
從特定主機上的特定設備創建高級 OSD
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph01:/dev/nvme0n2
Created osd(s) 0 on host 'ceph01'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph02:/dev/nvme0n2
Created osd(s) 1 on host 'ceph02'
[ceph: root@ceph01 /]# ceph orch daemon add osd ceph03:/dev/nvme0n2
Created osd(s) 2 on host 'ceph03'
增加磁盤完成后查看集群狀態已正常
[ceph: root@ceph01 /]# ceph -scluster:id: 0978cb18-dc68-11ef-b0d7-000c29460ffdhealth: HEALTH_OKservices:mon: 3 daemons, quorum ceph01,ceph02,ceph03 (age 26m)mgr: ceph01.vqsdyy(active, since 28m), standbys: ceph02.dqnwfvosd: 3 osds: 3 up (since 16m), 3 in (since 16m)data:pools: 1 pools, 1 pgsobjects: 2 objects, 449 KiBusage: 82 MiB used, 1.5 TiB / 1.5 TiB availpgs: 1 active+clean