Centos7.9离线部署ceph(octopus)

news/2025/1/14 20:02:55/文章来源:https://www.cnblogs.com/Pigs-Will-Fly/p/18671388

说明

文档适用于cenots7.9操作系统下部署ceph octopus版本分布式存储使用。

离线部署的本质是先基于在线环境如vmware workstation虚拟机在线完整的部署一次,以获取部署所需的软件包。

文档可用于在线部署,亦可用于离线部署。

离线部署关键点(注意文章中部署描述):

  • 准备好所需的rpm包
  • 准备好所需的docker镜像
  • 修改cephadm代码

一、环境说明


1.1 Ceph软件架构

 

 关键组件释义:

  

1.2 服务器规划

3台虚拟机,每台主机两个网段。管理和业务网络分离部署,3个监控节点。20GB磁盘安装操作系统、40G规格磁盘裸盘配置osd。

1.3 软件清单

Vmware+centos7+docker+ceph

1.4 部署步骤

①、配置基础环境

  1. 关闭操作系统安全软件
  2. 设置ip地址
  3. 设置ntp
  4. 设置主机名和hosts解析
  5. 禁用swap
  6. 配置免密登录
  7. 配置yum源
  8. 安装依赖软件

②、ceph软件部署

  1. 配置cephadm
  2. 初始化ceph集群
  3. 添加集群节点
  4. 设置mon节点
  5. 部署osd
  6. 部署mds
  7. 部署rgw

二、基础环境部署

2.1  关闭安全软件

所有节点均需配置。

##关闭firewalld防火墙
# systemctl stop firewalld 
# systemctl disable firewalld
# systemctl mask firewalld ##关闭selinux
# setenforce 0
# sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

2.2 设置ip地址

所有节点均需配置。

##删除当前存在的配置
# nmcli conn delete ens33;nmcli conn delete ens36 
##创建新IP地址配置文件ens33
# nmcli conn add type ethernet  ifname ens33 con-name ens33 connection.autoconnect yes ipv4.method manual  ipv4.gateway "192.168.10.2"  ipv4.dns "192.168.10.2" ipv4.addresses  "192.168.10.100/24"
##创建新IP地址配置文件ens36
# nmcli conn add type ethernet  ifname ens36 con-name ens36 connection.autoconnect yes ipv4.method manual ipv4.addresses  "192.168.20.100/24"
##手动down,up网卡配置。
# nmcli conn down ens33;nmcli conn down ens33;nmcli conn up ens33;nmcli conn up ens33

2.3  构建ntp服务器(选配)

如果环境中有可用的ntp服务器该步骤可省略,在节点中任选一台机器配置ntp服务器(只在某一台上面操作)

##编辑/etc/chrony.conf配置文件,允许节点网段访问。
# vim /etc/chrony.confserver 192.168.20.100 iburstallow 192.168.20.0/24local stratum 10
# systemctl restart chronyd
# systemctl enable  chronyd
##查看时间是否同步
# chronyc sources

2.4 节点配置ntp

所有节点均需配置。可以使用已有的ntp服务器,也可以使用上一步创建的ntp服务器。

##每个节点均需要配置
# vim /etc/chrony.confserver 192.168.20.100 iburst
# systemctl restart chronyd
# systemctl enable  chronyd
##查看时间是否同步
# chronyc sources

2.5  配置主机名和hosts解析

所有节点均需配置。

##配置主机名,每个节点均需要配置,红色字体部分按照实际环境替换。
# hostnamectl set-hostname  ceph01##每个节点均需要配置,添加蓝色字体内容
# cat /etc/hosts192.168.10.100 ceph01192.168.10.101 ceph02192.168.10.102 ceph03192.168.20.100 ceph01192.168.20.101 ceph02192.168.20.102 ceph03

2.6  禁用swap

所有节点均需配置。

##每个节点均需要配置,sed修改后确保/etc/fstab文件中没有swap相关行。
# swapoff  -a
# sed -i '/swap/d'  /etc/fstab

2.7 配置免密登录

主节点上操作即可。

##生成密钥,传到其他节点上。
# ssh-keygen -f /root/.ssh/id_rsa -P ''
# ssh-copy-id -o StrictHostKeyChecking=no 192.168.10.100
# ssh-copy-id -o StrictHostKeyChecking=no 192.168.10.101
# ssh-copy-id -o StrictHostKeyChecking=no 192.168.10.102

