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

相关推荐
九河云4 小时前
AWS账号注册费用详解:新用户是否需要付费?
服务器·云计算·aws
神一样的老师4 小时前
利用亚马逊AWS IoT核心和MQTT进行数据采集的综合指南
云计算·aws
昔我往昔10 小时前
阿里云文本内容安全处理
安全·阿里云·云计算
写代码的学渣13 小时前
Linux云计算个人学习总结(一)
linux·运维·云计算
林农15 小时前
C02S11-Linux系统的安全与控制
linux·云计算
danns88818 小时前
什么是 AWS PrivateLink
云计算·aws
shiran小坚果21 小时前
AWS RDS MySQL内存使用
数据库·mysql·云计算·database·aws
武汉唯众智创1 天前
职业院校关于大数据、云计算和物联网传感器技术的结合与应用探讨
大数据·云计算·物联网传感器技术
小安运维日记1 天前
Linux云计算 |【第五阶段】CLOUD-DAY8
linux·运维·docker·云计算·k8s·学习方法