openEuler部署Ceph集群(块存储)
openEuler部署Ceph集群
- 1 目标
- 2 环境
- 2.1 服务器信息
- 2.2 软件信息
- 3 部署流程
- 3.1 获取系统镜像
- 3.2 创建虚拟机
- 3.3 配置虚拟机
- 3.3.1 配置互信
- 3.3.2 关闭防火墙
- 3.3.3 配置免密登录
- 3.3.4 配置NTP
- 3.3.4.1 安装NTP服务
- 3.3.4.2 配置NTP服务端
- 3.3.4.3 配置NTP客户端
- 3.3.4.4 启动NTP服务
- 3.3.5 配置epel源
- 3.3.5.1 挂载全量镜像
- 3.3.5.2 创建yum本地源和外部源
- 3.3.6 设置permissive模式
- 3.3.7 修改umask
- 3.3.8 配置Ceph镜像源
- 3.4 安装Ceph
- 3.4.1 安装Ceph软件
- 3.4.1.1 安装Ceph
- 3.4.1.2 安装ceph-deploy
- 3.4.1.3 查看Ceph版本
- 3.4.2 部署MON服务
- 3.4.3 部署MGR服务
- 3.4.4 部署OSD服务
- 3.5 验证环境
- 4 备注
1 目标
在openEuler操作系统上使用root用户搭建两节点Ceph集群,部署块存储,供学习研究使用。
2 环境
2.1 服务器信息
主机名 | IP | 磁盘 | 角色 |
---|---|---|---|
ceph-100 | 192.168.100.100 | /dev/sda, /dev/sdb, /dev/sdc | ceph-deploy,monitor,mgr,osd |
ceph-101 | 192.168.100.101 | /dev/sda, /dev/sdb, /dev/sdc | monitor,mgr,osd |
[root@ceph-100 ~]# cat /etc/os-release
NAME="openEuler"
VERSION="20.03 (LTS-SP1)"
ID="openEuler"
VERSION_ID="20.03"
PRETTY_NAME="openEuler 20.03 (LTS-SP2)"
ANSI_COLOR="0;31"
2.2 软件信息
[root@ceph-100 ~]# ceph -v
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
[root@ceph-100~]# ceph-deploy --version
2.0.1
3 部署流程
3.1 获取系统镜像
经过验证,推荐使用清华源来获取特定版本的ISO镜像。本示例将按照前述章节2.1下载Euler 20.3 SP1镜像.
# 下载常规镜像,供KVM安装部署虚拟机ceph-100, ceph-101
[root@node1 ~] wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS-SP1/ISO/aarch64/openEuler-20.03-LTS-SP1-aarch64-dvd.iso
# 下载同样版本的全量镜像,供执行Ceph本地安装部署 -- 因euler源较少、下载缓慢且不稳定故强烈推荐本地安装
[root@node1 ~] wget https://mirrors.tuna.tsinghua.edu.cn/openeuler/openEuler-20.03-LTS-SP1/ISO/aarch64/openEuler-20.03-LTS-SP1-everything-aarch64-dvd.iso
3.2 创建虚拟机
准备两个虚拟机(具体步骤请参考其他博客),虚拟机需要拥有三个磁盘(建议均大于50GB)。本文示例在物理服务器node1上利用KVM创建虚拟机ceph-100和ceph-101,其配置相同,细节信息参考ceph-100:
[root@node1 ~]# virsh dominfo ceph_100
Id: 28
Name: ceph_219
UUID: 0ad711e1-5d28-4599-8ec8-3409a568b456
OS Type: hvm
State: running
CPU(s): 4
CPU time: 67697.8s
Max memory: 8,388,608 KiB
Used memory: 8,388,608 KiB
Persistent: yes
Autostart: disable
Managed save: no
Security model: none
Security DOI: 0[root@node1 ~]# virsh domblklist ceph_100Target Source
-------------------------------------------------------------------sda /data4/wurz/ceph_100/ceph_100.qcow2sdb /data4/wurz/ceph_100/ceph_100_01.qcow2sdc /data4/wurz/ceph_100/ceph_100_02.qcow2sdd -
3.3 配置虚拟机
3.3.1 配置互信
参照章节2.1对两个虚拟机ceph-100, ceph-101配置永久主机名。
[root@ceph-100~]# hostnamectl --static set-hostname ceph-100[root@ceph-101~]# hostnamectl --static set-hostname ceph-101[root@ceph-101~]# cat /etc/hosts
192.168.100.100 ceph-100
192.168.100.101 ceph-101[root@ceph-101~]# cat /etc/hosts
192.168.100.100 ceph-100
192.168.100.101 ceph-101
3.3.2 关闭防火墙
在虚拟机ceph-100, ceph-101执行如下指令,关闭防火墙。
systemctl stop firewalld
systemctl disable firewalld
systemctl status firewalld
3.3.3 配置免密登录
在管理节点ceph-100上执行如下指令生成密钥,并拷贝至ceph-101。
# 针对该交互指令一直使用默认配置即可
[root@ceph-100~]# ssh-keygen -t rsa# 从管理节点ceph-100复制密钥到其他节点,可能需要输入密码(虚拟机root用户密码)
[root@ceph-100~]# ssh-copy-id ceph@ceph-100
[root@ceph-100~]# ssh-copy-id ceph@ceph-101
3.3.4 配置NTP
因Ceph集群会自动校验存储节点间的时间,为了避免因时间差异而导致告警,此处需要针对每个节点配置NTP服务。
3.3.4.1 安装NTP服务
每个节点均需配置。
# 安装NTP服务
yum -y install ntp ntpdate# 备份旧配置
cd /etc && mv ntp.conf ntp.conf.bk
3.3.4.2 配置NTP服务端
以管理节点ceph-100作为NTP的服务端,进行如下配置
[root@ceph-100~]# cat /etc/ntp.conf
restrict 127.0.0.1
restrict ::1
restrict 192.168.100.0 mask 255.255.255.0
server 127.127.1.0
fudge 127.127.1.0 stratum 8
备注:restrict 192.168.100.0 为ceph-100的网段, mask 255.255.255.0为ceph-100的掩码。
3.3.4.3 配置NTP客户端
NTP客户端的配置文件/etc/ntp.conf中需要增加NTP服务端的IP信息。
[root@ceph-101~]# cat /etc/ntp.conf
server 192.168.100.100
3.3.4.4 启动NTP服务
每个节点均需启动NTP服务。
systemctl start ntpd
systemctl enable ntpd
systemctl status ntpd
在管理节点ceph-100之外的所有节点上执行如下指令:
# 强制当前节点同步NTP服务端ceph-100的时间
ntpdate ceph-100# 当前节点写入硬件时钟,避免重启失效
hwclock -w# 设置定时任务,每隔10分钟与NTP服务端ceph-100同步时间
yum install -y crontabs
chkconfig crond on
systemctl start crond
crontab -e# crontab新增如下内容
*/10 * * * * /usr/sbin/ntpdate 192.168.3.166
3.3.5 配置epel源
Euler系统epel源配置相对繁杂,请务必确保正确配置,否则会导致yum无法下载依赖问题。需要注意的是,经过实践证明,即便该epel源配置正确,下载资源时候依然会受到资源存在性以及稳定性的限制而导致失败。此时可以考虑从前文提到的全量镜像(-everything-.iso)使用yum install执行部分软件的安装。
3.3.5.1 挂载全量镜像
请参考下述流程在每个节点进行配置。
# 创建全量镜像挂载点 -- 此时需要注意系统盘容量,全量进项大小一般接近20GB,这也是文档开始要求每个磁盘均不小于50GB的原因之一
mkdir -p /iso
mount /root/openEuler-***-everything-aarch64-dvd.iso /iso
3.3.5.2 创建yum本地源和外部源
vi /etc/yum.repos.d/openEuler.repo
# 增加下述两部分内容
[Base]
name=Base
baseurl=file:///iso
enabled=1
gpgcheck=0
priority=1[arch_fedora_online]
name=arch_fedora
baseurl=https://mirrors.huaweicloud.com/fedora/releases/34/Everything/aarch64/os/
enabled=1
gpgcheck=0
priority=2
3.3.6 设置permissive模式
# 设置立即生效,但是重启会失效
setenforce permissive# 设置永久生效
vi /etc/selinux/config
# 修改SELINUX=permissive
[root@ceph-219 ~]# cat /etc/selinux/config
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
3.3.7 修改umask
所有节点均需修改。因openEuler系统安全性很高,需要修改umask为0022才能正常部署Ceph。
vi /etc/bashrc
将最后一行修改/新增为“umask 0022”。
# 刷新配置生效
source /etc/bashrc
# 验证是否生效
umask
# 输出 0022则表明已生效
3.3.8 配置Ceph镜像源
所有节点均需配置。
vi /etc/yum.repos.d/ceph.repo
# 增加如下内容
[Ceph]
name=Ceph packages for $basearch
baseurl=http://download.ceph.com/rpm-nautilus/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1[Ceph-noarch]
name=Ceph noarch packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1[ceph-source]
name=Ceph source packages
baseurl=http://download.ceph.com/rpm-nautilus/el7/SRPMS
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1# 更新yum源
yum clean all && yum makecache
务必确保该步骤成功,一旦失败则需要先解决该问题。
3.4 安装Ceph
3.4.1 安装Ceph软件
3.4.1.1 安装Ceph
所有节点均需安装。
dnf -y install librados2-14.2.10 ceph-14.2.10
pip install prettytable
经过实践证明Ceph 14.2.10极有可能失败,将会提供本地安装Ceph 12.2.8版本,请看下述信息:
3.4.1.2 安装ceph-deploy
仅管理节点ceph-100需要安装,后续服务部署依赖此软件。
[root@ceph-100~]# pip install ceph-deploy
# 备注:该步骤可能因网络问题而失败,一旦失败请尝试其他办法# 修改配置,增加 'openeuler': fedora, 使得ceph-deploy适配openEuler系统
[root@ceph-100~]# vi /lib/python2.7/site-packages/ceph_deploy/hosts/__init__.py
3.4.1.3 查看Ceph版本
ceph -v
ceph version 12.2.8 (ae699615bac534ea496ee965ac6192cb7e0e07c0) luminous (stable)
3.4.2 部署MON服务
仅需在管理节点ceph-100执行。
# 创建集群
[root@ceph-100~]# cd /etc/ceph
[root@ceph-100 ceph]# ceph-deploy new ceph-100 ceph-101# 修改ceph.conf配置
[root@ceph-100 ceph]# cat /etc/ceph/ceph.conf
[global]
fsid = 7dea53e4-4760-4207-925c-e895720d667a
mon_initial_members = ceph-100, ceph-101
mon_host = 192.168.122.100,192.168.122.101
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephxpublic_network = 192.168.100.0/24
cluster_network = 192.168.100.0/24[mon]
mon_allow_pool_delete = true# 初始化MON服务
[root@ceph-100 ceph]# ceph-deploy mon create-initial
# 将“ceph.client.admin.keyring”拷贝到各个节点上
[root@ceph-100 ceph]# ceph-deploy --overwrite-conf admin ceph-100 ceph-101# 校验是否配置成功
[root@ceph-100 ceph]# ceph -s
cluster:
id: 7dea53e4-4760-4207-925c-e895720d667a
health: HEALTH_OKservices:
mon: 2 daemons, quorum ceph1,ceph2 (age 1h)
3.4.3 部署MGR服务
仅需在管理节点ceph-100执行。
ceph-deploy mgr create ceph1 ceph2 ceph3# 验证是否部署成功
ceph -s
cluster:
id: 7dea53e4-4760-4207-925c-e895720d667a
health: HEALTH_OKservices:
mon: 2 daemons, quorum ceph-100,ceph-101 (age 1h)
mgr: ceph-100(active, since 1d), standbys: ceph-101
3.4.4 部署OSD服务
仅需在管理节点ceph-100执行。
3.5 验证环境
4 备注
相关文章:

