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 磁盘 节点
ceph1 192.168.100.11 额外一块20G空白磁盘 mon/osd节点
ceph2 192.168.100.12 额外一块20G空白磁盘 osd节点
ceph3 192.168.100.13 额外一块20G空白磁盘 osd节点

操作过程

准备工作

更改主机名
shell 复制代码
[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
shell 复制代码
#三个节点均关闭防火墙和Selinux
[root@ceph1/2/3 ~]# systemctl stop firewalld && systemctl disable firewalld
[root@ceph1 ~]# setenforce 0
配置YUM源仓库
shell 复制代码
#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
配置主机映射
shell 复制代码
#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
#操作同理
配置免密登录
shell 复制代码
#因为后续我们需要用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

shell 复制代码
#在此之前,我们先删掉主目录下的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_WARN
            mon 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 -s
  cluster:
    id:     23195c78-be62-4ad9-9269-b9c889c7ce99
    health: HEALTH_OK
#id和健康状况,HEALTH_OK表示集群运行正常,没有发现任何问题
  services:
    mon: 1 daemons, quorum ceph1 (age 7m)
    mgr: ceph1(active, since 4m), standbys: ceph2, ceph3
    osd: 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 pgs
    objects: 0 objects, 0 B
    usage:   3.0 GiB used, 57 GiB / 60 GiB avail
    pgs:     24 active+clean
#这是集群的数据信息,pools一行展示说明了这个集群有3个存储池和24个PG(Placement Group,是Ceph中数据分布和复制的基本单元)
#object一行则展示说明了当前集群中没有存储任何对象。
#usage一行则展示说明了当前集群的存储使用情况,用了3G,总共60G,还有57G能用
#pgs一行展示说明了PG的状态信息,当前有24个PG处于活跃(active)且干净(clean)的状态。(活跃表示PG正在处理数据,干净表示数据一致性检查没有发现问题,数据很完整)

后语

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

相关推荐
KIDULT°3 小时前
MySQL系列 (1):数据库原理
运维·数据库·mysql·云计算
yichengerp10 小时前
电子行业常用erp系统有哪些?推荐适合中小电子厂的易呈erp软件,操作简单,易落地
大数据·运维·人工智能·云计算·制造
做运维的阿瑞13 小时前
公有云算力布局的技术逻辑与工程实践
微服务·云计算·csdn开发云
朱包林14 小时前
iTerm2终端配置指南
linux·javascript·python·云原生·容器·kubernetes·云计算
酒神dnspup16 小时前
IPv6 网站访问异常怎么查?DNSPup 双栈检测、DNS 与端口排障指南
运维·云计算·域名·dns·dnspup
workflower1 天前
矿用机器人人工智能安全与治理体系
人工智能·安全·机器学习·机器人·云计算·无人机
怪奇云呼军1 天前
教育试听预约后没到课,闪电智能 Voice Agent 如何做分层回访?
人工智能·python·算法·云计算·音视频
yichengerp2 天前
国内中小电子工厂用哪个erp系统好?
大数据·运维·人工智能·云计算·制造
sbjdhjd2 天前
云安全 | 从特权容器到旧版 runC:Docker 宿主机访问与运行时缺陷复盘
运维·网络安全·docker·云原生·kubernetes·云计算·云安全
GPU实战笔记2 天前
项目网盘大文件上传:暂停与取消的事实边界
云计算·文件上传·项目网盘·gpu云服务器