将旧版 SUSE Multi-Linux Manager 服务器迁移到容器

要将旧版 SUSE Multi-Linux Manager 服务器迁移到容器,需要准备一台新计算机。

在该迁移场景中,旧版 SUSE Multi-Linux Manager 服务器(RPM 安装方式)有时也被称为_旧服务器_。

1. 要求和注意事项

1.1. 主机名

目前,该迁移过程既不支持就地迁移,也不提供主机名重命名功能。

因此,新服务器的完全限定域名 (FQDN) 将与旧版服务器保持一致。

迁移之后,需要更新 DHCP 和 DNS 记录以指向新的服务器。

有关详细信息,请参见 完成迁移

2. GPG 密钥

  • 自信任 GPG 密钥不会被迁移。

  • 仅在 RPM 数据库中可信的 GPG 密钥不会迁移。因此,使用 spacewalk-repo-sync 同步通道可能会失败。

  • 在完成服务器的实际迁移后,管理员必须手动将这些密钥从旧版 SUSE Multi-Linux Manager 系统迁移到容器主机。

过程:将 GPG 密钥手动迁移到新服务器
  1. 将旧版 Uyuni 服务器中的密钥复制到新服务器的容器主机。

  2. 稍后,使用命令 mgradm gpg add <PATH_TO_KEY_FILE> 将每个密钥添加到迁移的服务器。

2.1. 旧版服务器上的初始准备工作

迁移可能需要很长时间,具体时长取决于需要复制的数据量。为了减少停机时间,可以在_初始复制_、_重新复制_或_最终复制和切换_过程中多次执行迁移,同时旧版服务器上的所有服务都可以保持正常运行。

只有在最终迁移期间才需要停止旧版服务器上的进程。

对于最终复制以外的所有复制,请添加参数 --prepare,以防止自动停止旧版服务器上的服务。例如:

mgradm migrate podman <oldserver.fqdn> --prepare
过程:旧版服务器上的初始准备工作
  1. 停止 SUSE Multi-Linux Manager 服务:

    spacewalk-service stop
  2. 停止 PostgreSQL 服务:

    systemctl stop postgresql

2.2. SSH 连接准备

过程:准备 SSH 连接
  1. 确保新 5.1 服务器上的 root 已存在 SSH 密钥。如果密钥不存在,请使用以下命令创建一个:

    ssh-keygen -t rsa
  2. 新服务器上的 SSH 配置和代理应准备就绪,这样在连接旧版服务器时,就不会出现输入口令的提示。

    eval $(ssh-agent); ssh-add

    迁移脚本依赖新服务器上运行的 SSH 代理来建立不提示输入口令的连接。如果该代理尚未激活,请运行 eval $(ssh-agent) 将其启动。然后,使用 ssh-add(后跟私用密钥的路径)将 SSH 密钥添加到正在运行的代理。在此过程中,系统将提示您输入私用密钥的口令。

  3. 使用 ssh-copy-id 将公共 SSH 密钥复制到旧版 SUSE Multi-Linux Manager 服务器 (<oldserver.fqdn>)。请将 <oldserver.fqdn> 替换为旧版服务器的 FQDN:

    ssh-copy-id <oldserver.fqdn>

    SSH 密钥会被复制到旧版服务器的 ~/.ssh/authorized_keys 文件中。有关详细信息,请参见 ssh-copy-id 手册页。

  4. 在新服务器上与旧版 SUSE Multi-Linux Manager 服务器建立 SSH 连接,检查是否不需要口令。此外,主机指纹不得有任何问题。如果遇到问题,请从 ~/.ssh/known_hosts 文件中去除旧指纹。然后重试。指纹将存储在本地 ~/.ssh/known_hosts 文件中。

2.3. 执行迁移

在规划从旧版 SUSE Multi-Linux Manager 到容器化 SUSE Multi-Linux Manager 的迁移时,请确保您的目标实例达到或超过旧版设置的规格。这包括但不限于内存 (RAM)、CPU 核心、存储空间和网络带宽。

经过安全加固的 SUSE Multi-Linux Manager 服务器主机可能会限制从 /tmp 文件夹执行文件。在这种情况下,可通过以下临时解决方案规避:在运行 mgradm前,将 TMPDIR 环境变量导出至其他现有路径。

例如:

export TMPDIR=/path/to/other/tmp

在 SUSE Multi-Linux Manager 的后续更新中,相关工具将进行优化,届时无需再使用此临时解决方案。

2.3.1. 配置自定义永久性存储

配置永久性存储空间并非强制性要求,但这是唯一可避免在容器全盘空间用尽的情况下出现严重问题的方法。强烈建议您使用 mgr-storage-server 工具来配置自定义永久性存储空间。

有关详细信息,请参见 mgr-storage-server --help。此工具可以简化容器存储和数据库卷的创建。

如下所示使用命令:

mgr-storage-server <storage-disk-device> [<database-disk-device>]

设备上不得存在任何文件系统。如果存储设备上存在文件系统,命令会中止。

例如:

mgr-storage-server /dev/nvme1n1 /dev/nvme2n1

此命令将在 /var/lib/containers/storage/volumes 中创建永久性存储卷。

有关详细信息,请参见

2.3.2. 执行迁移

  1. 执行以下命令来安装新的 SUSE Multi-Linux Manager 服务器。请将 <oldserver.fqdn> 替换为旧版服务器的 FQDN:

    mgradm migrate podman <oldserver.fqdn>
  2. 迁移可信 SSL CA 证书。

2.3.3. 证书的迁移

作为 RPM 的一部分安装并存储在旧版 SUSE Multi-Linux Manager 上 /usr/share/pki/trust/anchors/ 目录中的可信 SSL CA 证书将不会迁移。由于 SUSE 不会在容器中安装 RPM 软件包,因此迁移完成后,管理员必须手动从以前安装的旧版系统中迁移这些证书文件:

过程:迁移证书
  1. 将旧版服务器中的该文件复制到新服务器。 例如,复制为 /local/ca.file

  2. 使用以下命令将文件复制到容器中:

    mgrctl cp /local/ca.file server:/etc/pki/trust/anchors/

2.3.4. 完成迁移

成功运行 mgradm migrate 命令后,所有客户端上的 Salt 设置仍会指向旧版服务器。

要将其重定向到新的 5.1 服务器,需要在基础架构级别(DHCP 和 DNS)重命名新服务器,以使用与旧版服务器相同的 FQDN 和 IP 地址。

如果迁移过程中出现问题,可重启旧系统。请以 root 身份执行以下命令,重启 PostgreSQL 和 spacewalk 服务:

service postgresql start
spacewalk-service start

3. Kubernetes 准备工作

在使用 mgradm migrate 命令执行迁移之前,必须预先定义永久性卷,尤其要注意的是,迁移作业会从头开始初始化容器。

有关详细信息,请参见安装章节中关于准备这些卷的内容,具体可查看 永久性容器卷

4. 迁移

执行以下命令安装新的 SUSE Multi-Linux Manager 服务器(请将 <oldserver.fqdn> 替换为旧版服务器的相应 FQDN):

mgradm migrate podman <oldserver.fqdn>

mgradm migrate kubernetes <oldserver.fqdn>

成功运行 mgradm migration 命令后,所有客户端上的 Salt 设置仍会指向旧版服务器。要将其重定向到新服务器,需要在基础架构级别(DHCP 和 DNS)重命名新服务器,以使用与旧版服务器相同的 FQDN 和 IP 地址。