#作者:闫乾苓
文章目录
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
ceph01_40">ssh-copy-id ceph01
ceph02_41">ssh-copy-id ceph02
ceph03_42">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
cephadm_Ceph__151">5.使用 cephadm 部署Ceph 集群
cephadm_152">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