CentOS8离线安装部署ceph集群

本文档详细介绍了如何使用Cephadm在CentOS8环境下部署Ceph存储集群,包括Ceph的基本概念、存储类型、Ceph架构,以及离线安装包的制作和使用。在集群节点间设置了SSH免密登录,并通过cephadm添加节点到集群,安装OSD服务,最终创建文件系统卷。整个过程涵盖了从基础准备到集群搭建的完整步骤。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1.概念简介

官方地址:https://ceph.com/en/
官方文档:https://docs.ceph.com/en/latest/
Github地址:https://github.com/ceph/ceph
版本发布地址:https://docs.ceph.com/en/latest/releases/
版本命名规则,第二个数字表示:
x.0.x:开发版
x.1.x:候选版
x.2.x:稳定、修正版,建议都是用稳定版本进行

1.1 存储类型

1.1.1 DAS设备

DAS设备:SAS、SATA、SCSI、IDE、USB
无论哪种接口,都是存储设备驱动下的磁盘设备,磁盘设备这种存储是直接接入到主板总线的

1.1.2 NAS设备:文件服务

NAS设备:NFS、CIFS、FTP
几乎所有的网络存储设备都是以文件系统进行使用

1.1.3 SAN设备:块服务

SCSI协议、FC SAN、iSCSI
基于SAN提供给客户端操作系统的一种块设备接口,设备之间主要通过SCSI协议完成通信
SCSI结构类似于TCP/IP协议,也有很多层,但是SCSI协议主要用来进行存储数据操作。既然分层实现,即有的层可以被替代。例如将物理层基于FC方式实现,就形成了FCSAN,如果基于以太网方式来传递数据,就形成了iSCSI模式。

1.2 Ceph 架构简介

Ceph: 是一个多版本存储系统,把每一个待管理的数据流(如一个文件)切分为一到多个固定大小的对象数据,并以其为原子单元完成数据存取。
对象数据的底层存储服务: 由多台主机组成的存储集群,该集群也被称为 RADOS(Reliable Automatic Distributed Object Store)存储集群,即可靠、自动化、分布式对象存储系统。
librados: 是RADOS存储集群的API,支持C、C++、Java、Python、Ruby、PHP等编程语言。
在这里插入图片描述

不管是为云平台提供 Ceph 对象存储、 Ceph 块设备、Ceph 文件系统还是把 Ceph 作为他用,所有 Ceph 存储集群的部署都始于部署一个个 Ceph 节点、网络和 Ceph 存储集群。 Ceph 存储集群至少需要一个 Ceph Monitor 和两个 OSD 守护进程。而运行 Ceph 文件系统客户端时,则必须要有元数据服务器( Metadata Server )。
在这里插入图片描述

Ceph OSDs: Ceph OSD 守护进程( Ceph OSD )的功能是存储数据,处理数据的复制、恢复、回填、再均衡,并通过检查其他OSD 守护进程的心跳来向 Ceph Monitors 提供一些监控信息。当 Ceph 存储集群设定为有2个副本时,至少需要2个 OSD 守护进程,集群才能达到 active+clean 状态( Ceph 默认有3个副本,但可以调整副本数)。

Monitors: Ceph Monitor 维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。 Ceph 保存着发生在Monitors 、 OSD 和 PG上的每一次状态变更的历史信息(称为 epoch )。

MDSs: Ceph 元数据服务器( MDS )为 Ceph 文件系统存储元数据(也就是说,Ceph 块设备和 Ceph 对象存储不使用MDS )。元数据服务器使得 POSIX 文件系统的用户们,可以在不对 Ceph 存储集群造成负担的前提下,执行诸如 ls、find 等基本命令。

Ceph 把客户端数据保存为存储池内的对象。通过使用 CRUSH 算法, Ceph 可以计算出哪个归置组(PG)应该持有指定的对象(Object),然后进一步计算出哪个 OSD 守护进程持有该归置组。 CRUSH 算法使得 Ceph 存储集群能够动态地伸缩、再均衡和修复。

2.集群节点规划

操作系统:CentOS-8-x86_64-1905-dvd1.iso
使用虚拟机搭建集群,虚拟机创建的时候,系统盘设置50G,数据盘设置100G

