[单master节点k8s部署]31.ceph分布式存储(二)

Ceph配置

Ceph集群通常是一个独立的存储集群,可以部署在 Kubernetes 集群之外。Ceph 提供分布式存储服务,能够通过 RADOS、CephFS、RBD(块存储)、和 RGW(对象存储)等方式与 Kubernetes 集成。即使 Ceph 部署在 Kubernetes 外部,它依然可以通过存储插件(如 Rook 或 CSI)来为 Kubernetes 提供存储服务。这种架构允许 Ceph 集群和 Kubernetes 集群独立扩展,且 Ceph 可以被多个 Kubernetes 集群或者其他系统(如 OpenStack)同时使用。

教程中配置ceph集群有三个节点,分别是master节点,monitor节点和OSD(object storage deamon)节点。

master节点主要用于管理 Ceph 集群,可以作为管理员机器来执行 Ceph 的命令行工具(如 ceph CLI)和集群的配置操作。这台机器一般会安装 Ceph 部署工具(如 ceph-deploy),但它通常不需要承担存储和监控的职责。事实上master节点不是必须的,可以在ceph集群的任意节点安装ceph CLI,但为了方便管理和保持隔离,通常会保留一个专门的管理节点。

Ceph Monitor (MON) 节点负责管理集群的健康状态,保存集群的元数据(比如集群成员、映射关系、状态信息等)。Monitor 节点会参与选举,决定集群是否可以正常操作。

OSD(Object Storage Daemon)是 Ceph 集群中存储数据的主要组成部分。每一个 OSD 实际上代表一个存储硬盘或者存储分区,负责读写数据、复制数据和心跳检测。

事实上一个高可用的ceph集群需要至少三个monitor和 OSD节点来保证数据复制和高可用性。Monitor节点可以完成仲裁,而越多的OSD节点可以保证冗余和高效的数据存取。

[root@master1-admin ~]# yum install python-setuptools ceph-deploy -y #在 master1-admin、node1-monitor 和 node2-osd 节点安装 ceph
[root@master1-admin]# yum install ceph ceph-radosgw -y
[root@node1-monitor ~]# yum install ceph ceph-radosgw -y
[root@node2-osd ~]# yum install ceph ceph-radosgw -y

ceph-deploy:是 Ceph 的部署工具,用于从管理节点(通常是 admin 节点)管理和部署 Ceph 集群。它允许你从一个节点管理整个 Ceph 集群,包括创建 OSD、Monitor 节点等。

在 master节点安装了ceph-deploy,并且在所有节点安装ceph 和ceph-rados gateway。

配置master

创建一个目录,用于保存ceph-deploy生成的配置文件信息:
在目录中执行命令生成一个master节点,一个monitor节点和一个osd节点

[root@master1-admin ceph ~]# cd /etc/ceph
[root@master1-admin ceph]# ceph-deploy new master1-admin node1-monitor node2-
osd
[root@master1-admin ceph]# ls
#生成了如下配置文件
ceph.conf ceph-deploy-ceph.log ceph.mon.keyring

修改ceph.conf配置文件:

[global]
fsid = af5cd413-1c53-4035-90c6-95368eef5c78
mon_initial_members = node1-monitor
mon_host = 192.168.40.201
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
filestore_xattr_use_omap = true
osd_pool_default_size = 2
mon clock drift allowed = 0.500
mon clock drift warn backoff = 10
把 osd_pool_default_size = 2 加入[global]段,这样只有 2 个 osd 也能达到 active+clean 状态。
mon clock drift allowed #监视器间允许的时钟漂移量默认值 0.05
mon clock drift warn backoff #时钟偏移警告的退避指数。默认值 5
ceph 对每个 mon 之间的时间同步延时默认要求在 0.05s 之间,这个时间有的时候太短
了。所以这里将这两个参数设置为0.5和10。

配置monitor

在master节点初始化monitor:

