Ceph 分布式存储学习笔记(一):介绍、部署与集群配置(上)

ceph分布式存储

Ceph 分布式存储 介绍

存储中用户角色

在规模较大的云存储场景里,为了保障存储系统稳定高效运行、满足不同业务需求,会划分出职责各有侧重的用户角色,不同组织因自身特点,角色的实施与人员配置也存在差异。同时,Ceph 作为一款优秀的开源存储系统,在云存储领域有着广泛应用,其技术特性也值得深入了解。

云存储环境中的核心用户角色

云存储系统的顺畅运转,依赖于不同角色的协同配合,从集群搭建维护到日常操作响应,再到与其他业务角色的联动,每个角色都承担着关键职责。

存储管理员:系统运维的核心主导者

存储管理员是云存储集群运维的核心角色,需要具备全面的技术能力,承担着从集群搭建到后续保障服务的一系列重要任务,具体包括:

  1. 负责 Ceph 存储集群的全生命周期管理,从初始的安装部署,到后续根据业务需求进行的配置调整,再到长期的系统维护,确保集群始终处于稳定运行状态。
  2. 作为技术传递者,需向基础架构架构师分享 Ceph 系统的功能特性,帮助其更好地理解系统能力,以便在架构设计中充分利用 Ceph 的优势。
  3. 面向用户提供专业支持,讲解 Ceph 的数据存储方式与相关技术方法,为用户选择适配自身数据应用的方案提供参考,助力用户高效使用存储资源。
  4. 保障数据安全与业务连续性,通过设计并实施复本策略、备份方案以及灾难恢复机制,为数据提供多维度的安全保障,降低数据丢失风险。
  5. 推动运维效率提升,借助基础设施即代码(IaC)的理念与工具,实现存储集群运维任务的自动化,同时促进 Ceph 与其他系统的集成,减少人工操作成本。
  6. 支撑数据价值挖掘,为数据分析工作以及高级海量数据挖掘需求提供存储层面的支持,确保相关工作能高效访问所需数据,助力业务从数据中提取价值。
存储操作员:日常运维的协助执行者

存储操作员作为存储管理员的重要协助者,通常在经验积累上稍逊于存储管理员,主要聚焦于集群的日常操作与基础响应工作,核心职责如下:

  • 辅助存储管理员完成集群的日常运营维护,是日常运维工作的主要执行者之一。
  • 以 Ceph Dashboard 图形用户界面(GUI)为主要操作工具,实时监控集群的运行状态,及时查看各类警报信息与性能统计数据,并根据预警或故障提示做出相应处理,保障集群稳定。
  • 承担基础的硬件管理任务,比如当存储设备出现故障时,负责及时更换,确保存储硬件层的正常运转,减少硬件故障对集群的影响。
其他关联存储角色:跨领域协同的关键参与者

