使用Ceph-deploy部署Ceph集群

本文介绍了如何使用Ceph-deploy部署Ceph存储集群,包括Ceph的主要组件如Monitor、OSD、MDS等,以及Ceph网络配置。文章对比了Cephadm和ROOK等部署工具,并提供了RHEL8环境下Ceph集群的规划和搭建步骤,包括添加主机、安装软件包、初始化节点、配置OSD等。此外,还讨论了Ceph的扩展和高可用性设置。

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

Ceph简介

Ceph的LTS版本是Nautilus,它在2019年发布。


Ceph的主要组件

Ceph 是一个分布式存储系统,由多个组件构成,主要包括以下几个组件:

  • Monitor:

    • 一个Ceph集群需要多个Monitor组成的小集群,用来保存OSD的元数据。
  • OSD

    • OSD 全称Object Storage Device,也就是负责响应客户端请求返回具体数据的进程。一个Ceph集群一般都有很多个OSD,Ceph最终数据也是由OSD保存到磁盘上的。
  • MDS

    • MDS全称Ceph Metadata Server,是CephFS服务依赖的元数据服务。如果不使用文件存储,则不需要安装。
  • Object

    • Ceph最底层的存储单元是Object对象,每个Object包含元数据和原始数据。
  • PG

    • OSD的PG,意思是放置组
    • PG全称Placement Grouops,是一个逻辑的概念,一个PG包含多个OSD。引入PG这一层其实是为了更好的分配数据和定位数据。
  • RADOS

    • RADOS全称Reliable Autonomic Distributed Object Store,是Ceph集群的精华,用户实现数据分配、Failover等集群操作。
  • Libradio

    • Librados是Rados提供库,因为RADOS是协议很难直接访问,因此上层的RBD、RGW和CephFS都是通过librados访问的,目前提供PHP、Ruby、Java、Python、C和C++支持。
  • CRUSH

    • CRUSH是Ceph使用的数据分布算法,类似一致性哈希,让数据分配到预期的地方。
  • RBD

    • RBD全称RADOS block device,是Ceph对外提供的块设备服务。
  • RGW

    • RGW全称RADOS gateway,是Ceph对外提供的对象存储服务,接口与S3和Swift兼容,如果不使用对象存储则不需要安装。
  • CephFS

    • CephFS全称Ceph File System,是Ceph对外提供的文件系统服务。

需要注意的是,Ceph 的每个组件都可以运行在多台服务器上形成一个分布式集群,以实现高可用性和数据冗余等特性。此外,Ceph 还支持多种存储后端,包括 FileStoreBluestore 两种主要类型,以便为不同的应用场景提供更好的性能和容错能力。


Ceph网络

服务名端口号描述
Monitor6789/tcp与Ceph集群通信
Monitor3300/tcp
MGR7000/tcpCeph管理面板
MGR8003/tcpCeph Restful API管理 with HTTPS
MGR9283/tcpPrometheus插件通信接口
OSD6800-7300/tcp每个OSD在这个范围内使用3个端口,一个用来与客户端和监视器进行通信,一个用来与集群中其他的OSD进行通信,最后一个用来在集群中发送心跳包
RADOS 网关7480/tcp默认RADOS网管端口为7480,你可以修改为80/443(如果使用TLS)
8443Dashboard
# 放通Monitor节点3300TCP端口、6789TCP端口
firewall-cmd --zone=public --add-port=3300/tcp --permanent
firewall-cmd --zone=public --add-port=6789/tcp --permanent

# 放通OSD节点6800-7300TCP端口
firewall-cmd --zone=public --add-port=6800-7300/tcp --permanent
firewall-cmd --zone=public --add-port=443/tcp --permanent

# 放行Dashboard
firewall-cmd --zone=public --add-port=8443/tcp --permanent

# 放行Prometheus插件通信接口
firewall-cmd --zone=public --add-port=9283/tcp --permanent

# 重载firewall--使以上配置生效
firewall-cmd --reload

