一、背景引入

在咱们做开发或者运维工作的时候,经常会碰到异构集群。啥是异构集群呢?简单来说,就是集群里的服务器运行着不同版本的操作系统。像有的服务器用的是 CentOS 7,有的用的是 CentOS 8,甚至还有其他不同发行版。这时候就会有个问题,不同系统版本的 YUM(Yellowdog Updater, Modified,一个在 Fedora、Red Hat、CentOS 等 Linux 系统上使用的软件包管理工具)配置不一样。比如说,不同版本的系统可能默认的软件源地址不同,这就会导致在安装软件的时候出现各种问题。所以,咱们得想办法统一管理 YUM 配置,让不同系统版本都能正常使用 YUM 来安装和更新软件。

二、问题分析

2.1 不同系统版本 YUM 配置差异

不同版本的 Linux 系统,YUM 配置文件的内容会有很大不同。举个例子,CentOS 7 的默认 YUM 源配置文件 /etc/yum.repos.d/CentOS-Base.repo 里,软件源地址可能是这样的:

# 技术栈:Shell
# CentOS 7 基础软件源配置
[base]
name=CentOS-$releasever - Base
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=os&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/os/$basearch/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-CentOS-7

而 CentOS 8 的 /etc/yum.repos.d/CentOS-Base.repo 配置就不一样了:

# 技术栈:Shell
# CentOS 8 基础软件源配置
[baseos]
name=CentOS Linux $releasever - BaseOS
mirrorlist=http://mirrorlist.centos.org/?release=$releasever&arch=$basearch&repo=BaseOS&infra=$infra
#baseurl=http://mirror.centos.org/centos/$releasever/BaseOS/$basearch/os/
gpgcheck=1
gpgkey=file:///etc/pki/rpm-gpg/RPM-GPG-KEY-centosofficial

可以看到,不仅软件源的名称不同,而且 mirrorlistbaseurl 里的路径也不一样。如果不处理这些差异,在不同系统上使用 YUM 安装软件时,就可能找不到合适的软件源,导致安装失败。

2.2 配置不一致带来的问题

配置不一致会带来很多麻烦。首先,在安装软件的时候,可能会出现找不到软件包的情况。比如,你在 CentOS 7 上按照 CentOS 8 的 YUM 配置去安装软件,就会发现很多软件包找不到。其次,在更新系统的时候,可能会因为配置问题导致更新失败,甚至可能会破坏系统的稳定性。

三、解决方案:按系统版本分组配置

3.1 分组思路

咱们可以把异构集群里的服务器按照系统版本进行分组。比如,把所有 CentOS 7 的服务器分为一组,CentOS 8 的服务器分为另一组。然后针对每组服务器,配置适合该系统版本的 YUM 源。这样,每组服务器都能使用正确的 YUM 配置来安装和更新软件。

3.2 具体操作步骤

3.2.1 识别系统版本

在进行分组配置之前,得先知道每台服务器的系统版本。可以通过以下命令来查看:

# 技术栈:Shell
# 查看系统版本信息
cat /etc/redhat-release

这个命令会输出服务器的系统版本信息,比如 CentOS Linux release 7.9.2009 (Core) 或者 CentOS Linux release 8.4.2105

3.2.2 分组配置 YUM 源

假设我们已经把服务器分为 CentOS 7 组和 CentOS 8 组。对于 CentOS 7 组的服务器,我们可以使用以下命令来配置 YUM 源:

# 技术栈:Shell
# 备份原有的 YUM 源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载 CentOS 7 的阿里云 YUM 源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
# 清理 YUM 缓存
yum clean all
# 生成新的 YUM 缓存
yum makecache

对于 CentOS 8 组的服务器,操作类似:

# 技术栈:Shell
# 备份原有的 YUM 源配置文件
mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
# 下载 CentOS 8 的阿里云 YUM 源配置文件
wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-8.repo
# 清理 YUM 缓存
yum clean all
# 生成新的 YUM 缓存
yum makecache

3.3 自动化配置

如果服务器数量很多,手动一台一台配置会很麻烦。这时候可以使用自动化工具,比如 Ansible。下面是一个简单的 Ansible 剧本示例,用于配置 CentOS 7 服务器的 YUM 源:

# 技术栈:Ansible
---
- name: Configure YUM repo for CentOS 7
  hosts: centos7_servers  # 这里的 centos7_servers 是 Ansible 主机组名
  become: yes
  tasks:
    - name: Backup original YUM repo file
      command: mv /etc/yum.repos.d/CentOS-Base.repo /etc/yum.repos.d/CentOS-Base.repo.backup
    - name: Download Alibaba Cloud YUM repo file
      get_url:
        url: http://mirrors.aliyun.com/repo/Centos-7.repo
        dest: /etc/yum.repos.d/CentOS-Base.repo
    - name: Clean YUM cache
      command: yum clean all
    - name: Make new YUM cache
      command: yum makecache

把这个剧本保存为 centos7_yum_config.yml,然后使用以下命令执行:

# 技术栈:Shell
ansible-playbook centos7_yum_config.yml

四、应用场景

4.1 企业内部服务器集群

在企业内部,可能会有很多不同版本的 Linux 服务器,用于不同的业务。比如,有的服务器运行着旧版本的应用,只能在 CentOS 7 上运行;而有的新应用则需要 CentOS 8 的支持。通过按系统版本分组配置 YUM 源,可以确保每台服务器都能正常安装和更新软件,保证业务的稳定运行。

4.2 云计算环境

在云计算环境中,用户可能会创建不同版本的 Linux 虚拟机。按系统版本分组配置 YUM 源,可以让用户更方便地管理这些虚拟机的软件安装和更新,提高资源的利用率。

五、技术优缺点

5.1 优点

5.1.1 提高软件安装和更新的成功率

通过按系统版本分组配置 YUM 源,每台服务器都能使用适合自己系统版本的软件源,大大提高了软件安装和更新的成功率。

5.1.2 便于管理

分组配置使得 YUM 源的管理更加清晰和方便。管理员可以针对不同组的服务器进行统一的配置和管理,减少了管理成本。

5.2 缺点

5.2.1 配置复杂

当服务器数量很多,且系统版本种类也很多时,分组配置 YUM 源的过程会比较复杂,需要花费较多的时间和精力。

5.2.2 依赖网络

配置 YUM 源需要从网络上下载配置文件和软件包,如果网络不稳定,可能会影响配置和安装的效果。

六、注意事项

6.1 备份原配置文件

在进行 YUM 源配置之前,一定要备份原有的配置文件。这样,万一配置出现问题,可以恢复到原来的状态。

6.2 选择可靠的软件源

要选择可靠的软件源,比如阿里云、华为云等提供的镜像源。这些镜像源更新及时,软件包完整,可以保证软件安装和更新的顺利进行。

6.3 测试配置效果

在完成 YUM 源配置后,要进行测试,确保软件可以正常安装和更新。可以选择一些常用的软件进行安装测试,比如 wgetcurl 等。

七、文章总结

在异构集群中,不同系统版本的 YUM 配置不一致会给软件安装和更新带来很多问题。通过按系统版本分组配置 YUM 源,我们可以有效地解决这个问题。首先,要识别服务器的系统版本,然后根据不同的系统版本进行分组,为每组服务器配置适合的 YUM 源。可以手动配置,也可以使用自动化工具来提高效率。同时,要注意备份原配置文件、选择可靠的软件源,并进行配置效果测试。这样,就能保证异构集群中 YUM 的统一管理,让软件安装和更新更加顺利。