当前位置: 首页 > news >正文

2024广东省职业技能大赛云计算赛项实战——Ceph集群部署

Ceph部署

前言

今年的比赛也是考了Ceph,题目是这道,往年国赛里翻到的:
使用提供的 ceph.tar.gz 软件包,安装 ceph 服务并完成初始化操作。使用提供的 ceph-14.2.22.tar.gz 软件包,在 OpenStack 平台上创建三台CentOS7.9 系统的云主机,使用这三个节点安装 ceph 服务并完成初始化操作,第一个节点为 mon/osd 节点,第二、三个节点为 osd 节点,部署完 ceph 后,创建 vms、images、volumes 三个 pool。

Ceph 是一个开源的分布式存储系统,提供高度可扩展、高性能和高可靠性的存储解决方案。它可以支持对象存储、块存储和文件系统等多种存储模式,因此广泛应用于云计算、虚拟化、大数据分析等领域。

虚拟机使用的是自行创建的CentOS7,如果你不会,那虚拟机创建的流程可以参考我这篇文章:职业技能大赛云计算赛项实战——OpenStack搭建-CSDN博客
使用镜像为CentOS-7-x86_64-DVD-2009.iso,可从阿里镜像站下载:https://mirrors.aliyun.com/centos/7/isos/x86_64/
需要用到的Ceph软件仓库:https://pan.baidu.com/s/1nIHFl4prft5clHxPRo2umw?pwd=ao80
提取码:ao80
这道题有不少坑,题目说的是使用ceph-14.2.22.tar.gz 软件包,但这个包里面没有ceph-common依赖需要的python-prettytable,CentOS7.9的系统源里也没有,所以是死胡同。但在比赛的http源里,我找到了一个CentOS7.5的系统源,它里面有python-prettytable,我靠指定这个源做出来了这道题。而在本地环境中,我选择了在源里找到的另一个ceph.tar.gz软件包来做这个实验,它里面直接就包含了python-prettytable的包。

节点规划如下
因为配置ceph osd节点需要空白磁盘,所以每台机子都需要有空白磁盘才行

主机名IP/24磁盘节点
ceph1192.168.100.11额外一块20G空白磁盘mon/osd节点
ceph2192.168.100.12额外一块20G空白磁盘osd节点
ceph3192.168.100.13额外一块20G空白磁盘osd节点

操作过程

准备工作

更改主机名
[root@localhost ~]# hostnamectl set-hostname ceph1
[root@localhost ~]# bash
[root@ceph1 ~]# [root@localhost ~]# hostnamectl set-hostname ceph2
[root@localhost ~]# bash
[root@ceph2 ~]# [root@localhost ~]# hostnamectl set-hostname ceph3
[root@localhost ~]# bash
[root@ceph3 ~]# 
关闭防火墙和Selinux
#三个节点均关闭防火墙和Selinux
[root@ceph1/2/3 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@ceph1 ~]# setenforce 0
配置YUM源仓库
#ceph1:
#先通过远程连接软件(SecureFX、XShell均可)把我提供的Ceph软件仓库上传至ceph1节点
[root@ceph1 ~]# ls
anaconda-ks.cfg  ceph.tar.gz
#将压缩包解压至opt目录
[root@ceph1 ~]# tar -zxf ceph.tar.gz -C /opt
#创建挂载Centos镜像的目录
[root@ceph1 ~]# mkdir /opt/centos
#挂载Centos系统镜像,这里省时间直接临时挂载了,麻烦在后续每次重启都要挂载一遍。我在这篇文章有讲到各个挂载方式的区别,有兴趣可以看一下:https://blog.csdn.net/kuuuugua/article/details/139547626
[root@ceph1 ~]# mount -o loop /dev/sr0 /opt/centos
#删除系统默认源
[root@ceph1 ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@ceph1 ~]# vi /etc/yum.repos.d/local.repo
[centos]
name=centos
baseurl=file:///opt/centos
enabled=1
gpgcheck=0
[ceph]
name=ceph
baseurl=file:///opt/ceph
enabled=1
gpgcheck=0
#检查可用性
[root@ceph1 ~]# yum clean all && yum repolist
...
源标识                               源名称                                状态
centos                               centos                                4,070
ceph                                 ceph                                    129
repolist: 4,199
#另外两台机子也配置本地源的话未免过于费时,我们在cpeh1安装ftp服务,让它们通过ftp服务使用ceph1的软件仓库
[root@ceph1 ~]# yum -y install vsftpd
...
Complete!
#修改ftp服务的配置文件,共享/opt目录
[root@ceph1 ~]# echo "anon_root=/opt" >> /etc/vsftpd/vsftpd.conf 
##启动ftp服务并设置开机自启
[root@ceph1 ~]# systemctl start vsftpd && systemctl enable vsftpd
...#ceph2/ceph3:
#删除系统默认源
[root@ceph2/3 ~]# rm -rf /etc/yum.repos.d/*
#创建新的仓库文件
[root@ceph2/3 ~]# vi /etc/yum.repos.d/local.repo 
[ceph]
name=redis
baseurl=ftp://192.168.100.11/ceph
enabled=1
gpgcheck=0
#检查可用性
[root@ceph2 ~]# yum clean all && yum repolist
...
源标识                                源名称                                状态
ceph                                  ceph                                 129
repolist: 129
配置主机映射
#ceph1:
#现在ceph1配置好主机映射
[root@ceph1 ~]# cat >> /etc/hosts << EOF
> 192.168.100.11 ceph1
> 192.168.100.12 ceph2
> 192.168.100.13 ceph3
> EOF
#然后通过scp命令将其发给另外两台机子
[root@ceph1 ~]# scp /etc/hosts root@ceph2:/etc/hosts
...
Are you sure you want to continue connecting (yes/no)? yes
...
root@ceph2's password: #输入对应主机的密码
[root@ceph1 ~]# scp /etc/hosts root@ceph3:/etc/hosts
#操作同理
配置免密登录
#因为后续我们需要用ceph-deploy管理工具频繁连接其他节点,所以需要配置免密登录
#ceph1:
#生成SSH密钥对
[root@ceph1 ~]# ssh-keygen
#一直回车就行
#复制公钥给其他主机
[root@ceph1 ~]# ssh-copy-id root@ceph1
...
Are you sure you want to continue connecting (yes/no)? yes
...
root@ceph1's password: #输入对应主机密码
[root@ceph1 ~]# ssh-copy-id root@ceph2
[root@ceph1 ~]# ssh-copy-id root@ceph3
#操作同理