openEuler部署Ceph集群(块存储)
openEuler部署Ceph集群1 目标2 环境2.1 服务器信息2.2 软件信息3 部署流程3.1 获取系统镜像3.2 创建虚拟机3.3 配置虚拟机3.3.1 配置互信3.3.2 关闭防火墙3.3.3 配置免密登录3.3.4 配置NTP3.3.4.1 安装NTP服务3.3.4.2 配置NTP服务端3.3.4.3 配置NTP客户端3.3.4.4 启动NTP服务3.…...

npm install vue2-ace-editor 安装报错
npm install vue2-ace-editor 安装报错,如下图 目录 npm install vue2-ace-editor 安装报错,如下图 🧨🧨🧨解决方法:在命令后面加上 神秘代码 npm install vue2-ace-editor --save --legacy-peer-deps &a…...

【PyQt5图形界面编程(2)】:创建工程
创建工程 一、创建工程二、开始开发1、运行Qt5Designer,创建QT窗口2、运行pyUIC,转换xx.ui成xx.py3、main.py中引用xx.py中的类4、打包main.py成main.exe来发布5、执行终端报警处理方法三、其他(如果涉及)1、配置环境变量一、创建工程 采用虚拟环境来创建工程 相关的paka…...
ansible实战应用系列教程9:管理inclusions
ansbile实战应用系列教程8:管理inclusions InclusionsIncluding TasksIncluding VariablesInclusions 当处理复杂或冗长的剧本时,管理员可以使用单独的文件将任务和变量列表划分为更小的部分,以便于管理。在playbook中引入外部任务文件和变量有多种方法。 方法一:tasks使用…...