[root@master1-admin]# ceph-deploy mon create-initial

收集所有密钥: 

配置OSD

 在master节点上将三个节点的目录配置为OSD的存储目录。

[root@ master1-admin ceph]# cd /etc/ceph/
[root@master1-admin ceph]# ceph-deploy osd prepare master1-admin:/dev/sdb 
[root@master1-admin ceph]# ceph-deploy osd prepare node1-monitor:/dev/sdb 
[root@master1-admin ceph]# ceph-deploy osd prepare node2-osd:/dev/sdb

运行成功后激活OSD,并查看状态:

[root@master1-admin ceph]# ceph-deploy osd activate master1-admin:/dev/sdb1
[root@master1-admin ceph]# ceph-deploy osd activate node1-monitor:/dev/sdb1
[root@master1-admin ceph]# ceph-deploy osd activate node2-osd:/dev/sdb1
[root@ master1-admin ceph]# ceph-deploy osd list master1-admin node1-monitor
node2-osd

激活成功的状态: 

创建文件系统 

在指定这些节点上创建 MDS 服务,帮助管理文件系统的元数据。

mds 是 Ceph 文件系统 (CephFS) 中的 元数据服务器(Metadata Server,MDS)。在 CephFS 中,元数据服务器负责管理和存储文件系统的元数据,例如目录结构、文件权限和其他与文件系统操作相关的信息。元数据与实际文件数据分开存储和管理,因此 MDS 主要处理与文件系统操作相关的请求,例如列出目录、查找文件、创建和删除文件等。

通常是 1 到 2 个活动 MDS 节点就可以处理大量的文件系统请求。大多数情况下,不需要每个 OSD 节点都运行 MDS 服务。 

[root@ master1-admin ceph]# ceph-deploy mds create master1-admin node1-monitor
node2-osd

上面的命令会在 master1-adminnode1-monitornode2-osd 这三个节点上各创建一个 MDS 实例。也就是说,最终你会有 3 个 MDS 实例,每个节点一个。 

首先在master节点上通过osd创建池,每一个池包含26个PG。这里的池不一定在master节点上。创建数据池时,Ceph 会使用 CRUSH 算法自动决定数据的分布,而无需手动指定要在哪些 OSD 上创建池。Ceph 会根据池的配置和 OSD 的状态自动选择合适的 OSD 来存储数据。

[root@master1-admin ceph]# ceph osd pool create cephfs_data 26
pool 'cephfs_data' created
[root@master1-admin ceph]# ceph osd pool create cephfs_metadata 26
pool 'cephfs_metadata' created

PG(Placement Group) 是 Ceph 用来分配和管理数据的单位。每个池中的对象会被分配到一个 PG 中,PG 再被分配到 OSD 上。PG 数量的选择对集群性能和数据均衡性有很大影响。

创建一个文件系统fs,名称叫做xianchao,其中元数据池是ceph_metadata,数据池是ceph_data。随后列举文件系统,发现我们刚才创建的这个文件系统。

[root@master1-admin ceph]# ceph fs new xianchao cephfs_metadata cephfs_data
new fs with metadata pool 2 and data pool 1
[root@master1-admin ceph]# ceph fs ls
name: xianchao, metadata pool: cephfs_metadata, data pools: [cephfs_data]

CephFS 允许你在创建文件系统时配置多个数据池。每个数据池可以用于存储不同类型的数据,以满足不同的需求。例如,你可以创建一个池用于存储用户数据,另一个池用于存储日志或临时文件。CephFS 必须有一个元数据池,用于存储文件系统的元数据,如文件名、目录结构、权限等。这是管理文件系统结构和操作的关键。

[root@ master1-admin ceph]# ceph mds stat # 查看 mds 节点状态
xianchao:1 {0=master1-admin=up:active} 2 up:standby