节点IP数据盘(OSD)角色
ceph-mon1192.168.120.61MON、MDS、PROM、GRAFANA
ceph-osd1192.168.120.62/dev/sdbOSD
ceph-osd2192.168.120.63/dev/sdbOSD

3.准备工作

# 集群三台节点,修改 /etc/hosts 文件,并添加下面内容:
192.168.120.61 ceph-mon1
192.168.120.62 ceph-osd1
192.168.120.63 ceph-osd2

4.使用 cephadm 部署一个 ceph 集群

Ceph官网支持部署方式:https://docs.ceph.com/en/pacific/install/

部署方式描述
Cephadm使用容器和 systemd 安装和管理 Ceph 集群,并与 CLI 和仪表板 GUI 紧密集成,支持 Octopus 以后的版本,当前官方推荐部署方式,cephadm 需要容器支持(podman或docker)和Python 3
Rook部署和管理运行在 Kubernetes 中的 Ceph 集群,同时也支持通过 Kubernetes api 管理存储资源和供应。推荐使用 Rook 在 Kubernetes 中运行 Ceph,或者将现有的 Ceph 存储集群连接到 Kubernetes,只支持Nautilus和以后的新版本

4.1 离线安装包

因为后续需要离线部署到实际工作环境中,所以参照网上的部署方案,制作了一个简单的离线安装部署包。安装包里面的 cephadm 程序被修改了,将里面的 command_pull 函数里面 cmd 数组中的 ‘pull’ 改为了 ‘images’ 。因为离线部署不需要使用 docker 或者 podman 去实际拉取镜像,使用本地镜像即可。离线安装包只适合在 CentOS 8 x86_64 下使用,其他系统环境无法兼顾。离线安装包主要是打包了 podman、python3、smartmontools、chrony 的安装包,以及 cephadm 及其需要用到的几个容器镜像。

cephadm 使用到的镜像列表如下:

sudo podman images
REPOSITORY                   TAG      IMAGE ID      CREATED        SIZE
quay.ceph.io/ceph-ci/ceph    v17.0.0  fb6c62c88122  11 hours ago   1.14 GB
docker.io/ceph/ceph-grafana  6.7.4    80728b29ad3f  3 months ago   495 MB
docker.io/prom/prometheus    v2.18.1  de242295e225  11 months ago  141 MB
docker.io/prom/alertmanager  v0.20.0  0881eb8f169f  16 months ago  53.5 MB

离线安装包下载地址:
安装包1:需要修改脚本,不建议使用,如果使用,请参考4.2章节进行修改
链接:https://pan.baidu.com/s/1_0lDcH8I4CsgI6eRPFbcJQ
提取码:tq0z
ceph_centos8_x86_64_20210412_114555.7z、p7zip-16.02-16.el8.x86_64.rpm
安装包2: 不需要修改脚本,可以直接执行 ./install.sh,建议下载使用安装包2
链接:https://pan.baidu.com/s/1H9tT74Wo2QwJ_s1wWH2e9A
提取码:txy4
ceph_centos8_x86_64.tar.gz

注意:在安装完成之后,可以将 cephadm 复制到 /usr/bin 目录下,后续可以直接使用,无需指定路径。

4.2 在 ceph-mon1 节点进行部署

将离线安装包上传到 ceph-mon1 节点:ceph_centos8_x86_64_20210412_114555.7z、p7zip-16.02-16.el8.x86_64.rpm
安装:rpm -ivh p7zip-16.02-16.el8.x86_64.rpm
解压:7za x ceph_centos8_x86_64_20210412_114555.7z
解压后进入 ceph_centos8_x86_64 文件夹,执行下面命令进行基础依赖组件安装:

# 修改脚本
vim cephadm
# Default container images -----------------------------------------------------
DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:master'
修改为:
# Default container images -----------------------------------------------------
DEFAULT_IMAGE = 'quay.ceph.io/ceph-ci/ceph:v17.0.0'
vim install.sh
podman load -i docker.io/prom/node-exporter.tar  docker.io/prom/node-exporter:v0.18.1
修改为:
podman load -i docker.io/prom/node-exporter.tar  docker.io/prom/node-exporter:v0.18.1
vim目录添加如下两个rpm包,否则,导入镜像报错:
libseccomp-2.5.1-1.el8.x86_64.rpm
libseccomp-devel-2.5.1-1.el8.x86_64.rpm
# 执行 install.sh 脚本,安装必要的一些软件,以及导入镜像到容器
[root@ceph-mon1 ceph_centos8_x86_64]# ./install.sh