2.8 配置yum源

所有节点均需配置。

阿里云线上centos7yum源,/etc/yum.repos.d/alibase.repo。

[base]
name=CentOS-$releasever – Base – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/os/$basearch/
gpgcheck=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#released updates
[updates]
name=CentOS-$releasever – Updates – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/updates/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

#additional packages that may be useful
[extras]
name=CentOS-$releasever – Extras – mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/$releasever/extras/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
View Code

清华大学octopus版本ceph yum源,/etc/yum.repos.d/qhceph.repo。

[ceph]
name=ceph
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/x86_64/
enabled=1
gpgcheck=0[Ceph-noarch]
name=Ceph noarch
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/noarch/
enabled=1
gpgcheck=0[Ceph-source]
name=Ceph SRPMS
baseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/SRPMS/
enabled=1
gpgcheck=0
View Code

阿里云线上docker-ce yum源,/etc/yum.repos.d/alidocker-ce.repo。

[docker-ce-stable]
name=Docker CE Stable – $basearch
baseurl=https://mirrors.aliyun.com/docker-ce/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://mirrors.aliyun.com/docker-ce/linux/centos/gpgbaseurl=https://mirrors.tuna.tsinghua.edu.cn/ceph/rpm-octopus/el7/SRPMS/
enabled=1
gpgcheck=0
View Code

阿里云线上cetos7 扩展yum源,/etc/yum.repos.d/alicetos-epel.repo。

[epel]
name=Extra Packages for Enterprise Linux 7 – $basearch
baseurl=http://mirrors.aliyun.com/epel/7/$basearch
#mirrorlist=https://mirrors.fedoraproject.org/metalink?repo=epel-7&arch=$basearch
failovermethod=priority
enabled=1
gpgcheck=0
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-EPEL-7
View Code

阿里云线上cetos7 k8syum源,/etc/yum.repos.d/alik8s.repo。

[kubernetes]
name=Kubernetes
baseurl=https://mirrors.aliyun.com/kubernetes/yum/repos/kubernetes-el7-x86_64/
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://mirrors.aliyun.com/kubernetes/yum/doc/yum-key.gpg https://mirrors.aliyun.com/kubernetes/yum/doc/rpm-package-key.gpg
View Code

yum源配置完成过后,执行以下命令。

##刷新yum源仓库,载入yum源
# yum clean all
# yum repolist

2.9  安装依赖软件

所有节点均需配置。

##安装必要的依赖软件。
# yum install -y python3  yum-utils  docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin python3-ceph-common python3-ceph-argparse ceph-common 
##配置docker-ce软件
# cat > /etc/docker/daemon.json <<EOF
{
"registry-mirrors": ["https://sdmy9bft.mirror.aliyuncs.com"],
"exec-opts": ["native.cgroupdriver=systemd"]
}
EOF
# systemctl daemon-reload;systemctl enable docker  --now
# systemctl status  docker

 

(以下操作如离线安装必须操作:离线部署软件包获取开始)

如果需要离线安装需要同步保存下载的软件的包。在线安装软件时加上如下命令即可。

yum -y install --downloadonly --downloaddir /soft

##只下载软件包不安装。
# mkdir -p /soft
# yum install  --downloadonly --downloaddir /soft  yum-utils  docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin python3-ceph-common python3-ceph-argparse ceph-common createrepo
##查看包是否下载成功
# ls /soft##以/soft文件夹内文件创建yum仓库文件
# cd /soft
# createrepo  .
# cd /
# tar -zcvf ceph_rpm.tar.gz /soft

(离线部署软件包获取完成)

 

三、ceph部署

3.1 配置cephadm软件

其中用来安装配置的机器上执行即可,文章中在第一个节点中执行。(重点注意红色字体描述)

##下载cephadm软件
# curl --silent --remote-name --location https://github.com/ceph/ceph/raw/octopus/src/cephadm/cephadm 
##添加cephadm可执行权限
# chmod +x cephadm ##离线部署时需要手动修改cephadm工具中的内容,将里面的 command_pull 函数里面 cmd 数组中的 'pull' 改为了 'images'
cmd = [container_path, 'pull', image]
cmd = [container_path, ' images', image]