0=master1-admin 指的是 master1-admin 节点正在运行一个 MDS 实例,标识符为 0。
up:standby 表示当前有一个 MDS 处于**待命(standby)**状态,作为活跃 MDS 的备份。如果当前活跃的 MDS 出现问题,这个 standby MDS 将自动接管,保持文件系统的高可用性。

查看ceph健康状态:

[root@master1-admin ceph]# ceph -s
cluster cd296a0b-1f61-4b9f-8cc3-0a57dfab00eb
health HEALTH_OK
monmap e1: 3 mons at {master1-admin=192.168.40.200:6789/0,node1-monitor=192.168.40.201:6789/0,node2-osd=192.168.40.202:6789/0}
election epoch 4, quorum 0,1,2 master1-admin,node1-monitor,node2-osd
fsmap e7: 1/1/1 up {0=node2-osd=up:active}, 2 up:standby
osdmap e20: 3 osds: 3 up, 3 in
flags sortbitwise,require_jewel_osds
pgmap v51: 116 pgs, 3 pools, 2068 bytes data, 20 objects
323 MB used, 164 GB / 164 GB avail
116 active+clean

MGR

Mgr 是 Ceph 集群的管理守护进程,它负责收集和报告集群状态、性能指标,并提供集群管理接口。模块化架构使得 Mgr 可以扩展和自定义,管理员可以根据需求加载不同的管理模块。

K8S挂载Ceph

kubernetes 要想使用 ceph,需要在 k8s 的每个 node 节点安装 ceph-common,把 ceph节点上的 ceph.repo 文件拷贝到 k8s 各个节点/etc/yum.repos.d/目录下,然后在 k8s 的各个节点 yum install ceph-common -y
部署Ceph的网段需要和K8s在一个网段,保证可以通信。
[root@master1-admin ~]# scp /etc/yum.repos.d/ceph.repo master:/etc/yum.repos.d/
[root@master1-admin ~]# scp /etc/yum.repos.d/ceph.repo node1:/etc/yum.repos.d/
[root@master]yum install ceph-common -y
[root@mnode1]yum install ceph-common -y

创建ceph rbd

将 ceph 配置文件拷贝到 k8s 的控制节点和工作节点
[root@master1-admin ~]# scp /etc/ceph/* master:/etc/ceph/
[root@master1-admin ~]# scp /etc/ceph/* node1:/etc/ceph/
[root@master1-admin ~]# ceph osd pool create k8srbd1 56
pool 'k8srbd' created
[root@master1-admin ~]# rbd create rbda -s 1024 -p k8srbd1
[root@master1-admin ~]# rbd feature disable k8srbd1/rbda object-map fast-diff 
deep-flatten

创建了一个资源池叫做k8srbd1,并创建了块存储rbda,大小为 1024MB,并存储在 k8srbd1 池中。

禁用了RBD映像的几个功能。RBD 是块设备的类型,而 rbda 是该类型的一个具体实例。你可以创建多个 RBD 镜像,比如 rbdarbdb,它们都是 RBD 的具体表现。

值得注意的是,在ceph中创建文件系统的时需要先创建metadata和data,然后创建文件系统,指定metadata和data,metadata 会由MDS管理。

ceph osd pool create cephfs_metadata 128
ceph osd pool create cephfs_data 128
ceph fs new mycephfs cephfs_metadata cephfs_data

而创建rbd的时候只需要按照上述方法创建就可以。

pod挂载ceph rbd

[root@xianchaomaster1 ~]# vim pod.yaml
apiVersion: v1
kind: Pod
metadata:name: testrbd
spec:containers:- image: nginxname: nginximagePullPolicy: IfNotPresentvolumeMounts:- name: testrbdmountPath: /mntvolumes:- name: testrbdrbd:monitors:- '192.168.40.201:6789'- '192.168.40.200:6789'- '192.168.40.202:6789'pool: k8srbd1image: rbdafsType: xfsreadOnly: falseuser: adminkeyring: /etc/ceph/ceph.client.admin.keyring