除了存储管理员与操作员,还有多个角色会直接与 Ceph 存储系统产生交互,存储管理员需频繁与这些角色沟通协作。明确这些角色的职责与协作关系,不仅能更清晰地界定存储管理员的工作范围,也能保障整个存储生态的顺畅运转,主要角色包括:

  • 云操作员:专注于管理组织内部的云资源,像 OpenStack、OpenShift 这类云基础设施的运维都由其负责。在 Ceph 集群维护工作中,云操作员与存储管理员需要紧密配合,确保存储资源与云基础设施的协同适配。
  • 自动化工程师:核心工作是针对日常运维中重复出现的任务,设计并编写自动化脚本(剧本),通过自动化手段减少人工操作,提升运维效率,其工作成果能为存储管理员的自动化运维工作提供有力支持。
  • 应用程序开发人员(DevOps 开发人员):涵盖原始代码开发、应用维护以及保障应用在云环境中正确部署与运行等职责。存储管理员需与这类开发人员协同,提前规划并确保应用所需的存储资源充足,合理设置存储配额,同时采取安全措施保护应用数据的存储安全。
  • 服务管理员:主要管理面向最终用户的服务(区别于操作系统层面的服务),职责与项目经理有相似之处,但更聚焦于已上线的生产服务产品,需与存储管理员沟通,确保服务运行所需的存储资源稳定供应。
  • 部署工程师(DevOps 工程师):在规模较大的云环境中,这类工程师会专门与存储管理员、应用程序开发人员协作,负责应用部署的执行、后期管理以及根据运行情况进行调整优化,保障应用与存储系统的高效适配。
  • 应用架构师:具备将 Ceph 基础设施布局与资源可用性、系统扩展性、数据延迟等关键指标关联分析的能力。凭借专业的架构知识,能为存储管理员设计复杂应用的部署方案提供指导,而存储管理员也需理解这些关键指标,才能更好地支撑云用户及其应用的需求。
  • 基础架构架构师:是存储管理员获取 Ceph 集群部署与维护关键信息的主要来源,其可能来自云服务提供商、供应商解决方案团队或外部顾问。存储管理员需掌握集群的架构布局,才能有效管理资源位置、控制存储容量、优化数据延迟,这离不开与基础架构架构师的紧密沟通。
  • 数据中心操作员:处于 Ceph 存储基础设施的底层,负责数据资源的供应工作。通常受雇于公共云服务提供商,或企业私有数据中心的内部 IT 团队,为上层存储系统的运行提供基础资源支持。
不同组织中的角色实施差异

由于各组织在人员配置、团队技能水平、安全需求以及业务规模等方面存在显著不同,云存储相关角色的实施方式也各不相同。在实际工作中,一个用户往往不会只承担单一角色,而是会根据自身工作职责,同时兼顾多个角色的任务。

  1. 电信与云服务提供商:这类组织的业务核心围绕云服务展开,常见的角色包括云操作员、存储操作员、基础架构架构师以及云服务开发人员。在存储使用上,他们更多是作为存储资源的 “消费者”,聚焦于利用存储资源支撑自身服务,而非直接承担存储系统的维护工作。
  2. 金融与银行机构:这类组织对数据安全、系统私密性以及基础设施专用性要求极高,因此所有与存储相关的角色均由内部人员担任。其中,存储管理员、云操作员以及基础架构架构师扮演着 “服务提供者” 的角色,为组织内部其他业务角色提供稳定、安全的存储支撑服务。
  3. 高校与小型部署场景:受限于人员规模与资源条件,通常不会划分过细的角色。技术支持人员往往需要一人多岗,同时承担起存储管理员、基础架构架构师以及云操作员等多个角色的职责,全面负责存储系统的搭建、维护与日常运营。

Ceph 存储系统核心解析

Ceph 系统简介

Ceph 是一款基于开源理念开发的分布式软件定义存储(SDS)系统,凭借其独特的设计,在海量数据存储场景中展现出显著优势:

  • 高可用性:通过分布式架构与数据冗余机制,有效避免单点故障,确保存储服务持续稳定,即使部分节点出现问题,也能保障数据可访问与业务不中断。
  • 强扩展性:支持在现有集群基础上灵活添加节点,无论是存储容量还是处理性能,都能随着节点增加实现线性扩展,轻松应对数据量增长带来的存储压力。
  • 高易用性:提供了简洁的管理工具与友好的操作界面(如 Ceph Dashboard),降低了运维门槛,同时支持多种部署方式,适配不同的 IT 环境。
  • 硬件兼容性:可部署在通用服务器上,对服务器 CPU 架构兼容性强,不仅支持 x86 架构,也能适配 ARM 架构,甚至允许在同一集群中同时存在 x86 与 ARM 架构的主机,极大提升了硬件选择的灵活性。
Ceph 的核心技术优势

