在高度安全或网络隔离的生产环境中,为CentOS系统离线安装Ceph分布式存储系统是一项常见且关键的任务,此过程的核心在于提前准备好所有必需的软件包及其依赖项,并在目标离线环境中构建一个本地软件源,本文将详细阐述这一过程的完整步骤,确保安装的顺利进行。
环境准备
我们需要准备两台机器:
- 在线准备节点:一台可以访问互联网的CentOS机器,其版本需与目标离线节点保持一致(同为CentOS 7.x或8.x),此节点用于下载所有软件包。
- 目标离线节点:需要安装Ceph的、处于网络隔离环境的CentOS机器。
在两台节点上,都应进行基础的系统配置,包括:
- 时间同步:确保所有节点时间一致,可通过NTP服务实现。
- 配置主机名与hosts解析:为每个节点设置静态主机名,并在
/etc/hosts
文件中添加所有节点的IP与主机名映射。 - 创建部署用户:创建一个具有sudo免密码权限的普通用户(如
ceph-deploy
),用于后续的集群部署操作。 - 配置SSH免密登录:确保部署用户可以在所有节点之间进行无密码SSH登录。
在线节点下载软件包
这是整个离线安装流程中最关键的一步,我们需要在在线准备节点上,下载Ceph及其所有依赖的RPM包。
安装必要工具
在在线节点上安装yum-utils
和createrepo
,前者提供了下载工具,后者用于创建本地仓库。
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
更彻底。
# 创建存放目录 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
指向我们存放软件包的本地路径。
清理并安装
执行以下命令,清理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上安装,反之亦然,必须为每个目标操作系统版本准备一套独立的、在与之完全相同的在线环境中下载的离线软件包。
【版权声明】:本站所有内容均来自网络,若无意侵犯到您的权利,请及时与我们联系将尽快删除相关内容!
发表回复