因为上面我们将ceph的配置文件都复制到k8s节点,所以在目录下可以找到ceph 的keyring

这里的rbda只能被挂载到一个pod,如果需要在别的pod里面挂载rbd镜像,可以在资源池里面创建别的rbd镜像。

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

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

相关文章

基于深度学习的手势控制模型

关于深度实战社区 我们是一个深度学习领域的独立工作室。团队成员有:中科大硕士、纽约大学硕士、浙江大学硕士、华东理工博士等,曾在腾讯、百度、德勤等担任算法工程师/产品经理。全网20多万粉丝,拥有2篇国家级人工智能发明专利。 1. 项目简…

Nexpose 6.6.271 发布下载,新增功能概览

Nexpose 6.6.271 for Linux & Windows - 漏洞扫描 Rapid7 Vulnerability Management, release Sep 26, 2024 请访问原文链接:https://sysin.org/blog/nexpose-6/,查看最新版。原创作品,转载请保留出处。 作者主页:sysin.or…

安全工具 | 搭建带有 Web 仪表板的Interact.sh

介绍 Interactsh 是一个用于检测带外交互的开源工具。它是一种旨在检测导致外部交互的漏洞的工具。本文将主要介绍在子域上设置私有 Interact.sh 服务器以及部署其 Web 应用程序。只需一个 AWS EC2 或 VPS 实例和一个域。 要求 •具有静态IP的AWS EC2 / VPS •拥有自己的域…

实例讲解电动汽车VIN写入规则及Simulink建模方法(三)——VIN设置状态反馈及Simulink建模方法

目录 一、整车VIN设置状态反馈规则 二、整车VIN设置状态反馈设置策略 1、VIN设置状态判定 2、VIN设置状态反馈发送 三、整车VIN设置状态反馈Simulink建模 1、VIN设置状态判定 2、VIN设置状态反馈发送 3、整车VIN设置状态反馈设置完整Simulink模型 四、总结 一、整车VI…

Node.js入门——fs、path模块、URL端口号、模块化导入导出、包、npm软件包管理器

Node.js入门 1.介绍 定义:跨平台的JS运行环境,使开发者可以搭建服务器端的JS应用程序作用:使用Node.Js编写服务器端代码Node.js是基于Chrome V8引擎进行封装,Node中没有BOM和DOM 2.fs模块-读写文件 定义:封装了与…

WIFI网速不够是不是光猫的“路由模式”和“桥接模式”配置错了?

光猫(光纤调制解调器)是一种用于将光纤信号转换为数字信号的设备,通常用于家庭或企业网络中。光猫可以在不同的工作模式下运行,其中最常见的两种模式是“路由模式”和“桥接模式”。以下是这两种模式的详细解释及其优缺点。 一、路…

python发邮件附件:配置SMTP服务器与认证?

python发邮件附件技巧?Python发送多附件邮件的方法? Python作为一种强大的编程语言,提供了丰富的库和工具来实现这一功能。AokSend将深入探讨如何使用Python发邮件附件,并详细介绍配置SMTP服务器与认证的关键步骤。 python发邮件…

通过阿里云Milvus与PAI搭建高效的检索增强对话系统

阿里云Milvus现已无缝集成于阿里云PAI平台,一站式赋能用户构建高性能的RAG(Retrieval-Augmented Generation)对话系统。您可以利用Milvus作为向量数据的实时存储与检索核心,高效结合PAI和LangChain技术栈,实现从理论到…

第69期 | GPTSecurity周报

GPTSecurity是一个涵盖了前沿学术研究和实践经验分享的社区,集成了生成预训练Transformer(GPT)、人工智能生成内容(AIGC)以及大语言模型(LLM)等安全领域应用的知识。在这里,您可以找…

react 知识点汇总(非常全面)

React 是一个用于构建用户界面的 JavaScript 库,由 Facebook 开发并维护。它的核心理念是“组件化”,即将用户界面拆分为可重用的组件。 React 的组件通常使用 JSX(JavaScript XML)。JSX 是一种 JavaScript 语法扩展,…