安装完成基础组件后,再执行 cluster.gen.sh 脚本来创建集群,执行的过程中,会要求输入 MON 节点的 IP,直接输入后回车即可:

[root@ceph-mon1 ceph_centos8_x86_64]# ./cluster.gen.sh
... ...
Ceph Monitor维护着展示集群状态的各种图表,包括监视器图、 OSD 图、归置组( PG )图、和 CRUSH 图。
请输入 MON (Ceph Monitor) 节点 IP:192.168.120.61
... ...
Enabling firewalld port 8443/tcp in current zone...
Ceph Dashboard is now available at:

             URL: https://ceph-mon1:8443/
            User: admin
        Password: 0yaqy67njv

You can access the Ceph CLI with:

        sudo ./cephadm shell --fsid 192e064c-e56a-11ec-92a0-000c2965ed0e -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.
sudo ./cephadm shell --fsid 192e064c-e56a-11ec-92a0-000c2965ed0e -c /etc/ceph/ceph.conf -k /etc/ceph/ceph.client.admin.keyring

使用以上用户名和密码访问:https://192.168.120.61:8443/
在这里插入图片描述
在这里插入图片描述

4.3 添加 ceph-ods1、ceph-ods2 节点到集群

4.3.1 集群节点间的 SSH 免密访问设置

# 在 ceph-mon1节点执行
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd1
ssh-copy-id -f -i /etc/ceph/ceph.pub root@ceph-osd2

# 或者,需要在集群三个节点,都执行以下命令,保证集群间所有节点都是免密登录的:
ssh-keygen -t rsa
ssh-copy-id -f -i /root/.ssh/id_rsa.pub root@ceph-osd1
ssh-copy-id -f -i /root/.ssh/id_rsa.pub root@ceph-osd2

4.3.2 添加节点到集群

直接将离线安装包拷贝到 ceph-osd1、ceph-osd2 节点上,并执行 install.sh 脚本
其实保证 ceph-osd1、ceph-osd2节点(python3、podman)即可

# 执行完成上面的操作之后,可以回到 ceph-mon1 节点,执行下面的命令将 ceph-osd1 和 ceph-osd2 添加到集群:
ceph orch host add ceph-osd1 192.168.120.62
ceph orch host add ceph-osd2 192.168.120.63

[root@ceph-mon1 ~]# ceph orch host add ceph-osd1 192.168.120.62
Added host 'ceph-osd1'
[root@ceph-mon1 ~]# ceph orch host add ceph-osd2 192.168.120.63
Added host 'ceph-osd2'

在这里插入图片描述

# 在 ceph-mon1 节点执行,给节点添加标签
ceph orch host label add ceph-osd1 mgr
ceph orch host label add ceph-osd2 mgr

ceph orch apply mgr label:mgr

[root@ceph-mon1 ~]# ceph orch host label add ceph-osd1 mgr
Added label mgr to host ceph-osd1
[root@ceph-mon1 ~]# ceph orch host label add ceph-osd2 mgr
Added label mgr to host ceph-osd2
[root@ceph-mon1 ~]# ceph orch apply mgr label:mgr
Scheduled mgr update...

在这里插入图片描述

4.4 在 ceph-ods1、ceph-ods2 节点安装 OSDs

下面的操作都是在 ceph-ods1、ceph-ods2 节点进行的,两个节点都要执行

4.4.1 依赖项安装

保证节点 ceph-osd1、ceph-osd2 节点(ceph-common、chrony、docker.io、quay.ceph.io)即可

将 ceph-mon1 节点上的 /etc/ceph/ceph.conf 和 ceph.client.admin.keyring 文件拷贝到其他节点即可
scp /etc/ceph/ceph.conf root@ceph-osd1:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@ceph-osd1:/etc/ceph/

scp /etc/ceph/ceph.conf root@ceph-osd2:/etc/ceph/
scp /etc/ceph/ceph.client.admin.keyring root@ceph-osd2:/etc/ceph/

保证 ceph-osd1、ceph-osd2 节点 执行 ceph 命令不报错

4.4.2 添加 OSD 角色(服务)到集群