Ceph 之所以能在众多存储系统中脱颖而出,关键在于其独特的技术架构,核心优势体现在以下几个方面:

  1. RADOS 系统的对象存储模式:采用 RADOS(可靠的自主分布式对象存储)作为底层存储架构,将所有数据以对象的形式存储在预设的存储池中。这种模式不仅简化了数据管理,还能更好地利用存储资源,提升数据访问效率。
  2. 去中心化的读写机制:摒弃了传统存储系统中的中心节点,客户端无需通过中心服务器转发请求,而是借助 CRUSH(可控的、可扩展的、分布式的复制算法)算法,自行计算出数据对象的存储位置,直接与存储节点进行数据读写交互,大幅降低了中心节点带来的性能瓶颈与单点故障风险。
  3. 自动化的集群管理能力:集群具备高度的自主性,能够根据节点增减、负载变化等情况,自动完成存储容量扩展、数据在不同节点间的再平衡,以及当节点或设备故障时的数据恢复工作,减少了人工干预,提升了集群的稳定性与运维效率。

Ceph 分布式存储 部署

Ceph 集群安装介绍

Ceph 集群安装方式

官方推荐部署方式

  • Cephadm:基于容器部署,支持 Octopus 及以后版本,部署完成后可通过命令行和图形界面进行ceph集群的管理。
  • Rook:基于 kubernetes 部署,支持 Nautilus 及以后版本,部署完成后可通过命令行和图形界面进行ceph集群的管理,同时可通过 kubernetes 对组件所在 pod 进行管理。

其他部署方式

  • ceph-ansible,通过ansible进行ceph部署
  • ceph-deploy,已经不再维护,不建议使用该方式部署
  • DeepSea,通过salt进行ceph部署
  • 手动部署
Cephadm 简介
  • Cephadm 是一个ceph全生命周期管理工具, 通过“引导( bootstrapping ) ” 可创建一个包含一个MON和一个MGR的单节点集群, 后续可通过自带的编排接口进行集群的扩容、 主机添加、 服务部署。

  • Cephadm 使用容器部署 Ceph,大大降低了部署 Ceph 集群的复杂性和包依赖性。

  • cephadm 软件包安装在集群第一个节点中,该节点充当引导节点。Cephadm 是部署新集群时启动的第一个守护程序,同时也是管理器守护程序 (MGR) 中的一个模块。

Ceph 集群安装过程

Ceph 集群环境

部署方法:cephadm

操作系统:Centos Stream 8(最小化安装)

硬件配置:2 cpu、4G memory、1个系统盘+3个20G数据盘

本教材共使用7台虚拟机:

  • 客户端:client
  • 主集群:ceph1、ceph2、ceph3
  • 备集群:ceph4、ceph5、ceph6
主机名 IP 地址 角色
client.yuxb.cloud 192.168.108.10 客户端节点
ceph1.yuxb.cloud 192.168.108.11 主集群-ceph 节点
ceph2.yuxb.cloud 192.168.108.12 主集群-ceph 节点
ceph3.yuxb.cloud 192.168.108.13 主集群-ceph 节点
ceph4.yuxb.cloud 192.168.108.14 备集群-ceph 节点
ceph5.yuxb.cloud 192.168.108.15 备集群-ceph 节点
ceph6.yuxb.cloud 192.168.108.16 备集群-ceph 节点

在这里插入图片描述

准备虚拟机模板
# 配置主机名解析
[root@localhost ~]# cat >> /etc/hosts << EOF

###### ceph ######
192.168.108.10 client.yuxb.cloud client
192.168.108.11 ceph1.yuxb.cloud ceph1
192.168.108.12 ceph2.yuxb.cloud ceph2
192.168.108.13 ceph3.yuxb.cloud ceph3
192.168.108.14 ceph4.yuxb.cloud ceph4
192.168.108.15 ceph5.yuxb.cloud ceph5
192.168.108.16 ceph6.yuxb.cloud ceph6
EOF