MyBatis学习笔记(五) —— MyBatis获取参数值的两种方式
5、MyBatis获取参数值的两种方式 MyBatis获取参数值的两种方式:${} 和 #{} ${} 的本质就是字符串拼接, #{} 的本质就是占位符赋值 ${} 使用字符串拼接的方式拼接sql,若为字符串类型或日期类型的字段进行赋值时,需要手动加单引号&a…...

go module构建项目
在go 1.11版本中引入了Go Module内置的包管理模块,是GOPATH的替代品,集成了版本控制和软件包分发支持的功能。即go使用modules管理依赖,项目依赖构建时不需要再依赖GOPATH环境变量。 要使用go module首先要激活modules .升级go到1.11版本 .这…...
已经准备上千道软件测试面试题了,建议大家收藏!!!还有视频详解!
2023华为软件测试笔试面试真题,抓紧收藏不然就看不到了_测试小鬼的博客-CSDN博客_华为软件测试工程师面试题1、对计算机软件和硬件资源进行管理和控制的软件是(D)A.文件管理程序B.输入输出管理程序C.命令出来程序D.操作系统2、在没有需求文档…...

C++设计模式(19)——访问者模式
亦称: Visitor 意图 访问者模式是一种行为设计模式, 它能将算法与其所作用的对象隔离开来。 问题 假如你的团队开发了一款能够使用巨型图像中地理信息的应用程序。 图像中的每个节点既能代表复杂实体 (例如一座城市)…...