安装配置Ceph

#在此之前,我们先删掉主目录下的ceph.tar.gz压缩包,否则后面我们输入yum -y install ceph-*命令时,系统会默认从当前目录下寻找可用的安装包安装,而ceph.tar.gz(不是rpm后缀)显然不是可用的安装包,就会报错
[root@ceph1 ~]# rm -rf ceph.tar.gz
#在ceph1节点安装ceph的所有组件(其中包括部署工具ceph-deploy)
[root@ceph1 ~]# yum -y install ceph-*
...
#切换至ceph目录,保证后续生成的文件在该目录下
[root@ceph1 ~]# cd /etc/ceph/
#创建部署配置文件
[root@ceph1 ceph]# ceph-deploy new ceph1
...
#给所有节点安装ceph软件包
[root@ceph1 ceph]# ceph-deploy install ceph1 ceph2 ceph3 --no-adjust-repos
#--no-adjust-repos 表示不调整软件包源
...
#创建监视器(Monitor)节点
[root@ceph1 ceph]# ceph-deploy mon create-initial
#使用ceph -s命令查看集群状态
[root@ceph1 ceph]# ceph -s
...health: HEALTH_WARNmon is allowing insecure global_id reclaim
#可以看到集群健康状态中显示mon节点允许回收不安全的全局唯一标识(global_id),我们把它禁用掉
[root@ceph1 ceph]# ceph config set mon auth_allow_insecure_global_id_reclaim false
[root@ceph1 ceph]# ceph -s
...health: HEALTH_OK
#给三个节点创建osd(对象存储设备)并添加进集群中
[root@ceph1 ceph]# ceph-deploy osd create --data /dev/sdb ceph1
[root@ceph1 ceph]# ceph-deploy osd create --data /dev/sdb ceph2
[root@ceph1 ceph]# ceph-deploy osd create --data /dev/sdb ceph3
#给三个节点创建mgr(管理器),让我们可以获取集群的管理信息和服务
[root@ceph1 ceph]# ceph-deploy mgr create ceph1 ceph2 ceph3
#分发admin密钥,免得后续使用ceph命令需要指定mon节点地址、admin密钥等
[root@ceph1 ceph]# ceph-deploy admin ceph1 ceph2 ceph3
...
#根据题目要求,创建创建vms、images、volumes三个pool
[root@ceph1 ceph]# ceph osd pool create vms 8
pool 'vms' created
[root@ceph1 ceph]# ceph osd pool create images 8
pool 'images' created
[root@ceph1 ceph]# ceph osd pool create volumes 8
pool 'volumes' created
#最后查看集群状态信息,确认无误
[root@ceph1 ceph]# ceph -scluster:id:     23195c78-be62-4ad9-9269-b9c889c7ce99health: HEALTH_OK
#id和健康状况,HEALTH_OK表示集群运行正常,没有发现任何问题services:mon: 1 daemons, quorum ceph1 (age 7m)mgr: ceph1(active, since 4m), standbys: ceph2, ceph3osd: 3 osds: 3 up (since 2m), 3 in (since 2m)
#各个节点的信息,mon一行说明了ceph1为mon监视器节点
#三个节点都是mgr管理器节点,其中ceph1正在活跃中,ceph2和ceph3在待命中,会在ceph1出问题时接替ceph1
#有三个osd对象存储设备,都在线并活跃中data:pools:   3 pools, 24 pgsobjects: 0 objects, 0 Busage:   3.0 GiB used, 57 GiB / 60 GiB availpgs:     24 active+clean
#这是集群的数据信息,pools一行展示说明了这个集群有3个存储池和24个PG(Placement Group,是Ceph中数据分布和复制的基本单元)
#object一行则展示说明了当前集群中没有存储任何对象。
#usage一行则展示说明了当前集群的存储使用情况,用了3G,总共60G,还有57G能用
#pgs一行展示说明了PG的状态信息,当前有24个PG处于活跃(active)且干净(clean)的状态。(活跃表示PG正在处理数据,干净表示数据一致性检查没有发现问题,数据很完整)