HCIP——GRE和MGRE

目录 VPN GRE GRE环境的搭建 GRE的报文结构 GRE封装和解封装报文的过程 GRE配置​编辑 R1 R2 GRE实验​​​​​​​​编辑 MGRE 原理 MGRE的配置 R1 R2 R3 R4 查看映射表 抓包 MGRE环境下的RIP网络 综合练习​编辑 VPN 说到GRE,我们先来说个大…

Http 协议和 RPC 协议有什么区别?

Http 协议和 RPC 协议有什么区别? 三个层面来述说: 从功能特性来说: HTTP是一个属于应用层的超文本传输协议,是万维网数据通信的基础,主要服务在网页端和服务端的数据传输上。 RPC是一个远程过程调用协议&#xff0…

AI+视频监控:EasyCVR安防平台赋能火电制造行业的视频智能管理方案

随着信息技术的飞速发展和智能制造的深入推进,火电制造行业作为国民经济的重要组成部分,正面临着智能化转型的迫切需求。为了提升生产效率、保障设备安全、优化管理流程,火电制造企业迫切需要引入先进的视频监控与人工智能技术。EasyCVR安防监…

TinyOS 点对基站通信

文章目录 一、前言1.1 发包的BlinkToRadio的数据包格式 二、混淆基站源码分析2.1 Makefile2.2 组件连接2.3 主逻辑代码 一、前言 1.1 发包的BlinkToRadio的数据包格式 如下,注意:AM层类型(1byte)即handlerID使可以在组件中修改的。 二、混淆基站源码…

《安富莱嵌入式周报》第343期:雷电USB4开源示波器正式发布,卓越的模拟前端低噪便携示波器,自带100W电源的便携智能烙铁,NASA航空航天锂电池设计

周报汇总地址:嵌入式周报 - uCOS & uCGUI & emWin & embOS & TouchGFX & ThreadX - 硬汉嵌入式论坛 - Powered by Discuz! 更新一期视频教程 【授人以渔】CMSIS-RTOS V2封装层专题视频,一期视频将常用配置和用法梳理清楚&#xff0…

【Mybatis篇】Mybatis的注解开发

🧸安清h:个人主页 🎥个人专栏:【计算机网络】,【Mybatis篇】 🚦作者简介:一个有趣爱睡觉的intp,期待和更多人分享自己所学知识的真诚大学生。 文章目录 🎯 Select注解 …

自动猫砂盆有必要买吗?高性价比的自动猫砂盆怎么选通通看这篇

最近市面上又新出了很多款式的自动猫砂盆,有些铲屎官蠢蠢欲动,但又在犹豫,自己真的需要自动猫砂盆吗?作为养猫4年的资深铲屎官,在买过这么多猫咪智能用品的里面,最不后悔的就是自动猫砂盆了!要知…

【北京迅为】《STM32MP157开发板嵌入式开发指南》-第二十五章 Source Insight 的安装和使用

iTOP-STM32MP157开发板采用ST推出的双核cortex-A7单核cortex-M4异构处理器,既可用Linux、又可以用于STM32单片机开发。开发板采用核心板底板结构,主频650M、1G内存、8G存储,核心板采用工业级板对板连接器,高可靠,牢固耐…

ElasticSearch备考 -- Multi match

一、题目 索引task有3个字段a、b、c,写一个查询去匹配这三个字段为mom,其中b的字段评分比a、c字段大一倍,将他们的分数相加作为最后的总分数 二、思考 通过题目要求对多个字段进行匹配查询,可以考虑multi match、bool query操作。…

RabbitMQ的相关题

一、 MQ的作⽤及应⽤场景 类似问题: 项⽬什么场景下使⽤到了MQ, 为什么需要MQ? RabbitMQ 的作⽤?使⽤场景有哪些? RabbitMQ…