ChatGPT 的工作原理:机器人背后的模型
这篇对支持 ChatGPT 的机器学习模型的温和介绍,将从大型语言模型的介绍开始,深入探讨使 GPT-3 得到训练的革命性自我注意机制,然后深入研究人类反馈的强化学习,使 ChatGPT 与众不同的新技术。 大型语言模型 ChatGPT 是一类被称…...

FreeRTOS入门(04):中断、内存、追踪与调试
文章目录目的中断内存堆(heap)栈(stack)断言调试总结目的 有了前面的几篇文章 FreeRTOS 基本上已经可以在项目中使用上了: 《FreeRTOS入门(01):基础说明与使用演示》 《FreeRTOS入门…...

【C语言】带你彻底理解指针(1)
✨✨✨✨如果文章对你有帮助记得点赞收藏关注哦!!✨✨✨✨ 文章目录指针的介绍:一、简单指针🌈1.1 指针的定义与使用1.2 指针与数组二、指针数组✨三、数组指针🌞3.1 数组指针的定义3.2 ”数组名“与”&数组名“3.…...
C/C++ 中 JSON 库的使用 (CJSON/nlohmann)
C/C 中 JSON 库的使用 (CJSON/nlohmann)概述cjson基本操作从(字符指针)缓冲区中解析出JSON结构转成成JS字符串(将传入的JSON结构转化为字符串)将JSON结构所占用的数据空间释放JSON 值的创建创建一个值类型的数据创建一个对象(文档)…...

【Opencv项目实战】目标检测:自动检测出现的所有动态目标
文章目录一、项目思路二、算法详解2.1、计算两个数组或数组与标量之间的每个元素的绝对差。2.2、轮廓检测 绘制物体轮廓 绘制矩阵轮廓2.3、连续窗口显示2.4、读取视频,显示视频,保存视频三、项目实战:实时动态目标检测实时动态目标检测一、…...

活动报名:Tapdata Cloud V3 最新功能全解与核心应用场景演示
作为中国的 “Fivetran/Airbyte”, Tapdata Cloud 自初版公测以来,已累积10,000 注册用户。核心场景包括 Any Source → Any Target 的实时数据库同步、数据入湖入仓,以及通用 ETL 处理等。近期,功能特性全面优化的 Tapdata Cloud V3 也已开放…...

人工智能AI威武,爱也……恨也……
人工智能AI威武,爱也!恨也!!它会创作会代码,从它那儿能仿到更好的思维;多它那里可以学到更好的代码。它聪慧全能,成为一坨人偷懒神器;变成“智者”作弊的“倚天屠龙”!&a…...

SpringBoot-基础篇
SpringBoot基础篇 在基础篇中,我给学习者的定位是先上手,能够使用SpringBoot搭建基于SpringBoot的web项目开发,所以内容设置较少,主要包含如下内容: SpringBoot快速入门SpringBoot基础配置基于SpringBoot整合SSMP…...