后语

比赛涉及Ceph的题目还有好几道,不过我当时比赛就只考了这道。另外几道题后续我再看要不要发吧

相关文章:

  • 微信小程序-scroll-view实现上拉加载和下拉刷新
  • 细说MCU定时器中断的实现方法
  • Java18新特性(极简)
  • 在Linux/Ubuntu/Debian中使用SSH连接远程服务器VPS
  • curl命令使用
  • 活出属于自己的人生
  • VScode基本使用
  • 使用 Netty 自定义解码器处理粘包和拆包问题详解
  • 【HiveSQL】join关联on和where的区别及效率对比
  • 【总线】AXI4第三课时:握手机制
  • 磁力搜索器,解读新一代的搜索引擎方式,磁力王、磁力猫等引擎的异同及原理
  • Java学习 (四) 面向对象--类与方法
  • 工业 UI 风格,展现独特魅力
  • 从零开始:使用ChatGPT快速创作引人入胜的博客内容
  • 前端安全——最新:lodash原型漏洞从发现到修复全过程
  • [case10]使用RSQL实现端到端的动态查询
  • 「前端早读君006」移动开发必备:那些玩转H5的小技巧
  • ComponentOne 2017 V2版本正式发布
  • HTTP传输编码增加了传输量,只为解决这一个问题 | 实用 HTTP
  • Java 实战开发之spring、logback配置及chrome开发神器(六)
  • Node + FFmpeg 实现Canvas动画导出视频
  • Selenium实战教程系列(二)---元素定位
  • SpriteKit 技巧之添加背景图片
  • Twitter赢在开放,三年创造奇迹
  • Windows Containers 大冒险: 容器网络
  • 从tcpdump抓包看TCP/IP协议
  • 扑朔迷离的属性和特性【彻底弄清】
  • 时间复杂度与空间复杂度分析
  • 使用Swoole加速Laravel(正式环境中)
  • 提醒我喝水chrome插件开发指南
  • 新书推荐|Windows黑客编程技术详解
  • ​LeetCode解法汇总2583. 二叉树中的第 K 大层和
  • (ISPRS,2021)具有遥感知识图谱的鲁棒深度对齐网络用于零样本和广义零样本遥感图像场景分类
  • (NO.00004)iOS实现打砖块游戏(九):游戏中小球与反弹棒的碰撞
  • (办公)springboot配置aop处理请求.
  • (六)库存超卖案例实战——使用mysql分布式锁解决“超卖”问题
  • (学习日记)2024.04.04:UCOSIII第三十二节:计数信号量实验
  • (终章)[图像识别]13.OpenCV案例 自定义训练集分类器物体检测
  • (转载)Linux 多线程条件变量同步
  • .mat 文件的加载与创建 矩阵变图像? ∈ Matlab 使用笔记
  • .NET Framework 3.5中序列化成JSON数据及JSON数据的反序列化,以及jQuery的调用JSON
  • .NET+WPF 桌面快速启动工具 GeekDesk
  • .NET8使用VS2022打包Docker镜像
  • .net反混淆脱壳工具de4dot的使用
  • .net连接oracle数据库
  • .NET中winform传递参数至Url并获得返回值或文件
  • @test注解_Spring 自定义注解你了解过吗?
  • @transactional 方法执行完再commit_当@Transactional遇到@CacheEvict,你的代码是不是有bug!...
  • @基于大模型的旅游路线推荐方案
  • [8] CUDA之向量点乘和矩阵乘法
  • [AIR] NativeExtension在IOS下的开发实例 --- IOS项目的创建 (一)
  • [Angular] 笔记 8:list/detail 页面以及@Input
  • [C#]winform基于opencvsharp结合Diffusion-Low-Light算法实现低光图像增强黑暗图片变亮变清晰
  • [C++]指针与结构体
  • [Day 63] 區塊鏈與人工智能的聯動應用:理論、技術與實踐