# 查看防火墙规则
firewall-cmd --list-all

Ceph部署工具比较


ceph-deploy—适合新手练习

易于上手、使用简单,并且支持快速安装和配置 Ceph 集群的各个组件。
被ceph官方弃用
https://docs.ceph.com/en/latest/install/


Cephadm—官方推荐

https://docs.ceph.com/en/latest/install/
Cephadm安装和管理 Ceph 集群,该集群使用容器systemd,并与 CLI 和仪表板 GUI 紧密集成。
cephadm 仅支持 Octopus 和更新版本。
cephadm 与编排 API 完全集成,并完全支持用于管理集群部署的 CLI 和仪表板功能。
cephadm 需要容器支持(以 Podman 或 Docker 的形式)和 Python3


ROOK—官方推荐

它将 Ceph 存储作为 Kubernetes 的一部分集成到容器编排中,使得在 Kubernetes 上部署和管理 Ceph 集群变得更加容易。


DeepSea

提供了一系列高级特性和自动化功能,例如负载均衡故障转移备份恢复等,能够帮助您更好地管理和维护 Ceph 集群。


Ceph集群规划

对于 Ceph 集群的规划,需要考虑以下几个方面:

  1. 存储需求:首先需要确定存储需求的大小和类型,比如需要存储的数据类型、数据量、访问频率等。这些因素将影响集群的硬件规格和配置。
  2. 硬件选型:根据存储需求的大小和类型,选择适当的硬件,包括 CPU、内存、硬盘、网络等。
  3. 节点数量:Ceph 集群由多个节点组成,节点的数量取决于存储需求和可用性要求。一般来说,至少需要 3 个节点来实现数据副本备份和故障恢复。
  4. 数据分布策略:Ceph 支持多种数据分布策略,比如均衡分布、故障域感知分布等。根据数据类型、数据量和可用性要求等因素选择合适的数据分布策略。
  5. 安全机制:Ceph 提供了多种安全机制,比如访问控制、加密传输等。根据实际需求选择合适的安全机制。
  6. 备份策略:Ceph 集群需要定期备份以应对可能的故障和数据丢失。选择合适的备份策略和工具,并定期测试备份的可用性。

总之,Ceph 集群的规划需要根据实际需求进行综合考虑和权衡,确保集群的可用性、可扩展性和安全性。


RHEL8搭建Ceph集群

https://access.redhat.com/documentation/zh-cn/red_hat_ceph_storage/4/pdf/installation_guide/red_hat_ceph_storage-4-installation_guide-zh-cn.pdf

参考: https://www.ethanzhang.xyz/ceph%E5%AE%89%E8%A3%85%E9%83%A8%E7%BD%B2%E6%8C%87%E5%8D%97%E5%8F%8A%E5%9C%A8openshift%E7%9A%84%E5%BA%94%E7%94%A8/#22-%E5%AE%89%E8%A3%85%E4%BA%8B%E5%AE%9C%E4%BA%8B%E9%A1%B9


添加host及ssh免密

角色主机名Public IP集群IP额外磁盘备注
mon,mgr,osdnode1ceph-mgr不是必须的
mon,osdnode2OSB至少需要2台
mon,mgr,osdnode3MON至少需要3台

初始化节点安装Ceph软件包

初始化节点(node1)上执行

# 安装 Ceph 存储库:
dnf install -y https://download.ceph.com/rpm-octopus/el8/noarch/ceph-release-1-1.el8.noarch.rpm 

# 更新软件包索引:
dnf update -y 

# 安装 Ceph:
dnf install -y ceph 

# 安装ceph部署工具
yum install -y python-setuptools ceph-deploy

# 安装ceph组件
dnf install -y ceph-mon ceph-osd

初始化Ceph集群

node1执行。

# 创建一个新的 Ceph 集群目录,并进入该目录
mkdir cephcluster
cd cephcluster/

清理ceph上的旧版包和数据

node1执行。