# 关闭 SELinux
[root@localhost ~]# sed -ri 's/^SELINUX=.*/SELINUX=disabled/g' /etc/selinux/config
[root@localhost ~]# getenforce
Disabled

# 关闭防火墙
[root@localhost ~]# systemctl disable firewalld --now
Removed /etc/systemd/system/multi-user.target.wants/firewalld.service.
Removed /etc/systemd/system/dbus-org.fedoraproject.FirewallD1.service.

# 配置yum仓库
[root@localhost ~]# cat << 'EOF' > /etc/yum.repos.d/ceph.repo
> [Ceph]
> name=Ceph
> baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
> enabled=1
> gpgcheck=0
> EOF
[root@localhost ~]# cat /etc/yum.repos.d/ceph.repo
[Ceph]
name=Ceph
baseurl=https://mirrors.aliyun.com/centos-vault/8-stream/storage/x86_64/ceph-pacific
enabled=1
gpgcheck=0

# 安装基础软件包
[root@localhost ~]# dnf install -y bash-completion vim lrzsz unzip rsync sshpass tar

# 配置时间同步
[root@localhost ~]# dnf install -y chrony
[root@localhost ~]# systemctl enable chronyd --now

# 安装 cephadm
[root@localhost ~]# dnf install -y cephadm

# 安装 cephadm 的时候,会自动安装官方推荐的容器引擎 podman
[root@localhost ~]# rpm -q podman
podman-4.9.4-0.1.module_el8+971+3d3df00d.x86_64

# 下载镜像
[root@localhost ~]# podman pull quay.io/ceph/ceph-grafana:8.3.5
Trying to pull quay.io/ceph/ceph-grafana:8.3.5...
Getting image source signatures
Copying blob b29fa70dd594 done   |
Copying config dad864ee21 done   |
Writing manifest to image destination
dad864ee21e98e69f4029d1e417aa085001566be0d322fbc75bc6f29b0050c01
[root@localhost ~]# podman pull quay.io/prometheus/node-exporter:v1.3.1
Trying to pull quay.io/prometheus/node-exporter:v1.3.1...
Getting image source signatures
Copying blob b5db1e299295 done   |
Copying blob aa2a8d90b84c done   |
Copying blob b45d31ee2d7f done   |
Copying config 1dbe0e9319 done   |
Writing manifest to image destination
1dbe0e931976487e20e5cfb272087e08a9779c88fd5e9617ed7042dd9751ec26
[root@localhost ~]# podman pull quay.io/prometheus/alertmanager:v0.23.0
Trying to pull quay.io/prometheus/alertmanager:v0.23.0...
Getting image source signatures
Copying blob aa2a8d90b84c skipped: already exists
Copying blob aa42aae1183b done   |
Copying blob b45d31ee2d7f skipped: already exists
Copying blob e64c3c57ffe7 done   |
Copying blob 7665a4a59238 done   |
Copying blob 9a345be9cdfe done   |
Copying config ba2b418f42 done   |
Writing manifest to image destination
ba2b418f427c0636d654de8757e830c80168e76482bcc46bb2138e569d6c91d4
[root@localhost ~]# podman pull quay.io/prometheus/prometheus:v2.33.4
Trying to pull quay.io/prometheus/prometheus:v2.33.4...
Getting image source signatures
Copying blob 604ad6adddc4 done   |
Copying blob 009932687766 done   |
Copying blob 1ad6d9643fdd done   |
Copying blob ff9264fbb6f4 done   |
Copying blob e6f7fea04459 done   |
Copying blob 63fc05a36a59 done   |
Copying blob 54b552d4bfbc done   |
Copying blob a23b2328402c done   |
Copying blob 9ec38b0764ed done   |
Copying blob cf8aa72409ac done   |
Copying blob 7104c0fa6750 done   |
Copying blob b782297611dd done   |
Copying config 514e6a882f done   |
Writing manifest to image destination
514e6a882f6e74806a5856468489eeff8d7106095557578da96935e4d0ba4d9d
[root@localhost ~]# podman pull quay.io/ceph/ceph:v16
Trying to pull quay.io/ceph/ceph:v16...
Getting image source signatures
Copying blob 5f3bf99f2b6d done   |
Copying blob 6ac36e7c57f2 done   |
Copying config 3c4eff6082 done   |
Writing manifest to image destination
3c4eff6082ae7530e7eda038765ce400beb1bc1b8df67dffb45910eb45b06b2c