3.2 初始化ceph集群

其中用来安装配置的机器上执行即可,文章中在第一个节点中执行。

##为ceph创建一个配置文件夹
# mkdir -p /etc/ceph
##初始化ceph集群
# ./cephadm bootstrap --mon-ip 192.168.10.100  

3.3 集群添加节点

其中用来安装配置的机器上执行即可,文章中在第一个节点中执行。

##添加公钥到新主机
# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph02
# ssh-copy-id -f -i /etc/ceph/ceph.pub ceph03
##添加节点到集群
# ceph orch host add ceph02
# ceph orch host add ceph03
##查看集群节点
# ceph orch host ls

3.4 设置mon节点

其中用来安装配置的机器上执行即可,mon节点必须为单数。

##配置mon网段
# ceph config set mon public_network 192.168.20.0/24
##调整mon数量为3个
# ceph orch apply mon 3
##设置调度mon到三个制定的节点上
# ceph orch apply mon "ceph01,ceph02,ceph03"
##查看集群状态
# ceph -s
##查看确认主机标签
# ceph orch host ls

3.5 部署OSD

其中用来安装配置的机器上执行即可。

##查看osd磁盘信息
# ceph orch device ls##使用节点上所有未使用的磁盘部署OSD
# ceph orch apply osd --all-available-devices
##在特定节点制定特定的磁盘部署OSD
# ceph orch daemon add osd ceph01:/dev/sdb
##查看osd磁盘信息
# ceph orch device ls
##查看集群整体状态
# ceph -s

3.6 部署MDS

其中用来安装配置的机器上执行即可。MDS是ceph文件存储接口,如果确认不使用NAS文件系统,可不安装MDS。

##创建一个pool存储nas数据文件
# ceph osd pool create cephfs_data 64 64
##创建一个pool存储nas元数据文件
# ceph osd pool create cephfs_metadata 64 64
##创建一个 CephFS, 制定元数据和数据的存储pool
# ceph fs new cephfs cephfs_metadata cephfs_data
##启用mds
# ceph orch apply mds cephfs --placement="3 ceph01 ceph02 ceph03"
Scheduled mds.cephfs update...
##查看cephfs状态
# ceph fs status cephfs

3.7 部署RGW

RGW是Ceph对象存储网关服务RADOS Gateway的简称,基于LIBRADOS接口封装而实现的FastCGI服务,对外提供RESTful风格的对象存储数据访问和管理接口。

# ceph orch apply rgw myorg cn-east-1 --placement="3 ceph01 ceph02 ceph03"

3.8  打包docker镜像

这一步很关键,由于网络的问题,需要等以上步骤完成过后,集群状态HEALTH_OK后再进行镜像打包。

##确认集群状态为HEALTH_OK状态。health: HEALTH_OK
# cephs -s
##查看当前docker下镜像信息
# docker images
# docker save -o ceph_docker_images.tar.gz   quay.io/ceph/ceph:v15  quay.io/ceph/ceph-grafana:6.7.4  quay.io/prometheus/prometheus:v2.18.1  quay.io/prometheus/alertmanager:v0.20.0  quay.io/prometheus/node-exporter:v0.18.1

 

四、离线部署注意事项(很重要)

4.1 文件保存

把 2.9章节保存的 ceph_rpm.tar.gz 文件、3.1章节修改的cephadm文件、3.8保存的ceph_docker_images.tar.gz文件都从机器上下载下来。

4.2  文件使用

yum配置:离线部署时,主机的yum源配置ceph_rpm.tar.gz解压过后的路径即可。如解压到/ceph_data/下,yum配置文件中的baseurl=file:///ceph_data/soft/

docker镜像:2.9章节执行完成过后,使用 docker load -i ceph_docker_images.tar.gz 命令导入镜像到docker软件中。

cephadm:离线环境中3.1章节的curl下载软件命令不用执行,使用在保存的已修改完成的cephadm文件即可。

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/869221.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于CVE-2024-9047的分析

