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,话不多说,直接开…...
golang循环变量捕获问题
在 Go 语言中,当在循环中启动协程(goroutine)时,如果在协程闭包中直接引用循环变量,可能会遇到一个常见的陷阱 - 循环变量捕获问题。让我详细解释一下: 问题背景 看这个代码片段: fo…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 
引言:为什么 Eureka 依然是存量系统的核心? 尽管 Nacos 等新注册中心崛起,但金融、电力等保守行业仍有大量系统运行在 Eureka 上。理解其高可用设计与自我保护机制,是保障分布式系统稳定的必修课。本文将手把手带你搭建生产级 Eur…...
【决胜公务员考试】求职OMG——见面课测验1
2025最新版!!!6.8截至答题,大家注意呀! 博主码字不易点个关注吧,祝期末顺利~~ 1.单选题(2分) 下列说法错误的是:( B ) A.选调生属于公务员系统 B.公务员属于事业编 C.选调生有基层锻炼的要求 D…...
服务器--宝塔命令
一、宝塔面板安装命令 ⚠️ 必须使用 root 用户 或 sudo 权限执行! sudo su - 1. CentOS 系统: yum install -y wget && wget -O install.sh http://download.bt.cn/install/install_6.0.sh && sh install.sh2. Ubuntu / Debian 系统…...
20个超级好用的 CSS 动画库
分享 20 个最佳 CSS 动画库。 它们中的大多数将生成纯 CSS 代码,而不需要任何外部库。 1.Animate.css 一个开箱即用型的跨浏览器动画库,可供你在项目中使用。 2.Magic Animations CSS3 一组简单的动画,可以包含在你的网页或应用项目中。 3.An…...
第八部分:阶段项目 6:构建 React 前端应用
现在,是时候将你学到的 React 基础知识付诸实践,构建一个简单的前端应用来模拟与后端 API 的交互了。在这个阶段,你可以先使用模拟数据,或者如果你的后端 API(阶段项目 5)已经搭建好,可以直接连…...
归并排序:分治思想的高效排序
目录 基本原理 流程图解 实现方法 递归实现 非递归实现 演示过程 时间复杂度 基本原理 归并排序(Merge Sort)是一种基于分治思想的排序算法,由约翰冯诺伊曼在1945年提出。其核心思想包括: 分割(Divide):将待排序数组递归地分成两个子…...
VSCode 使用CMake 构建 Qt 5 窗口程序
首先,目录结构如下图: 运行效果: cmake -B build cmake --build build 运行: windeployqt.exe F:\testQt5\build\Debug\app.exe main.cpp #include "mainwindow.h"#include <QAppli...
