openEuler 22.03 使用cephadm安装部署ceph集群
目录
- 目的
- 步骤
- 规格
- 步骤
- ceph部署前准备工作
- 安装部署ceph集群
- ceph集群添加node与osd
- ceph集群一些操作
- 组件服务操作
- 集群进程操作
目的
使用ceph官网的
cephadm无法正常安装,会报错ERROR: Distro openeuler version 22.03 not supported
在openEuler上实现以cephadm安装部署ceph集群。
步骤
规格
所有主机均为openEuler22.03 LTS SP3
| 虚拟机名 | 配置 | IP 地址 | 主机名 | 角色 | 磁盘配置 |
|---|---|---|---|---|---|
| node1 | 2C4G | 192.168.100.81 | node1.example.com | Mon、mgr、osd(引导节点) | 系统盘 20GB, OSD盘 10GB x 3 |
| node2 | 2C4G | 192.168.100.82 | node2.example.com | Mon、mgr、osd | 系统盘 20GB, OSD盘 10GB x 3 |
| node3 | 2C4G | 192.168.100.83 | node3.example.com | Mon、osd(复用客户端) | 系统盘 20GB, OSD盘 10GB x 3 |
| node4 | 2C4G | 192.168.100.84 | node4.example.com | osd 扩容备用节点 | 系统盘 20GB, OSD盘 10GB x 3 |
PS1: 以上虚拟机均需要配置三块硬盘,每块硬盘分别为系统盘(20GB)和三块OSD盘(10GB每块),每个节点共四块硬盘。
PS2: 该实验仅需node1~3 三台主机即可。
步骤
ceph部署前准备工作
- 设置主机名
# 所有主机分别设置
hostnamectl set-hostname node1.example.com
hostnamectl set-hostname node2.example.com
hostnamectl set-hostname node3.example.com
- 设置ip
#node1:nmcli con de ens33nmcli con add type ethernet ifname ens33 con-name ens33 ipv4.addresses 192.168.100.81/24 ipv4.gateway 192.168.100.2 ipv4.dns 192.168.100.2 ipv4.method manual autoconnect yes#node2:nmcli con de ens33nmcli con add type ethernet ifname ens33 con-name ens33 ipv4.addresses 192.168.100.82/24 ipv4.gateway 192.168.100.2 ipv4.dns 192.168.100.2 ipv4.method manual autoconnect yes#node1:nmcli con de ens33nmcli con add type ethernet ifname ens33 con-name ens33 ipv4.addresses 192.168.100.83/24 ipv4.gateway 192.168.100.2 ipv4.dns 192.168.100.2 ipv4.method manual autoconnect yes
- 设置hosts文件
# node1:
# 设置hosts文件,将三台主机的ip和主机名加入
cat << EOF >> /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.100.81 node1.example.com
192.168.100.82 node2.example.com
192.168.100.83 node3.example.com
EOF# scp传输到另外两台主机scp /etc/hosts node2.example.com:/etc/scp /etc/hosts node3.example.com:/etc/
- 关闭防火墙和selinux
# 所有主机
systemctl disable --now firewalld
sed -i 's|enforcing|disabled|g' /etc/sysconfig/selinux
- 设置时间同步
# 所有主机
echo 'server ntp.aliyun.com iburst' >> /etc/chrony.conf
systemctl restart chronyd.service
systemctl enable chronyd --now
- 安装podman
# 所有主机
yum install -y podman
- 重启
安装部署ceph集群
- 安装openeuler专用cephadm
# 引导节点node1
yum install git -y
git clone https://gitee.com/yftyxa/openeuler-cephadm.git
cp openeuler-cephadm/cephadm /usr/sbin && chmod a+x /usr/sbin/cephadm
- 添加ceph源
# 所有主机均需
cat >> /etc/yum.repos.d/ceph.repo <<EOF
[ceph]
name=ceph x86_64
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/x86_64
enabled=1
gpgcheck=0
[ceph-noarch]
name=ceph noarch
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/noarch
enabled=1
gpgcheck=0
[ceph-source]
name=ceph SRPMS
baseurl=https://repo.huaweicloud.com/ceph/rpm-pacific/el8/SRPMS
enabled=1
gpgcheck=0
EOF
- 初始化ceph集群
# 引导节点node1
# mon-ip即web页面访问IP,user和password就是访问的账户和密码
cephadm bootstrap --mon-ip 192.168.100.81 --allow-fqdn-hostname --initial-dashboard-user admin --initial-dashboard-password Huawei@123 --dashboard-password-noupdate
看到下图的url,证明安装成功




