K8s使用Ceph作为后端存储

  1. Ceph概述
  2. 部署Ceph集群
  3. Ceph存储使用
  4. Pod使用Ceph持久化数据
  5. Ceph监控
  6. Rook部署Ceph

1❖ Ceph概述

  • Ceph介绍
  • Ceph架构
  • Ceph核心概念

Ceph介绍

Ceph是一个开源的分布式存储系统,具有高扩展性、高性能、高可靠性等特点,提
供良好的性能、可靠性和可扩展性。支持对象存储、块存储和文件系统。
是目前为云平台提供存储的理想方案。

Ceph架构

  • RBD(RADOS Block Device):块存储接口
  • RGW(RADOS Gateway)):对象存储网关,接口与S3和Swift兼容
  • CephFS(Ceph File System):文件级存储接口
  • RADOS(Reliable Autonomic Distributed Object Store):抽象的对象存储集群,Ceph核心,实现用户数据分配、故障转移等集群操作
  • MON:集群状态维护,例如OSD是否健康、PG状态等
  • MDS (Metadata Server) :CephFS服务依赖的元数据服务
  • OSD(Object Storage Daemon):对象存储设备,主要存储数据

Ceph核心概念

  • Pool:存储池,是存储对象的逻辑分区,它规定了数据冗余的类型和对应的副本分布策略;支持两种类型:副本(replicated)和 纠删码(Erasure Code)
  • PG( placement group):放置策略组,对象的集合,该集合里的所有对象都具有相同的放置策略;简单点说就是相同PG内的对象都会放到相同的硬盘上; PG是ceph的核心概念, 服务端数据均衡和恢复的最小粒度;引入PG这一层其实是为了更好的分配数据和定位数据。
右边这张图描述了它们之间的关系:
  • 一个Pool里有很多PG;
  • 一个PG里包含一堆对象;一个对象只能属于一个PG;
  • PG属于多个OSD,分布在不同的OSD上;

2❖ 部署Ceph集群

  • Ceph版本选择
  • 服务器配置建议
  • Ceph集群部署规划
  • 操作系统初始化配置
  • Ceph集群部署
  • Ceph集群服务管理
  • Ceph集群常用管理命令

Ceph版本选择

Ceph目前最新版本16(P版),市面上应用最广泛的是12(L版)
参考:https://docs.ceph.com/en/latest/releases/

服务器配置建议

Ceph集群部署规划

  • ceph-deploy:ceph集群部署节点,负责集群整体部署,这里复用node1节点,也可以单独找一台服务器作为部署节点。
  • monitor:Ceph监视管理节点,承担Ceph集群重要的管理任务,负责集群状态维护,例如存储池副本数、PG状态、OSD数量等,至少部署1个,一般需要3或5个节点组建高可用。
  • osd:Ceph存储节点,实际负责数据存储的节点,集群中至少有3个OSD,不少于默认副本数,每个OSD对应一块硬盘。

操作系统初始化配置

# 关闭防火墙
systemctl stop firewalld
systemctl disable firewalld
# 关闭selinux
sed -i 's/enforcing/disabled/' /etc/selinux/config # 永久,重启生效
setenforce 0 # 临时
# 关闭swap(可选)
swapoff -a # 临时
sed -ri 's/.*swap.*/#&/' /etc/fstab # 永久,重启生效
# 根据规划设置主机名
hostnamectl set-hostname <hostname>
# 在node添加hosts
cat >> /etc/hosts << EOF
192.168.31.71 ceph-node01
192.168.31.72 ceph-node02
192.168.31.73 ceph-node03
EOF# 设置文件描述符
ulimit -SHn 65535
cat >> /etc/security/limits.conf << EOF
* soft nofile 65535
* hard nofile 65535
EOF
# 时间同步
yum install ntpdate -y
ntpdate time.windows.com
# 配置SSH免交互认证
ssh-keygen -t rsa
ssh-copy-id root@ceph-node01
ssh-copy-id root@ceph-node02
ssh-copy-id root@ceph-node03

Ceph集群部署

