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的题目还有好几道,不过我当时比赛就只考了这道。另外几道题后续我再看要不要发吧

相关推荐
翼龙云_cloud1 小时前
阿里云渠道商:如何手动一键扩缩容ECS实例?
运维·服务器·阿里云·云计算
AKAMAI3 小时前
基准测试:Akamai云上的NVIDIA RTX Pro 6000 Blackwell
人工智能·云计算·测试
China_Yanhy6 小时前
AWS EKS三种类别,如何选择
云计算·aws
xybDIY7 小时前
亚马逊云 Organizations 组织 Link 账号关联与解绑自动化解决方案
运维·自动化·云计算·aws
倪某某7 小时前
阿里云无影GPU部署WAN2.2模型
阿里云·云计算
倪某某7 小时前
阿里云ECS GPU部署WAN2.2
人工智能·阿里云·云计算
小白考证进阶中10 小时前
阿里云ACA认证常见问题答疑
阿里云·大模型·云计算·阿里云aca证书·阿里云aca·aca认证·入门证书
可爱又迷人的反派角色“yang”11 小时前
k8s(四)
linux·网络·云原生·容器·kubernetes·云计算
可爱又迷人的反派角色“yang”11 小时前
k8s(二)
linux·运维·docker·云原生·容器·kubernetes·云计算
翼龙云_cloud12 小时前
阿里云渠道商:阿里云弹性伸缩有哪几种
服务器·阿里云·云计算