前面添加了节点到集群,并且也在每个节点都进行必要的依赖项安装,以及 podman 镜像的导入,下面可以进行 OSD 角色(服务)的添加了。
在任意节点执行(因为都已经安装了 ceph-common,所以那个节点都一样)

# 在 ceph-osd1 和 ceph-osd2 节点创建 osd 服务
# 注意:下面的  /dev/sdb 是在节点机器上的一个未使用的磁盘
ceph orch daemon add osd ceph-osd1:/dev/sdb
ceph orch daemon add osd ceph-osd2:/dev/sdb

# 添加别的角色也是类似的操作,比如添加一个 mon
ceph orch daemon add mon ceph-osd1:192.168.120.62/24

在这里插入图片描述
在这里插入图片描述

查看集群状态(因为只有两个 OSDs ,所以会有警告):
[root@ceph-mon1 ~]# ceph -s
  cluster:
    id:     192e064c-e56a-11ec-92a0-000c2965ed0e
    health: HEALTH_WARN
            OSD count 2 < osd_pool_default_size 3

  services:
    mon: 2 daemons, quorum ceph-mon1,ceph-osd1 (age 69s)
    mgr: ceph-mon1.otlyjq(active, since 6m)
    osd: 2 osds: 2 up (since 109s), 2 in (since 2m)

  data:
    pools:   0 pools, 0 pgs
    objects: 0 objects, 0 B
    usage:   9.9 MiB used, 200 GiB / 200 GiB avail
    pgs:

5.创建一个文件系统卷

# 可以先创建两个 Pool,如果不创建的话,会默认创建的
# ceph osd pool create testfs.data    # 用于保存数据
# ceph osd pool create testfs.meta    # 用于保存元数据

# 创建一个文件系统卷 testfs
# 下面命令中的 testfs.meta testfs.data 不指定就会创建默认名称是
# cephfs.testfs.meta 和 cephfs.testfs.data 的 Pool
# 如果上面创建了别的名字的 Pool ,这里也是可以用的,指定 Pool 名称就是
ceph fs volume create testfs        # testfs.meta testfs.data

# 查看一下当前的文件系统卷有哪些
[root@ceph-mon1 ~]# ceph fs volume ls
[
    {
        "name": "testfs"
    }
]

创建完成之后,添加一个 mds (元数据)服务

# 设置一下副本数量
ceph orch apply mds testfs --placement="2 ceph-osd1 ceph-osd2"

# 在节点 ceph-mon1 上添加 mds 服务
ceph orch daemon add mds testfs ceph-mon1

# 查看一下文件系统状态
[root@ceph-mon1 ~]# ceph fs status testfs
testfs - 0 clients
======
RANK  STATE             MDS               ACTIVITY     DNS    INOS   DIRS   CAPS
 0    active  testfs.ceph-mon1.mzkpbb  Reqs:    0 /s    10     13     12      0
       POOL           TYPE     USED  AVAIL
cephfs.testfs.meta  metadata  64.0k  94.9G
cephfs.testfs.data    data       0   63.3G
MDS version: ceph version 17.0.0-2904-g116ef525 (116ef52566c5fb8f7621439218fb492595e2d85a) quincy (dev)

使用命令 ceph mds stat 查看下 mds 服务状态

[root@ceph-mon1 ~]# ceph mds stat
testfs:1 {0=testfs.ceph-mon1.mzkpbb=up:active}

重新看一下集群状态:

[root@ceph-mon1 ~]# ceph -s
  cluster:
    id:     192e064c-e56a-11ec-92a0-000c2965ed0e
    health: HEALTH_WARN
            Degraded data redundancy: 22/66 objects degraded (33.333%), 10 pgs degraded, 128 pgs undersized
            OSD count 2 < osd_pool_default_size 3

  services:
    mon: 2 daemons, quorum ceph-mon1,ceph-osd1 (age 8m)
    mgr: ceph-mon1.otlyjq(active, since 13m)
    mds: 1/1 daemons up
    osd: 2 osds: 2 up (since 9m), 2 in (since 9m)

  data:
    volumes: 1/1 healthy
    pools:   4 pools, 128 pgs
    objects: 22 objects, 2.3 KiB
    usage:   12 MiB used, 200 GiB / 200 GiB avail
    pgs:     22/66 objects degraded (33.333%)
             118 active+undersized
             10  active+undersized+degraded