Ceph集群部署方式:
14(N)版本及之前:
  • yum:常规的部署方式
  • ceph-deploy:ceph提供的简易部署工具,可以非常方便部署ceph集群。
  • ceph-ansible:官方基于ansible写的自动化部署工具
14(N)版本之后:
  • cephadm:使用容器部署和管理Ceph集群,需要先部署Docker或者Podman和Python3
  • rook:在Kubernetes中部署和管理Ceph集群

Ceph集群部署步骤:
  1. 配置阿里云yum仓库
  2. 安装ceph-deploy工具
  3. 创建集群
  4. 安装Ceph
  5. 部署Monitor服务
  6. 部署OSD服务并添加硬盘
  7. 部署MGR服务

1、配置阿里云yum仓库

cat > /etc/yum.repos.d/ceph.repo << EOF
[Ceph]
name=Ceph packages for $basearch
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/\$basearch
gpgcheck=0
[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/noarch
gpgcheck=0
[ceph-source]
name=Ceph source packages
baseurl=http://mirrors.aliyun.com/ceph/rpm-nautilus/el7/SRPMS
gpgcheck=0
EOF

2、安装ceph-deploy工具

yum -y install ceph-deploy

3、创建集群

创建一个my-cluster目录,所有命令在此目录下进行:
mkdir my-cluster
cd my-cluster
# 创建一个Ceph集群
ceph-deploy new ceph-node01 ceph-node02 ceph-node03

4、安装Ceph

安装Ceph包到指定节点:
ceph-deploy install --no-adjust-repos ceph-node01 ceph-node02 ceph-node03
注:–no-adjust-repos参数是直接使用本地源,不使用官方默认源。

5、部署Monitor服务

初始化并部署monitor,收集所有密钥:
ceph-deploy mon create-initial
使用ceph-deploy命令将配置文件和 admin key复制到管理节点和Ceph节点,以便每次执行ceph CLI命令无需
指定monitor地址和 ceph.client.admin.keyring。
ceph-deploy admin ceph-node01 ceph-node02 ceph-node03

6、部署OSD服务并添加硬盘

创建6个OSD,分别对应每个节点未使用的硬盘:
ceph-deploy osd create --data /dev/sdb ceph-node01
ceph-deploy osd create --data /dev/sdc ceph-node01
ceph-deploy osd create --data /dev/sdb ceph-node02
ceph-deploy osd create --data /dev/sdc ceph-node02
ceph-deploy osd create --data /dev/sdb ceph-node03
ceph-deploy osd create --data /dev/sdc ceph-node03

7、部署MGR服务

ceph-deploy mgr create ceph-node01 ceph-node02 ceph-node03
注:MGR是Ceph L版本新增加的组件,主要作用是分担和扩展monitor的部分功能,减轻monitor的负担。
建议每台monitor节点都部署一个mgr,以实现相同级别的高可用。
查看Ceph集群状态:
ceph -s
查看Ceph版本:
ceph -v
日志目录:/var/log/ceph

Ceph集群服务管理

1、启动所有守护进程
# systemctl restart ceph.target
2、按类型启动守护进程
# systemctl restart ceph-osd@id
# systemctl restart ceph-osd.target
# systemctl restart ceph-mon.target
# systemctl restart ceph-mgr.target

Ceph集群常用管理命令

3❖ Ceph存储使用

  • 三种存储类型介绍
  • RBD块存储
  • CephFS文件存储

三种存储类型介绍

  • 块存储(RBD)
优点:存储速度较快
缺点:不支持共享存储
应用场景:虚拟机硬盘
典型设备:硬盘、Raid
  • 文件存储(CephFS)
优点:支持共享存储
缺点:读写速度较慢(需要经过操作系统处理再转为块存储)
应用场景:文件共享,多台服务器共享使用同一个存储
典型设备:FTP、NFS
  • 对象存储(Object)
优点:具备块存储的读写性能和文件存储的共享特性
缺点:操作系统不能直接访问,只能通过应用程序级别的API访问
应用场景:图片存储,视频存储
典型设备:阿里云OSS,腾讯云COS

RBD块存储:RBD工作流程

1、客户端创建一个pool,并指定pg数量,创建rbd设备并挂载到文件系统;
2、用户写入数据,ceph进行对数据切块,每个块的大小默认为4M,每个块名
字是object+序号;
3、将每个object通过pg进行副本位置的分配;
4、pg根据crush算法会寻找3个osd,把这object分别保存在这3个osd上存储;
5、osd实际把硬盘格式化为xfs文件系统,object存储在这个文件系统就相当
于存储了一个文件rbd0.object1.file。

RBD块存储:常用管理命令

RBD块存储:RBD创建并使用

1、创建存储池
ceph osd pool create rbd-pool 128 # 格式:ceph osd pool create <pool-name> <pg-num>
ceph osd pool ls
2、指定存储池使用存储类型
ceph osd pool application enable rbd-pool rbd
3、创建一个10G的块设备
rbd create --size 10240 rbd-pool/image01 # 格式:rbd create --size {megabytes} {pool-name}/{image-name}
4、查看块设备
rbd ls -l rbd-pool
rbd info rbd-pool/image01

RBD块存储:RBD创建并使用

节点本地挂载使用块设备:
1、映射
rbd map rbd-pool/image01
2、格式化块设备
mkfs.xfs /dev/rbd0
3、挂载
mount /dev/rbd0 /mnt
4、取消挂载和内核映射
umount /mnt
rbd unmap rbd-pool/image01
远程挂载使用块设备:
1、拷贝配置文件和秘钥
cd my-cluster/
scp ceph.conf root@192.168.31.74:/etc/ceph
scp ceph.client.admin.keyring root@192.168.31.74:/etc/ceph
2、安装Ceph客户端
yum install epel-release -y
yum -y install ceph-common
3、剩余操作就与左侧一样了

RBD块存储:快照

快照:在某个时间点的副本,当系统出现问题,可以通过恢复快照恢复之前副本状态。
1、创建快照
rbd snap create rbd-pool/image01@snap01
2、查看快照
rbd snap list image01
rbd snap ls rbd/image01
rbd ls –l
3、还原快照
rbd snap rollback rbd-pool/image01@snap01
注:还原快照前需先取消挂载和内核映射,否则会出错
4、重新映射并挂载验证
rbd map rbd-pool/image01
mount /dev/rbd0 /mnt/
5、删除快照
rbd snap rm rbd-pool/image01@snap01

RBD块存储:克隆

克隆:基于指定的块设备克隆出相同的一份出来
1、创建一个块设备
rbd create --size 10240 rbd-pool/image02 
2、创建快照
rbd snap create rbd-pool/image02@snap01
3、设置快照处于被保护状态
rbd snap protect rbd-pool/image02@snap01
4、通过快照克隆一个新块设备
rbd clone rbd-pool/image02@snap01 rbd-pool/image02_clone
rbd info image02_clone 
5、就可以按照前面方式使用这个新克隆的块设备了
6、目前克隆的块设备依赖于父块设备,也可以将其独立于父块设备
rbd flatten rbd-pool/image02_clone

CephFS文件系统

 CephFS 是一个基于 ceph 集群且兼容POSIX标准的文件系统。
创建 cephfs 文件系统时需要在 ceph 集群中添加 mds 服务,该服务
负责处理 POSIX 文件系统中的 metadata 部分,实际的数据部分交由
ceph 集群中的OSD处理。

CephFS文件存储:部署MDS服务

部署MDS实例:
ceph-deploy mds create ceph-node01 ceph-node02 ceph-node03
ceph mds stat # 查看MDS节点状态

CephFS文件系统:创建文件系统

1、创建存储池
ceph osd pool create cephfs_data <pg_num> 
ceph osd pool create cephfs_metadata <pg_num>
ceph fs ls
2、创建文件系统
ceph fs new cephfs cephfs_metadata cephfs_data # 格式:ceph fs new <fs_name> <metadata> <data>
ceph fs ls #查看创建后的cephfs

CephFS文件存储:部署MDS服务

4❖ Pod使用Ceph持久化数据

5❖ Ceph监控

6❖ Rook部署Ceph

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/12167.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

ROS与STM32通信-rosserial

文章目录 硬件接线 软件STM32CubeMX配置 rosserial移植上位机订阅-下位机发布上位机订阅下位机发布通信 上位机发布-下位机订阅上位机发布下位机订阅通信 硬件 STM32F103c8t6OLED(I2C)USB2TTLStlink 接线 OLED(GPIO模拟I2C) 硬件引脚OLEDSCLPA4OLEDSDAPA5 USART1 硬件引脚…

CSS3 Flexbox

Flex 是 Flexible Box 的缩写&#xff0c;意为弹性盒子布局。 CSS3中一种新的布局模式&#xff1a;W3C在2009年提出的一种布局方案&#xff0c;一种当页面需要适应不同的屏幕大小以及设备类型时确保元素拥有恰当的行为的布局方式。其目的是提供一种更加有效的方式来对一个容器…

深度学习入门(二):神经网络整体架构

一、前向传播 作用于每一层的输入&#xff0c;通过逐层计算得到输出结果 二、反向传播 作用于网络输出&#xff0c;通过计算梯度由深到浅更新网络参数 三、整体架构 层次结构&#xff1a;逐层变换数据 神经元&#xff1a;数据量、矩阵大小&#xff08;代表输入特征的数量…

打造完美直播体验:美颜技术与美型SDK的融合

随着直播行业的蓬勃发展&#xff0c;主播们对于直播体验的要求也日益提高。其中&#xff0c;美颜技术和美型SDK的融合为主播们带来了前所未有的完美直播体验。本文将深入探讨美颜技术和美型SDK的原理与应用&#xff0c;以及这两者如何协同工作&#xff0c;为直播行业带来更具吸…

Clion开发stm32之微妙延迟(采用nop指令实现)

前言 需要借助逻辑分析仪动态调整参数此次测试的开发芯片为stm32f103vet6 延迟函数 声明 #define NOP_US_DELAY_MUL_CNT 5 /*nop 微妙延迟需要扩大的倍数(根据实际动态修改)*/ void bsp_us_delay_nop(uint32_t us);void bsp_ms_delay_nop(uint32_t ms);定义 void bsp_us_dela…

【QT 网络云盘客户端】——获取用户文件列表信息

目录 1.获取用户文件列表信息分析 2.设置图标属性 3.向服务器获取文件的数量 4.向服务器获取文件信息列表 4.显示图标 1.获取用户文件列表信息分析 1.将QListWidget设置为图标模式 2. 当我们点击"按下载量升序","按下载量降序",“更新” 菜单选项 都会…

【SQL Server】DBCC CHECKDB只是一个数据库维护命令吗?

日期&#xff1a;2023年7月27日 作者&#xff1a;Commas 签名&#xff1a;(ง •_•)ง 积跬步以致千里,积小流以成江海…… 注释&#xff1a;如果您觉得有所帮助&#xff0c;帮忙点个赞&#xff0c;也可以关注我&#xff0c;我们一起成长&#xff1b;如果有不对的地方&#xf…

JVM简述

JDK&JRE&JVMJVM运行时内存结构图方法区堆区栈区程序计数器本地方法栈 JVM 的主要组成部分及其作用 JDK&JRE&JVM JVM就是java虚拟机&#xff0c;一台虚拟的机器&#xff0c;用来运行java代码 但并不是只有这台机器就可以的&#xff0c;java程序在运行时需要依赖…

sql查询语句大全-详细讲解(格式、示例)

目录 范围查询 BETWEEN...AND in 为空 模糊查询 去重查询 AND OR 排序查询 聚合函数 1.count&#xff1a;计算个数 2.max&#xff1a;计算最大值 3.min&#xff1a;计算最小值 4.sum&#xff1a;计算和 5.avg&#xff1a;计算平均数 分组查询 group by 分组后…

观察者模式、中介者模式和发布订阅模式

观察者模式 定义 观察者模式定义了对象间的一种一对多的依赖关系&#xff0c;当一个对象的状态发生改变时&#xff0c;所有依赖于它的对象都将得到通知&#xff0c;并自动更新 观察者模式属于行为型模式&#xff0c;行为型模式关注的是对象之间的通讯&#xff0c;观察者模式…

Pytorch(一)

目录 一、基本操作 二、自动求导机制 三、线性回归DEMO 3.1模型的读取与保存 3.2利用GPU训练时 四、常见的Tensor形式 五、Hub模块 一、基本操作 操作代码如下: import torch import numpy as np#创建一个矩阵 x1 torch.empty(5,3)# 随机值 x2 torch.rand(5,3)# 初始化…

NoSQL之Redis配置使用

目录 一、关系数据库与非关系型数据库 1.1.关系型数据库的概述 1.2关系型数据库的优缺点 1.2.1优点 1.2.2缺点 1.3.非关系型数据库的概述 二.关系数据库与非关系型数据库的区别 2.1数据存储方式不同 2.2扩展方式不同 2.3对事务性的支持不同 2.4非关系型数据库产生背景 2…

浅析嵌入式GUI框架-LVGL

LVGL是什么&#xff1f; LVGL (Light and Versatile Graphics Library) 是最流行的免费开源嵌入式图形库&#xff0c;可为任何 MCU、MPU 和显示类型创建漂亮的 UI。 嵌入式GUI框架对比 Features/框架LVGLFlutter-elinuxArkUI(鸿蒙OS)AWTKQTMIniGUIemWinuC/GUI柿饼UI跨平台…

【Golang】Golang进阶系列教程--为什么 Go 语言 struct 要使用 tags

文章目录 前言struct tags 的使用使用反引号避免使用空格避免重复使用标准化的 tag 名称多个 tag 值 struct tags 的原理struct tags 的优势常用的 struct tags参考文章&#xff1a; 前言 在 Go 语言中&#xff0c;struct 是一种常见的数据类型&#xff0c;它可以用来表示复杂…

《吐血整理》进阶系列教程-拿捏Fiddler抓包教程(8)-Fiddler如何设置捕获会话

1.简介 前边几篇宏哥介绍了Fiddler界面内容以及作用。今天宏哥就讲解和分享如何设置Fiddler后&#xff0c;我们就可以捕获会话&#xff0c;进行抓包了。 2.捕获会话的设备 常见的捕获会话的设备分为PC&#xff08;电脑&#xff09;端和手机&#xff08;Android和IOS苹果&…

Bert经典变体学习

ALBert ALBERT就是为了解决模型参数量大以及训练时间过长的问题。ALBERT最小的参数只有十几M, 效果要比BERT低1-2个点&#xff0c;最大的xxlarge也就200多M。可以看到在模型参数量上减少的还是非常明显的&#xff0c;但是在速度上似乎没有那么明显。最大的问题就是这种方式其实…

使用CRM分析数据有哪些功能?

CRM数据分析软件可以帮助企业增强竞争力&#xff0c;并更好地了解客户需求及市场变化&#xff0c;助力企业数据分析&#xff0c;并提供实时更新的数据和分析结果&#xff0c;CRM数据分析软件的主要特点是什么&#xff1f;包括以下6个特点。 CRM数据分析软件的主要功能通常包括…

SpringBoot 和 Vue 参数类型不对应,导致method parameter is not present

org.springframework.web.bind.MissingServletRequestParameterException: Required request parameter id for method parameter type String is not present 客户端&#xff1a; requestUserInfoById()const requestUserInfoById async (id?: string) > {} 服务器端&am…

亚马逊云科技全新Amazon Bedrock,助力客户构建生成式AI应用

亚马逊云科技近日在纽约峰会上宣布全面扩展其全托管基础模型服务Amazon Bedrock&#xff0c;包括新增Cohere作为基础模型供应商&#xff0c;加入Anthropic和Stability AI的最新基础模型&#xff0c;并发布变革性的新功能Amazon Bedrock Agents功能。客户无需管理任何基础设施&a…

ChatGPT统计“一到点就下班”的人数

ChatGPT统计“一到点就下班”的人数 1、到点下班 Chatgpt统计各部门F-D级员工到点下班人数占比&#xff0c;是在批评公司内部存在到点下班现象。 根据图片&#xff0c;该占比的计算方法是&#xff1a;最后一次下班卡在17:30-17:40之间&#xff0c;且1-5月合计有40天以上的人…