# 清除远程主机/var/lib/ceph /etc/ceph中的包和数据
ceph-deploy uninstall node1 node2 node3
# 清除/var/lib/ceph及/etc/ceph下ceph目录及以下内容全部
ceph-deploy purge node1 node2 node3
# 清除my-cluster目录中的认证密钥文件
ceph-deploy purgedata node1 node2 node3
# 从本地目录中删除身份验证密钥。
ceph-deploy forgetkeys 

开始初始化Ceph集群

node1执行。
在当前目录中创建一个新的 Ceph 配置文件,例如 ceph.conf
这里的 node1、node2、node3 是集群中的节点名称,根据实际情况进行替换。

# 向Ceph存储集群中添加三个新节点
## new 新建一个 Ceph 集群
## node1 node2 node3 要添加到集群中的新节点名称
ceph-deploy new node1 node2 node3

# 必须参数
## --cluster-network就是私网(存储网)的网络地址,非主机地址
## --public-network是外网的网络地址
## node1是本机的主机名
ceph-deploy new --cluster-network 192.168.1.0/24 --public-network 172.18.2.3/24 node1

执行完该名了会创建ceph.mon.keyringceph.conf
image.png
ceph.mon.keyring是ceph的通信密钥文件。


查看生成的配置文件

[global]
# 集群的唯一ID,该值在集群内所有节点上必须保持一致。
fsid =
# 初始监视器节点的逗号分隔列表,监视器节点用于管理集群。
mon_initial_members =
# 一个逗号分隔的主机名或IP地址列表,表示可以找到监视器节点的位置。如果未定义 "mon_initial_members" 参数,则使用此参数来发现初始监视器节点。
mon_host =                          
# 集群守护程序之间通信所需的身份验证协议,默认为 cephx。
auth_cluster_required = cephx
# 客户端与集群服务之间通信所需的身份验证协议,默认为 cephx。
auth_service_required = cephx
# 客户端连接到集群所需的身份验证协议,默认为 cephx。
auth_client_required = cephx
# Ceph客户端连接的网络,一般三方监控也是监控这个地址
public_network = 172.18.2.0/24
# 私网(存储网)的网络地址,非主机地址
cluster_network = 192.168.1.0/24

为Node安装指定版本的Ceph

node1执行。

# 为指定node 安装指定版本的ceph
## --release 参数指定要安装的 Ceph 版本是 nautilus。
## --no-adjust-repos  在不修改源代码库的情况下安装包
## Ceph的LTS版本是Nautilus,它在2019年发布
ceph-deploy install --release nautilus node1 node2 node3 --no-adjust-repos

部署MON节点

node1执行。
使用 ceph-deploy 工具将 MON 节点添加到 Ceph 集群中。
这个命令只是创建了单个监视器节点,高可用和高容错集群,建议至少三个监视器节点,并使用quorum来确保在其中一个节点故障时仍然能够继续运行。
在部署节点上为新的 MON 节点生成配置文件并推送到集群中,会在所有 MON 节点上安装 ceph-mon 软件包。

# 监控节点初始化
# 创建初始的监视器(Monitor)节点
ceph-deploy mon create-initial

image.png
该命令会执行以下步骤:

  1. 在指定的主机上安装 Ceph 软件包和依赖项。
  2. 生成集群配置文件 ceph.conf 和密钥环(keyring)文件 ceph.client.admin.keyring
  3. 创建初始监视器节点,并将其添加到集群中。
  4. 生成并输出其他 OSD 节点加入集群所需的命令。

部署集群配置和秘钥环文件至各节点

# 查看ceph集群健康状态
ceph health
# 或
ceph -s

# 将节点(node1、node2 和 node3)指定为Ceph管理员
## 会将/etc/ceph/ceph.client.admin.keyring密钥环文件分发给这3台机器
ceph-deploy admin node1 node2 node3

会将集群配置文件 ceph.conf 和密钥环(keyring)文件 ceph.client.admin.keyring拷贝到各节点/etc/ceph/目录下。