Tapdata Connector 实用指南:实时数仓场景之数据实时同步至 ClickHouse
【前言】作为中国的 “Fivetran/Airbyte”, Tapdata 是一个以低延迟数据移动为核心优势构建的现代数据平台,内置 60 数据连接器,拥有稳定的实时采集和传输能力、秒级响应的数据实时计算能力、稳定易用的数据实时服务能力,以及低代码可视化操作…...

刷题专练之数组移除元素
文章目录前言一、移除元素1.题目介绍2.思路:3.代码二、移动零1.题目介绍2.思路3.代码三、删除有序数组中的重复项1.题目介绍2.思想3.代码四、80. 删除有序数组中的重复项 II1.题目介绍2.思路3.代码4.推荐题解前言 我每个刷题篇的题目顺序都是特别安排的,…...

常见激活函数Activation Function的选择
Activation Function激活函数一般会神经网络中隐层和输出层上,其中作用在输出层主要用于适配输出,比如sigmoid函数可用于生成[0,1]之间的概率估计值。而作用于隐层主要用于增加神经网络的非线性,增加了网络的表达能力,本文主要介绍…...

大厂跟进ChatGPT,为什么百度“文心一言”成色最好?【快评】
作者 | 曾响铃 文 | 响铃说 赶ChatGPT热度,百度3月初就要发布与ChatGPT类似的人工智能聊天机器人服务“文心一言”(英文名:ERNIE Bot),似乎无法提振资本市场对百度的信心。 2022年第四季度及全年未经审计的财报发布…...

使用docker在3台服务器上搭建基于redis 6.x的一主两从三台均是哨兵模式
一、环境及版本说明 如果服务器已经安装了docker,则忽略此步骤,如果没有安装,则可以按照一下方式安装: 1. 在线安装(有互联网环境): 请看我这篇文章 传送阵>> 点我查看 2. 离线安装(内网环境):请看我这篇文章 传送阵>> 点我查看 说明:假设每台服务器已…...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...

中南大学无人机智能体的全面评估!BEDI:用于评估无人机上具身智能体的综合性基准测试
作者:Mingning Guo, Mengwei Wu, Jiarun He, Shaoxian Li, Haifeng Li, Chao Tao单位:中南大学地球科学与信息物理学院论文标题:BEDI: A Comprehensive Benchmark for Evaluating Embodied Agents on UAVs论文链接:https://arxiv.…...
线程与协程
1. 线程与协程 1.1. “函数调用级别”的切换、上下文切换 1. 函数调用级别的切换 “函数调用级别的切换”是指:像函数调用/返回一样轻量地完成任务切换。 举例说明: 当你在程序中写一个函数调用: funcA() 然后 funcA 执行完后返回&…...
【C语言练习】080. 使用C语言实现简单的数据库操作
080. 使用C语言实现简单的数据库操作 080. 使用C语言实现简单的数据库操作使用原生APIODBC接口第三方库ORM框架文件模拟1. 安装SQLite2. 示例代码:使用SQLite创建数据库、表和插入数据3. 编译和运行4. 示例运行输出:5. 注意事项6. 总结080. 使用C语言实现简单的数据库操作 在…...

NFT模式:数字资产确权与链游经济系统构建
NFT模式:数字资产确权与链游经济系统构建 ——从技术架构到可持续生态的范式革命 一、确权技术革新:构建可信数字资产基石 1. 区块链底层架构的进化 跨链互操作协议:基于LayerZero协议实现以太坊、Solana等公链资产互通,通过零知…...

Linux --进程控制
本文从以下五个方面来初步认识进程控制: 目录 进程创建 进程终止 进程等待 进程替换 模拟实现一个微型shell 进程创建 在Linux系统中我们可以在一个进程使用系统调用fork()来创建子进程,创建出来的进程就是子进程,原来的进程为父进程。…...
鸿蒙DevEco Studio HarmonyOS 5跑酷小游戏实现指南
1. 项目概述 本跑酷小游戏基于鸿蒙HarmonyOS 5开发,使用DevEco Studio作为开发工具,采用Java语言实现,包含角色控制、障碍物生成和分数计算系统。 2. 项目结构 /src/main/java/com/example/runner/├── MainAbilitySlice.java // 主界…...
rnn判断string中第一次出现a的下标
# coding:utf8 import torch import torch.nn as nn import numpy as np import random import json""" 基于pytorch的网络编写 实现一个RNN网络完成多分类任务 判断字符 a 第一次出现在字符串中的位置 """class TorchModel(nn.Module):def __in…...

代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...