ceph集群添加node与osd
- 创建ceph shell(ceph集群的管理容器)
# node1cephadm shell# 也可以安装ceph-common (不用每次cephadm shell)yum install ceph-common
查看状态
[ceph: root@node1 /]# ceph -scluster:id: b4982244-b181-11ef-9973-000c295bb5dchealth: HEALTH_WARNOSD count 0 < osd_pool_default_size 3services:mon: 1 daemons, quorum node1.example.com (age 6m)mgr: node1.example.com.ehhbco(active, since 2m)osd: 0 osds: 0 up, 0 indata:pools: 0 pools, 0 pgsobjects: 0 objects, 0 Busage: 0 B used, 0 B / 0 B availpgs:progress:Updating grafana deployment (+1 -> 1) (0s)[............................]
- 生成ceph公钥,并给到其他节点
# node1
ceph cephadm get-pub-key > ~/ceph.pub
ssh-copy-id -f -i ~/ceph.pub root@node2.example.com
ssh-copy-id -f -i ~/ceph.pub root@node3.example.com
- 添加节点进入集群
[ceph: root@node1 /]# ceph orch host add node2.example.com
Added host 'node2.example.com' with addr '192.168.100.82'
[ceph: root@node1 /]# ceph orch host add node3.example.com
Added host 'node3.example.com' with addr '192.168.100.83'

4. 查看状态
# 查看主机信息
[ceph: root@node1 /]# ceph orch host ls
HOST ADDR LABELS STATUS
主机名 地址 标签 状态(不正常才会有显示)
node1.example.com 192.168.100.81 _admin
node2.example.com 192.168.100.82
node3.example.com 192.168.100.83
3 hosts in cluster
- 给主机打标签
# ceph shell
[ceph: root@node1 /]# ceph orch host label add node2.example.com mgr_test
Added label mgr_test to host node2.example.com
[ceph: root@node1 /]# ceph orch host label add node2.example.com _admin
Added label _admin to host node2.example.com
[ceph: root@node1 /]# ceph orch host label add node3.example.com _admin
Added label _admin to host node3.example.com# 查看状态
[ceph: root@node1 /]# ceph orch host ls
HOST ADDR LABELS STATUS
node1.example.com 192.168.100.81 _admin
node2.example.com 192.168.100.82 mgr_test _admin
node3.example.com 192.168.100.83 _admin
3 hosts in cluster
- 添加osd
ceph orch daemon add osd <主机名>:/path
# 手动添加某一块硬盘为osd
ceph orch daemon add osd node1.example.com:/dev/sdb
# 添加所有空闲硬盘为osd
ceph orch apply osd --all-available-devices

查看osd
[ceph: root@node1 /]# ceph osd ls
0
1
2
3
4
5
6
7
8
ceph集群一些操作
组件服务操作
- 查询组件服务状态
[ceph: root@node1 /]# ceph orch ls
NAME PORTS RUNNING REFRESHED AGE PLACEMENT
服务名 IP加端口 运行状态/数量 刷新 运行 部署方式
alertmanager ?:9093,9094 1/1 23s ago 17m count:1
crash 3/3 26s ago 17m *
grafana ?:3000 1/1 23s ago 17m count:1
mgr 2/2 26s ago 17m count:2
mon 3/5 26s ago 17m count:5
node-exporter ?:9100 3/3 26s ago 17m *
prometheus ?:9095 1/1 23s ago 17m count:1
count:1 该服务组件只在某一个节点上进行部署
‘*’ : 表示该服务在所有节点上部署
主机名: 表示仅在特定主机上部署
标签名: 表示仅在指定标签主机上部署
- 关闭组件自扩展
为什么加入主机到集群后,ceph的组件会自动部署到主机上???
CEPH集群有节点自扩展能力,会自动部署集群所需要的组件数量
ceph orch apply <组件名> --unmanaged=true
# ceph shell
ceph orch apply mon --unmanaged=true