部署mgr节点

# 部署mgr角色
ceph-deploy mgr create node1


# 查看ceph状态,可以看到mgr在node1上
ceph -s

添加OSD节点

node1执行。
在具有足够硬件资源和磁盘空间的机器上设置 Ceph 存储节点。可以使用以下命令在其中一个节点上初始化 Ceph 存储集群:


OSD节点创建分区

在 所有OSD 节点上创建一个用于存储数据的分区,并将其格式化为 XFS 文件系统:

# 创建一个新的 GPT(GUID 分区表)标签的分区表
parted /dev/sdb mklabel gpt

# 为/dev/sdb创建1个新的主分区,XFS,使用所有可用空间
## -1 表示使用整个可用空间作为分区的结束位置
parted /dev/sdb mkpart primary xfs 1 -1

# 格式化为xfs
mkfs.xfs /dev/sdb1

将OSD节点加入集群

在 OSD 节点上使用 ceph-deploy 工具添加 OSD:
这里的 node1 是 OSD 节点名称,/dev/sdb1 是用于存储数据的分区。

# 创建 OSD(Object Storage Daemon)节点
ceph-deploy osd create <node_name>:<partition_path>

# 如果多台机器上的磁盘路径不一致
ceph-deploy osd create node1:/dev/sdb node2:/dev/sdc node3:/dev/sdd

## 指定多个磁盘来创建多个OSD节点
ceph-deploy osd create node1 --data /dev/sdb,/dev/sdc
ceph-deploy osd create node2 --data /dev/sdb,/dev/sdc
ceph-deploy osd create node3 --data /dev/sdb,/dev/sdc

# 检查Ceph存储群集的状态
ceph -s

# 显示 Ceph 存储集群的 OSD 树形图
## 该命令会列出所有 OSD 的 ID、所在节点、状态以及其它相关信息,并将它们按照拓扑结构组织成一棵树。
ceph osd tree

检查OSD的状态

# 检查OSD的状态
ceph osd status

扩展mon节点

# 将 node2 和 node3 节点添加到 Ceph 存储集群中作为监视器(MON)
ceph-deploy mon add node2 node3

# 显示当前 Ceph 存储集群中监视器(MON)的状态信息
ceph mon stat

# 显示 Ceph 存储集群中所有监视器(MON)的详细信息
ceph mon dump

扩展mgr节点–非必需执行

从 Ceph Nautilus 版本开始,不再需要手动创建 MGR,而是默认情况下自动启用。Nautilus及以上版本可以忽略该命令。

# 将 node2 和 node3 节点添加到 Ceph 存储集群中作为Ceph管理节器(MGR)
ceph-deploy mgr create node2 node3

# 检查Ceph存储群集的状态
ceph -s

备用配置

如果用 ceph-deploy 工具来部署cpeh。可能需要在ceph集群所有机器上创建一个名为 ceph-deploy 的用户,并将其添加到 sudoers 文件中。

# 创建eph-deploy用户
sudo useradd -m ceph-deploy
# 为eph-deploy用户设置密码
sudo passwd ceph-deploy

# 将eph-deploy用户添加到wheel管理员组
sudo usermod -aG wheel ceph-deploy

# 为eph-deploy用户配置sudo提权
echo "ceph-deploy ALL = (root) NOPASSWD:ALL" | sudo tee /etc/sudoers.d/ceph-deploy