在这里插入图片描述

<think>好的,用户的问题是关于在Kylin V10系统上使用cephadm进行Ceph集群离线部署。首先,我需要回忆之前提供的关于Kylin V10和cephadm的相关信息。用户之前可能已经了解过一些基本步骤,但这次需要详细的离线部署教程。 首先,离线部署的关键在于准备离线环境所需的软件包和镜像。Cephadm需要特定的容器镜像,比如quay.io的ceph/ceph镜像,以及cephadm工具本身。由于是离线环境,用户需要提前下载这些镜像并导入到本地仓库。另外,Kylin V10是基于CentOS的,可能需要配置本地yum源或者使用rpm包安装依赖。 接下来,用户可能需要配置主机环境,比如设置主机名解析,确保所有节点可以互相通信,关闭防火墙和SELinux,避免安装过程中的网络问题。这些步骤在之前的引用中提到的ceph1和ceph2节点操作可能相关,需要指导用户正确设置。 然后是部署Ceph集群的具体步骤。使用cephadm bootstrap命令初始化第一个节点,但离线环境下需要指定本地镜像仓库的路径。这里需要确保命令中的--registry-url和--registry-username/password参数正确,指向用户的内网仓库。初始化成功后,添加其他节点和OSD也是关键步骤,用户可能需要通过ceph orch host add和ceph orch daemon add osd命令来完成。 在验证集群状态时,ceph -s和ceph osd tree命令可以帮助用户确认集群是否健康,OSD是否正确添加。此外,离线环境常见的问题可能是镜像拉取失败或依赖包缺失,需要提醒用户检查镜像路径和依赖安装。 用户可能还会遇到问题,比如容器镜像无法加载或服务无法启动。需要给出具体的解决步骤,例如检查容器服务状态,重新导入镜像,或者手动安装缺失的rpm包。同时,用户可能需要配置本地yum源,确保所有节点都能访问必要的软件包。 最后,生成相关问题时,要考虑用户后续可能的需求,比如扩容集群、监控配置或性能调优,这些都是用户在部署完成后可能遇到的下一步操作。需要确保这些问题能帮助用户进一步管理和优化他们的Ceph集群。</think>以下是在Kylin V10系统上使用cephadm进行Ceph集群离线部署的详细步骤: ### 一、环境准备 1. **离线软件包准备** - 下载Ceph容器镜像:$quay.io/ceph/ceph:v17.2.6$(版本需与OS适配) - 获取cephadm工具:从有网络环境导出$cephadm$脚本[^1] 2. **主机环境配置** ```bash # 所有节点配置host解析 echo "192.168.1.10 ceph-mon1" >> /etc/hosts echo "192.168.1.11 ceph-osd1" >> /etc/hosts # 关闭防火墙和SELinux systemctl stop firewalld && systemctl disable firewalld setenforce 0 && sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config ``` ### 二、离线部署流程 1. **安装基础依赖** ```bash # 配置本地yum源后安装 yum install -y podman lvm2 chrony ``` 2. **初始化集群** ```bash # 加载离线镜像 podman load -i ceph-v17.2.6.tar # 执行bootstrap(指定本地仓库) cephadm bootstrap --mon-ip 192.168.1.10 \ --registry-url registry.local:5000 \ --registry-username admin \ --registry-password 123456 ``` 3. **添加存储节点** ```bash # 在管理节点执行 ceph orch host add ceph-osd1 ceph orch daemon add osd ceph-osd1:/dev/sdb ``` ### 三、部署验证 1. 检查集群状态 ```bash ceph -s # 应显示HEALTH_OK ceph osd tree # 查看OSD分布 ``` ### 四、常见问题处理 1. **容器镜像加载失败** ```bash podman images | grep ceph # 确认镜像存在 systemctl restart podman # 重启容器服务 ``` 2. **OSD添加异常** 参考故障处理流程: ```bash ceph osd rm 3 --force ceph orch daemon rm osd.3 ceph orch daemon add osd ceph-osd1:/dev/sdc ``` ### 附:关键配置说明 $$ Ceph_{cluster} = \bigcup_{i=1}^n (MON_i \cup OSD_j) \quad \text{where } n \geq 3 \text{ for HA} $$
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

@TangXin

路漫漫其修远兮,吾将上下而求索

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值