- 部署组件(编排)
ceph orch apply <组件名> xxxxx
# 指定部署3个mgr节点
ceph orch apply mgr --placement=3
# 可以指定标签
[ceph: root@node1 /]# ceph orch apply mon --placement="label:_admin"
Scheduled mon update...
- 部署组件(手动)
ceph orch daemon add <组件名> <主机名>
ceph orch daemon add mgr node3.example.com
集群进程操作
- 查看进程
ceph orch ps
- 启动进程
ceph orch start alertmanager #将所有节点上的服务启动起来
ceph orch daemon start node-exporter.node1 #启动指定节点上的服务进程
- 停止进程
ceph orch stop alertmanager #将所有节点上的进程停止
ceph orch daemon stop node-exporter.node1 #停止指定节点的指定进程
- 重启进程
ceph orch restart alertmanager #重启一组服务
ceph orch daemon restart alertmanager #重启单个进程(服务)
- 删除进程
ceph orch daemon rm node-exporter.node3 #删除指定节点的指定进程
ceph orch rm node-exporter #删除一组服务,在所有节点上删除该服务
# 需要添加回来,请参考上一步的部署服务
相关文章:
openEuler 22.03 使用cephadm安装部署ceph集群
目录 目的步骤规格步骤ceph部署前准备工作安装部署ceph集群ceph集群添加node与osdceph集群一些操作组件服务操作集群进程操作 目的 使用ceph官网的cephadm无法正常安装,会报错ERROR: Distro openeuler version 22.03 not supported 在openEuler上实现以cephadm安装部…...
C++哈希(一)
1.底层结构 顺序结构以及平衡中,元素关键码与其存储位置之间没有相对应的关系,因此在查找一个元素时,要经过关键码的多次比较。顺序查找的时间复杂度为O(N)。 理想的搜索方法:可以不经过比较,依次直接从表中直接搜索…...
阿拉丁论文助手:一键点亮学术之路
在学术研究的海洋中,每一位学者都渴望拥有一盏能够照亮前行道路的神灯。阿拉丁论文助手,正是这样一盏神奇的灯,它以其先进的人工智能技术和丰富的学术资源,为学者们的学术写作提供了全方位的支持。 一、阿拉丁论文助手简介 阿拉丁…...
视频码率到底是什么?详细说明
视频码率(Video Bitrate)是指在单位时间内(通常是每秒)传输或处理的视频数据量,用比特(bit)表示。它通常用来衡量视频文件的压缩程度和质量,码率越高,视频质量越好&#…...
嵌入式学习(17)-stm32F407串口使用注意事项
一、概述 配置串口时串口的接收一直不好使,对比例程发现了问题: 在网上也找了一些资料供参考“STM32F4的串口RX引脚不能被设置为输入是因为串口的接收(RX)功能是由硬件电路实现的,无法通过软件配置来控制。串口接收功…...
汽车48V电气系统
汽车48V电气系统 汽车48V电气系统汽车48V电气系统设计汽车48V电气系统测试汽车48V系统是48V供电和12V供电共存的么?48V供电系统是如何与12V供电系统共存的?48V电气系统测试的难点有哪些?在汽车48V电气系统通信测试中,如何向12V的控制器和48V的控制器供电?汽车48V电气系统通…...
【人工智能基础05】决策树模型习题
文章目录 1. 归一化对决策树的影响2. 选择决策树模型3. 决策树计算4. 基尼系数的优势5. 在叶子上使用线性模型的优缺点 1. 归一化对决策树的影响 题目:对于一些机器学习模型(例如,神经网络),对特征进行归一化(normaliz…...
rockit 学习、开发笔记(六)(VENC)
前言 上节我们讲到了VDEC解码模块,那当然少不了VENC编码模块了,一般有编解码的需求都是为了压缩视频的大小,方便减少传输所占用的带宽。 概述 VENC 模块,即视频编码模块。本模块支持多路实时编码,且每路编码独立&am…...
spring技术点
引入对象 Autowired 和 Resource的区别 Autowired 和 Resource的区别 valid 参数校验 jarkata进行SpringMVC校验 常规当前进行校验的配置操作,参考文档如下进行操作。 SpringMVC校验注解不生效 List类型参数校验 由于list类型默认不能进行标注校验实现&#x…...
R语言使用“纽约市数据集中的优步皮卡”数据创建不同年度时间范围的可视化
一、项目背景 为了分析纽约市优步(https://baike.baidu.com/item/Uber/14900884)皮卡在不同年度的使用情况,需要利用R语言进行数据可视化。通过对比不同年度的数据,可以揭示出优步皮卡使用的趋势和变化。 二、数据准备 数据集&a…...
电阻计RM3544、RM3545的使用
目录: 一、电阻计与PC通讯 1、硬件连接 2、RmLogger.exe的使用 二、RM3545测量35uΩ电阻 一、电阻计与PC通讯 1、硬件连接 可以设置USB或COM口(串口)连接PC,也可以设置为“打印”输出。 1)使用USB连接PC 2)使用串口连接PC …...
Unity 策略游戏地图上的网格是如何实现的
在Unity中实现策略游戏地图上的网格,主要涉及到地图数据的处理、地图的加载与渲染、以及玩家在地图上的移动与碰撞检测等关键步骤。以下是对这些步骤的详细解释: 一、地图数据的处理 收集地图数据:这包括地形高度、地形纹理、建筑物、树木等…...
《鸟哥的Linux私房菜基础篇》---4 Linux档案的压缩与打包
目录 一、常见的压缩包的扩展名 二、常见的压缩和解压指令 1、tar 2、tar gzip(.tar.gz) (或 .tgz) 3、tar bzip2(.tar.bz2) 4、zip 5、gzip 6、bzip2 7、xz 8、rar 9、7z 三、安装解压工具 一、常见的压缩包的扩展…...
Springboot 2.7+解决跨域问题,到底是在SpringBoot中添加拦截器还是修改Nginx配置
文章目录 1摘要2 核心代码2.1 SpringBoot 全局跨域拦截器2.2 Nginx 配置跨域处理2.3 Nginx 和 SpringBoot 同时添加允许跨域处理会怎么样? 3 推荐参考资料 1摘要 跨域问题报错信息: Referrer Policy:strict-origin-when-cross-origin跨域问题是在前后端分离的情况…...
Spring中Bean的作用域深入剖析与技术实践
前言 Spring框架作为Java企业级应用开发中的中流砥柱,提供了强大的依赖注入(DI)和面向切面编程(AOP)等功能。在Spring框架中,Bean的作用域(Scope)是一个非常重要的概念,…...
Python爬虫实战:抓取拼多多商品详情数据(基于pdd.item_get接口)
在当前的电商市场中,拼多多以其独特的拼团模式和优惠价格吸引了大量用户,成为继淘宝、京东之后的又一大电商平台。对于数据分析和市场研究者来说,获取拼多多的商品详情数据显得尤为重要。本文将介绍如何使用Python爬虫技术,通过调…...
工具类-列表请求工具 useList
useList 用于列表请求的基于 vue 3 的 hooks,接收请求函数、请求参数等数据,自动生成请求请求函数,分页信息等 本文有涉及到 http 请求工具和接口返回格式的内容: http 工具:一个基于 axios 封装的请求工具Response…...
Scala中的正则表达式01
规则类型具体规则示例说明单字符大多数字符匹配自身正则表达式 abc,文本 abca 匹配 a,b 匹配 b,c 匹配 c方括号 [ ][ ] 定义字符集,匹配其一[abc],文本 a、b 或 c[abc] 匹配 a、b 或者 c排除字符集 [^ ][^ ] 开头加 ^&…...
基于SpringBoot的养老院管理系统的设计与实现
一、前言 随着人口老龄化的加剧,养老院作为老年人养老的重要场所,其管理的高效性和科学性显得尤为重要。传统的养老院管理方式多依赖人工操作,存在信息记录不及时、不准确,管理流程繁琐,资源调配困难等问题。利用信息技…...
Ansible变量详解(变量定义+变量优先级+变量注册+层级定义变量+facts缓存变量)
本篇文章详细给大家介绍Ansible变量,变量适合管理剧本中每个项目的动态值,或是某些值在多个地方重复使用,如果将此值设置为变量再在其他地方调用会方便许多。会用变量,才算真正会用Ansible,话不多说,直接开…...
React 第五十五节 Router 中 useAsyncError的使用详解
前言 useAsyncError 是 React Router v6.4 引入的一个钩子,用于处理异步操作(如数据加载)中的错误。下面我将详细解释其用途并提供代码示例。 一、useAsyncError 用途 处理异步错误:捕获在 loader 或 action 中发生的异步错误替…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
DockerHub与私有镜像仓库在容器化中的应用与管理
哈喽,大家好,我是左手python! Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库,用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
uniapp微信小程序视频实时流+pc端预览方案
方案类型技术实现是否免费优点缺点适用场景延迟范围开发复杂度WebSocket图片帧定时拍照Base64传输✅ 完全免费无需服务器 纯前端实现高延迟高流量 帧率极低个人demo测试 超低频监控500ms-2s⭐⭐RTMP推流TRTC/即构SDK推流❌ 付费方案 (部分有免费额度&#x…...
HTML前端开发:JavaScript 常用事件详解
作为前端开发的核心,JavaScript 事件是用户与网页交互的基础。以下是常见事件的详细说明和用法示例: 1. onclick - 点击事件 当元素被单击时触发(左键点击) button.onclick function() {alert("按钮被点击了!&…...
高防服务器能够抵御哪些网络攻击呢?
高防服务器作为一种有着高度防御能力的服务器,可以帮助网站应对分布式拒绝服务攻击,有效识别和清理一些恶意的网络流量,为用户提供安全且稳定的网络环境,那么,高防服务器一般都可以抵御哪些网络攻击呢?下面…...
HashMap中的put方法执行流程(流程图)
1 put操作整体流程 HashMap 的 put 操作是其最核心的功能之一。在 JDK 1.8 及以后版本中,其主要逻辑封装在 putVal 这个内部方法中。整个过程大致如下: 初始判断与哈希计算: 首先,putVal 方法会检查当前的 table(也就…...
Git 3天2K星标:Datawhale 的 Happy-LLM 项目介绍(附教程)
引言 在人工智能飞速发展的今天,大语言模型(Large Language Models, LLMs)已成为技术领域的焦点。从智能写作到代码生成,LLM 的应用场景不断扩展,深刻改变了我们的工作和生活方式。然而,理解这些模型的内部…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