1 漏洞成因本文的分析基于 wp-file-upload.4.24.11。在wfu_file_downloader.php中存在可控变量$filepath,能够读取文件。漏洞代码如下所示:if ( $fd = wfu_fopen_for_downloader($filepath, "rb") ) {$open_session = ( ( $wfu_user_state_handler == "sessio…

华尔街日报无需登录查看不可查看内容

使用第三方接口来为当前页面提供服务的脚本,简单编写,使用应用程序接口调用保存页面实现永久存储及达到阅读某街日报内容(接口无需加速)对于那些可能很快变化的网页,这个脚本会非常有用。本站保存的网页不包含脚本和动态对象,所以是安全的,不会有弹窗或其他恶意程序。 油…

学习进度笔记⑧

Spark SQL基本操作 将下列 JSON 格式数据复制到 Linux 系统中,并保存命名为 employee.json。 { "id":1 , "name":" Ella" , "age":36 } { "id":2, "name":"Bob","age":29 } { "id"…

基于大数据分析的智能交通灯管理系统

在智慧交通领域,交通灯管理系统是城市交通流控制的核心。随着大数据技术的发展,基于大数据分析的智能交通灯管理系统正逐渐成为改善城市交通状况、提升道路使用效率的关键技术。今天,我们将深入探讨这一系统的建设内容,共同展望智慧交通的未来。系统概述基于大数据分析的智…

Shell程序设计语言

Shell程序设计语言 一、认识Shell 1.1 编程语言的种类 # 机器语言:站在计算机(奴隶)的角度,说计算机能听懂的语言,那就是直接用二进制编程,直接操作硬件;优点:执行效率最高缺点:1、二进制指令难以记忆,开发时极容易出错2、开发程序的复杂度高:即便是完成一个简单的功能…

logstash输出到loki

运行logstash # logstash version: 3 services:logstash:image: docker.elastic.co/logstash/logstash:8.12.0container_name: logstash_serverrestart: alwaysports:- 8065:8065environment:- LS_JAVA_OPTS=-Xmx1024m -Xms1024mvolumes:- ./config/logstash.conf:/etc/logstas…

【Electron 应用安全测试基础】Electron 框架介绍

免责声明 ⽂中所涉及的技术、思路和⼯具仅供以安全为⽬的的学习交流使⽤,任何⼈不得将其⽤于⾮法⽤途以及盈利等⽬的,否则后果⾃⾏承担。所有渗透都需获取授权!一、引言 跨平台桌面应用开发的演进带来了一系列独特的挑战,主要体现在如何确保在 Windows、macOS 和基于 Linux…

07jdk7u21原生利用链

JDK7u21 反序列化的关键在于找到可以动态方法执行的代码:例如CC链中的Transformer,CB链中的PropertyUtils#getPropertyJDK7u21中动态方法执行的点,AnnotationInvocationHandler#equalsImpl中的hisValue = memberMethod.invoke(o)。 private Boolean equalsImpl(Object o) {i…

英语语法(介词和连词)

认识介词 例子: 例子: 识别介词 时间介词 at 精确的时间 by 不缺定的时间 for 持续的时间 in 固定的时间 on 某一天的时间 since 开始时间 until 直到 空间介词 at 指一个点 by 近的意思 from 从别处到这里 in 一个封闭的区域 off 离开 on 开启 out 方向 远离…

一文读懂如何创建食品加工和包装 SOP

在食品行业中,确保产品的安全性和质量是至关重要的。为了实现这一目标,建立一套详尽且高效的标准操作程序(SOP)对于食品加工与包装环节来说不可或缺。本文将引导您深入理解如何高效创建食品加工与包装SOP,并巧妙融入helplook工具,以提升流程管理的精确性和效率。一、明确…

高性能、零内存分配的Go日志库--Zerolog

简介 Zerolog 是一个高性能、零内存分配的 Go 日志库。 它为不需要垃圾回收的延迟敏感型应用程序提供结构化日志记录功能。 您可以以完全零分配的方式使用,这样在初始化记录器对象后,堆上不会再分配其他对象,从而防止触发垃圾回收。 Zerolog 包提供了一个专用于 JSON 输出的…

Jar Analyzer:JAR包分析工具

工具介绍 一个JAR包分析工具,批量分析,SCA漏洞分析,方法调用关系搜索,字符串搜索,Spring组件分析,信息泄露检查,CFG程序分析,JVM栈帧分析,进阶表达式搜索,字节码指令级的动态调试分析,反编译JAR包一键导出,一键提取序列化数据恶意代码,一键分析BCEL字节码。 Jar A…