CentOS内网环境如何完全离线安装Ceph?

在高度安全或网络隔离的生产环境中,为CentOS系统离线安装Ceph分布式存储系统是一项常见且关键的任务,此过程的核心在于提前准备好所有必需的软件包及其依赖项,并在目标离线环境中构建一个本地软件源,本文将详细阐述这一过程的完整步骤,确保安装的顺利进行。

CentOS内网环境如何完全离线安装Ceph?

环境准备

我们需要准备两台机器:

  1. 在线准备节点:一台可以访问互联网的CentOS机器,其版本需与目标离线节点保持一致(同为CentOS 7.x或8.x),此节点用于下载所有软件包。
  2. 目标离线节点:需要安装Ceph的、处于网络隔离环境的CentOS机器。

在两台节点上,都应进行基础的系统配置,包括:

  • 时间同步:确保所有节点时间一致,可通过NTP服务实现。
  • 配置主机名与hosts解析:为每个节点设置静态主机名,并在/etc/hosts文件中添加所有节点的IP与主机名映射。
  • 创建部署用户:创建一个具有sudo免密码权限的普通用户(如ceph-deploy),用于后续的集群部署操作。
  • 配置SSH免密登录:确保部署用户可以在所有节点之间进行无密码SSH登录。

在线节点下载软件包

这是整个离线安装流程中最关键的一步,我们需要在在线准备节点上,下载Ceph及其所有依赖的RPM包。

安装必要工具
在在线节点上安装yum-utilscreaterepo,前者提供了下载工具,后者用于创建本地仓库。

sudo yum install -y yum-utils createrepo

添加Ceph软件源
根据需要安装的Ceph版本(例如Pacific),添加官方软件源配置,创建/etc/yum.repos.d/ceph.repo如下:

[Ceph]
name=Ceph packages for $basearch
baseurl=https://download.ceph.com/rpm-pacific/el7/$basearch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1
[Ceph-noarch]
name=Ceph noarch packages
baseurl=https://download.ceph.com/rpm-pacific/el7/noarch
enabled=1
gpgcheck=1
type=rpm-md
gpgkey=https://download.ceph.com/keys/release.asc
priority=1

注意:el7代表CentOS 7,若为CentOS 8,则需修改为el8

下载软件包
创建一个目录用于存放所有下载的软件包,然后使用repotrack命令下载Ceph核心组件及其所有依赖。repotrack能够递归地解析并下载所有依赖关系,比yumdownloader更彻底。

CentOS内网环境如何完全离线安装Ceph?

# 创建存放目录
mkdir -p /opt/ceph-offline/packages
# 使用repotrack下载核心组件及其所有依赖
repotrack -p /opt/ceph-offline/packages ceph ceph-base ceph-common ceph-mds ceph-mgr ceph-mon ceph-osd ceph-radosgw

这个过程会花费一些时间,因为它会下载数百个软件包。

创建本地仓库元数据
下载完成后,进入软件包目录,使用createrepo命令生成仓库的元数据,这些元数据文件是yum能够识别和安装本地软件包的关键。

cd /opt/ceph-offline/packages
createrepo .

执行后,会在当前目录下生成一个repodata文件夹。

传输软件包至离线节点

将整个/opt/ceph-offline目录打包,通过U盘、移动硬盘或内部网络的安全传输方式(如SCP)拷贝到所有目标离线节点的相同路径下(例如/opt/ceph-offline)。

# 在在线节点打包
tar -czvf ceph-offline.tar.gz /opt/ceph-offline
# 拷贝到离线节点后解压
tar -xzvf ceph-offline.tar.gz -C /

离线节点配置与安装

在目标离线节点上,我们需要配置yum以使用本地仓库进行安装。

配置本地Yum源
备份或移除原有的/etc/yum.repos.d/下的Ceph源文件,然后创建一个新的本地源文件/etc/yum.repos.d/ceph-local.repo

[ceph-local]
name=Local Ceph Repository
baseurl=file:///opt/ceph-offline/packages
enabled=1
gpgcheck=0
priority=1

这里gpgcheck=0是因为我们本地仓库没有GPG密钥。baseurl指向我们存放软件包的本地路径。

CentOS内网环境如何完全离线安装Ceph?

清理并安装
执行以下命令,清理Yum缓存并安装Ceph。

yum clean all
yum makecache
# 安装Ceph软件包
yum install -y ceph ceph-mon ceph-osd ceph-mds ceph-mgr ceph-radosgw

yum现在会从我们本地的file:///路径中查找并安装所有软件包,而不会尝试访问互联网。

部署Ceph集群

软件包安装完成后,即可使用ceph-deploy等工具进行集群的初始化和部署,由于ceph-deploy本身也需要被下载并包含在离线包中,因此在repotrack步骤中最好也将其加入下载列表,后续的ceph-deploy new, ceph-deploy mon create, ceph-deploy osd create等步骤与在线安装流程完全一致。

为了方便参考,以下是核心命令的小编总结:

步骤 命令 目的
下载依赖 repotrack -p /path ceph ... 递归下载指定RPM包及其所有依赖
创建仓库 createrepo /path 在本地目录生成Yum仓库元数据
离线安装 yum install --disablerepo=* --enablerepo=ceph-local ceph 仅从指定的本地仓库安装软件

相关问答FAQs

Q1: 如果在离线安装过程中,提示缺少某个依赖包怎么办?
A1: 这通常是由于repotrack未能完全捕获所有依赖,或者目标系统与在线准备节点存在微小差异(如已安装的软件包版本不同),解决方法是:回到在线准备节点,使用yumdownloader --resolve <缺失的包名>命令单独下载这个缺失的包及其依赖,然后将其拷贝到离线节点的软件包目录中,再次运行createrepo --update .更新仓库元数据,最后在离线节点上重新执行yum install命令即可。

Q2: 我可以为不同版本的CentOS(例如CentOS 7和CentOS 8)使用同一套离线软件包吗?
A2: 绝对不可以,不同主要版本的CentOS(如7和8)其系统底层库(如glibc、openssl等)版本差异巨大,软件包的编译依赖和架构完全不同,为CentOS 7编译的RPM包无法在CentOS 8上安装,反之亦然,必须为每个目标操作系统版本准备一套独立的、在与之完全相同的在线环境中下载的离线软件包。

【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!

(0)
热舞的头像热舞
上一篇 2025-10-06 14:43
下一篇 2025-10-06 14:47

相关推荐

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

联系我们

QQ-14239236

在线咨询: QQ交谈

邮件:asy@cxas.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信