# 权限设置为0440
sudo chmod 0440 /etc/sudoers.d/ceph-deploy 
<think>嗯,用户想在麒麟V10操作系统上用ceph-deploy部署Ceph集群。首先,我需要确认ceph-deploy的版本是否支持Kylin V10。根据引用[4],用户提到ceph-deploy-1.5.39版本没有mgr的部署选项,可能需要注意版本兼容性。Ceph L版本12.2.12可能需要特定版本的ceph-deploy,可能需要用户检查官方文档或社区支持。 然后,用户的环境准备方面,需要确保所有节点的主机名解析正确,SSH免密登录配置好,以及防火墙和SELinux的设置。引用[3]中提到磁盘必须未使用且没有数据,所以在部署OSD时要注意这一点。另外,引用[2]指出Ceph的核心组件,包括Monitor、Manager、OSD等,部署时需要按照步骤依次安装这些组件。 可能遇到的问题包括网络无法访问Ceph官网,导致依赖包安装失败。这时候可能需要配置本地源或者使用离线安装包。另外,麒麟V10是基于CentOS的,可能需要处理依赖包冲突,比如Python版本的问题。引用[1]提到ceph-deploy的配置文件位置,用户可能需要根据情况调整配置文件。 在部署步骤中,初始化Monitor节点是关键,如果失败需要检查时钟同步和主机名解析。创建OSD时,确保磁盘正确,可能需要使用ceph-deploy osd create命令,如引用[3]中的例子。最后,部署MGR和MDS也是必须的,但引用[4]指出旧版可能不支持,所以需要确认ceph-deploy版本是否包含这些功能。 测试集群状态时,ceph -s命令可以查看健康状况,如果出现错误,可能需要检查各个服务的日志。常见问题如网络问题、权限问题或者依赖缺失都需要逐步排查。用户可能需要参考引用中的配置文件和命令示例,确保每一步都正确执行。</think>### 在Kylin V10中使用ceph-deploy部署Ceph集群的步骤 #### 一、环境准备 1. **节点规划** - 至少3个节点(1个`ceph-deploy`管理节点,1个Monitor节点,多个OSD节点) - 示例配置: - 管理节点:`admin-node` - Monitor节点:`ceph-mon1` - OSD节点:`ceph-osd1`, `ceph-osd2` 2. **系统配置** - 所有节点配置主机名解析(`/etc/hosts`或DNS) - 配置SSH免密登录(管理节点到其他节点) - 关闭防火墙和SELinux: ```bash systemctl stop firewalld setenforce 0 ``` 3. **依赖安装** - 在管理节点安装`ceph-deploy`: ```bash yum install -y python3-pip pip3 install ceph-deploy==2.0.1 # 选择兼容Kylin V10的版本[^4] ``` #### 二、部署Ceph集群 1. **初始化集群配置** ```bash mkdir ceph-cluster && cd ceph-cluster ceph-deploy new ceph-mon1 # 生成初始配置文件[^1] ``` 2. **安装Ceph组件** ```bash ceph-deploy install --release luminous admin-node ceph-mon1 ceph-osd1 ceph-osd2 ``` > 注意:若网络受限,需提前配置本地Yum源[^4] 3. **部署Monitor** ```bash ceph-deploy mon create-initial ceph-deploy admin admin-node ceph-mon1 # 同步配置文件[^2] ``` 4. **部署OSD** - 清理磁盘(以`/dev/sdb`为例): ```bash ceph-deploy disk zap ceph-osd1 /dev/sdb[^3] ``` - 创建OSD: ```bash ceph-deploy osd create --data /dev/sdb ceph-osd1 ceph-deploy osd create --data /dev/sdb ceph-osd2 ``` 5. **部署MGR和MDS(可选)** ```bash ceph-deploy mgr create ceph-mon1 ceph-deploy mds create ceph-mon1 ``` #### 三、验证集群状态 ```bash ssh ceph-mon1 ceph -s # 检查HEALTH_OK状态 ``` #### 四、常见问题处理 | 问题现象 | 解决方案 | |---------|----------| | `ceph-deploy`安装失败 | 检查Python3版本,建议3.6+ | | Monitor启动超时 | 确认节点时钟同步(NTP服务) | | OSD无法创建 | 检查磁盘是否未分区(使用`lsblk`验证)[^3] | ###
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

教Linux的李老师

赞赏是第一生产力

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

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

打赏作者

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

抵扣说明:

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

余额充值