# 配置主机脚本
[root@localhost ~]# cat > /usr/local/bin/sethost <<'EOF'
#/bin/bash
hostnamectl set-hostname ceph$1.yuxb.cloud
nmcli connection modify ens160 ipv4.method manual ipv4.addresses 192.168.108.1$1/24 ipv4.gateway 192.168.108.2 ipv4.dns 192.168.108.2
init 0
EOF


[root@localhost ~]# chmod +x /usr/local/bin/sethost

准备集群节点

使用完全克隆方式,克隆出其他虚拟机,并配置主机名和IP地址。

Ceph 集群初始化
[root@ceph1 ~]# cephadm bootstrap --mon-ip 192.168.108.11 --allow-fqdn-hostname --initial-dashboard-user admin --initial-dashboard-password 123 --dashboard-password-noupdate

Dashboard 登录信息
Ceph Dashboard is now available at:

             URL: https://ceph1.yuxb.cloud:8443/
            User: admin
        Password: 123

客户端访问方法
Enabling client.admin keyring and conf on hosts with "admin" label
Enabling autotune for osd_memory_target
You can access the Ceph CLI as following in case of multi-cluster or non-default config:

        sudo /usr/sbin/cephadm shell --fsid b40700ee-9c26-11f0-8c1f-000c29463e75 -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

访问 dashboard

https://192.168.108.11:8443/或https://ceph1.yuxb.cloud:8443/

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

添加节点

添加节点过程

  1. Ceph采用共享秘钥进行身份验证, 使用命令“ceph cephadm get-pub-key” 获取到主机接入集群时所需的ssh 公钥。
  2. 获取到公钥后, 使用该公钥实现对节点的免密ssh管理。
  3. 使用命令“ceph orch host add” 添加主机。
# 在ceph1上安装ceph客户端工具 ceph-common
[root@ceph1 ~]# dnf install -y ceph-common

# 获取集群公钥
[root@ceph1 ~]# ceph cephadm get-pub-key > ~/ceph.pub

# 推送公钥到其他节点
[root@ceph1 ~]# ssh-copy-id -f -i ~/ceph.pub root@ceph2.yuxb.cloud
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/ceph.pub"
The authenticity of host 'ceph2.yuxb.cloud (192.168.108.12)' can't be established.
ECDSA key fingerprint is SHA256:FPYe2LYas2LxQYQs/Uy7j6s8oD02rVjtJYf/BS/95Go.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@ceph2.yuxb.cloud's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@ceph2.yuxb.cloud'"
and check to make sure that only the key(s) you wanted were added.

[root@ceph1 ~]# ssh-copy-id -f -i ~/ceph.pub root@ceph3.yuxb.cloud
/usr/bin/ssh-copy-id: INFO: Source of key(s) to be installed: "/root/ceph.pub"
The authenticity of host 'ceph3.yuxb.cloud (192.168.108.13)' can't be established.
ECDSA key fingerprint is SHA256:FPYe2LYas2LxQYQs/Uy7j6s8oD02rVjtJYf/BS/95Go.
Are you sure you want to continue connecting (yes/no/[fingerprint])? yes
root@ceph3.yuxb.cloud's password:

Number of key(s) added: 1

Now try logging into the machine, with:   "ssh 'root@ceph3.yuxb.cloud'"
and check to make sure that only the key(s) you wanted were added.

# 添加节点
[root@ceph1 ~]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值