基于BClinux8部署Ceph 19.2(squid)集群

ops/2025/3/22 1:16:15/

#作者:闫乾苓

文章目录

  • 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版本发布历史

在这里插入图片描述

目前官方在维护的版本

名称发布时间最新版本停止维护时间(估计)
Squid2024-09-2619.2.02026-09-19
Reef2023-08-0718.2.42025-08-01

2.部署方法

使用官方推荐的Cephadm进行部署,Cephadm 通过引导单个主机、扩展集群以包含任何其他主机,然后部署所需的服务来创建新的 Ceph 集群。

3.服务器规划

IPHostname硬件配置
192.168.61.11ceph01CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB
192.168.61.12ceph02CPU: 4c、Mem: 8GB、Hdd1: 100G、Hdd2: 500GB
192.168.61.13ceph03CPU: 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

http://www.ppmy.cn/ops/167250.html

相关文章

MPC算法路径跟踪_Matlab实现

在机器人控制领域&#xff0c;模型预测控制&#xff08;MPC&#xff09;因其能够处理动态约束和多目标优化的特性&#xff0c;成为路径跟踪的热门方案。近期&#xff0c;我在 GitHub 上发现了 Mr.Winter 的MPC路径规划项目&#xff0c;其代码实现简洁且功能完整。本文将结合理论…

Java protected 关键字详解及探究过程(详细、准确)

参考菜鸟教程&#xff1a;Java protected 关键字详解&#xff0c;初步学习了protected可见性相关的内容&#xff0c;但发现其仍有不足之处&#xff0c;特此自行探究。 protected可见性&#xff1a; 先给出关于protected可见性的结论&#xff1a; protected可见性遵循这样的优…

88页手册上线 | 企业级本地私有化DeepSeek实战指南

DeepSeek为普通企业在低成本、高性能、安全可控的前提下私有化部署AI大模型提供了可行路径。 云轴科技ZStack全新推出《企业级本地私有化DeepSeek实战手册》&#xff08;点击免费下载&#xff09;&#xff0c;直击企业痛点&#xff0c;从7B轻量化模型到671B超大规模部署&#…

Redis 实现分布式锁全解析:从原理到实践

在分布式系统开发的广袤领域中&#xff0c;资源竞争问题宛如隐藏在暗处的礁石&#xff0c;时刻威胁着系统的稳定性与数据一致性。当多个服务实例如同脱缰野马般同时冲向同一份共享数据&#xff0c;试图进行修改操作时&#xff0c;一场混乱的 “数据抢夺战” 便悄然上演。此时&a…

c++介绍进程间的通信一

进程的数据空间是独立的&#xff0c;私有的&#xff0c;不能相互访问&#xff0c;但是某些情况下进程之间需要通信来实现某些功能和交换数据。 1.数据的传&#xff1a;一个进程需要将它的数据发送给另一个进程。 2.共享数据&#xff1a;多个进程要操作共享数据&#xff0c;一…

Stable Diffusion lora训练(一)

一、不同维度的LoRA训练步数建议 2D风格训练 数据规模&#xff1a;建议20-50张高质量图片&#xff08;分辨率≥10241024&#xff09;&#xff0c;覆盖多角度、多表情的平面风格。步数范围&#xff1a;总步数控制在1000-2000步&#xff0c;公式为 总步数 Repeat Image Epoch …

windows下使用vscode+cline插件体验MCP,体验使用AI控制浏览器,踩坑记录(至少让你节省3个小时弯路版)(喂饭级别)

为什么网上天天说MCP,你这儿却一点动静都没有? 1️⃣ 人家很早之前就用上了制定标准的Claude desktop,这玩意儿在咱这儿用不了。 对策:使用vscode+cline+deepseek(或其它同级别国产大模型deepseek-V3其实有时比R1效果还好) 2️⃣ 人家也Claude,但人家能用Cursor,咱太…

25.3.19(java 数据类型 及数据之间的转换)

1.自动转换路线&#xff08;!!!只能沿着箭头转换&#xff09; 而且不在一条路线上的不能相互转换 随着箭头&#xff0c;数据的精度越来越高 char->int->long->float->double byte->short->int->long->float->double tips:小数的类型默认是doub…