jumpserver堡垒机从 CentOS 7 迁移至 Rocky Linux 9 实战指南

前言:CentOS 7 官方支持终止后,服务器操作系统迭代成为企业运维刚需,Rocky Linux 9 作为 RHEL 兼容替代品,成为主流选择。堡垒机作为运维安全核心,承载权限管控与操作审计,其迁移需兼顾零数据丢失、低风险与服务连续性。本文复盘 CentOS 7 至 Rocky Linux 9 堡垒机迁移全流程,避开常见坑点,提供可直接复用的实战指南,助力运维同行高效完成迁移。

一、迁移背景与目标

本次迁移是将运行在 CentOS 7 上的 JumpServer 堡垒机,完整迁移到 Rocky Linux 9 服务器。核心目标是:

  • 零数据丢失:确保所有用户、资产、授权和审计日志完整迁移。
  • 最小化变更:复制老环境的配置和工作流程,避免引入新的最佳实践带来的风险。
  • 风险可控:通过分步验证和回滚预案,确保业务连续性。

二、迁移前准备

1. 老环境备份(关键!)

在执行任何操作前,务必对老环境进行完整备份:

bash 复制代码
# 1. 检查老环境 Docker 版本(确保新环境兼容)
docker version | grep "Server Version"

# 2. 备份堡垒机核心数据和配置
tar -zcvf /tmp/jumpserver_data_config.tar.gz \
  /data/jumpserver \
  /opt/jumpserver

# 3. 备份启动脚本目录
tar -zcvf /tmp/jumpserver_installer.tar.gz \
  /opt/jumpserver-installer-v3.10.11

# 4. (可选)备份所有 Docker 镜像,用于新环境离线导入
docker save -o /tmp/jumpserver_images.tar \
  $(docker images | grep jumpserver | awk '{print $1":"$2}')
2. 新环境初始化

在新的 Rocky Linux 9 服务器上,执行以下操作:

bash 复制代码
# 1. 切换公网 DNS,确保能下载依赖
echo "nameserver 100.96.0.2" > /etc/resolv.conf

# 2. 安装基础依赖
dnf install -y dnf-plugins-core wget git

# 3. 添加 Docker 官方仓库(优化:使用 RHEL 仓库,符合 Rocky Linux 9 官方推荐)
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo

# 4. 安装 Docker 和 Compose 插件
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin

# 5. 启动并启用 Docker
systemctl start docker
systemctl enable docker

三、核心迁移步骤

步骤 1:传输备份文件到新环境

在老环境执行,将备份文件传输到新环境的 /tmp 目录:

bash 复制代码
# 传输数据和配置包
scp -P 22 -i huoshanyun.pem /tmp/jumpserver_data_config.tar.gz root@新环境IP:/tmp/

# 传输启动脚本包
scp -P 22 -i huoshanyun.pem /tmp/jumpserver_installer.tar.gz root@新环境IP:/tmp/

# (可选)传输离线镜像包
scp -P 22 -i huoshanyun.pem /tmp/jumpserver_images.tar root@新环境IP:/tmp/
步骤 2:在新环境解压恢复

在新环境执行,将备份文件解压到对应路径:

bash 复制代码
# 1. 恢复数据和配置
tar -zxvf /tmp/jumpserver_data_config.tar.gz -C /

# 2. 恢复启动脚本
tar -zxvf /tmp/jumpserver_installer.tar.gz -C /opt/

# 3. (可选)离线导入 Docker 镜像
docker load -i /tmp/jumpserver_images.tar
步骤 3:修改堡垒机ip

在新环境中,编辑 /opt/jumpserver/config/config.txt,将默认端口修改为自定义端口(例如:Web 端口改为 8443,SSH 端口改为 5222):

bash 复制代码
# 编辑配置文件
vi /opt/jumpserver/config/config.txt

# 找到并修改以下配置项(示例)
HTTP_PORT=8443
SSH_PORT=5222
bash 复制代码
# 批量替换所有老 IP 为新 IP
sed -i 's/老ip/新ip/g' /opt/jumpserver/config/config.txt

注意:端口号需确保未被其他服务占用,且符合企业安全策略。

步骤 4:解决命令兼容性问题

Rocky Linux 9 使用 docker compose(空格)命令,而老脚本调用的是 docker-compose(横杠),需要创建软链接兼容:

bash 复制代码
ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose

# 验证
docker-compose --version
步骤 5:配置国内镜像加速器(解决拉取慢/中断)
bash 复制代码
mkdir -p /etc/docker
cat > /etc/docker/daemon.json <<EOF
{
  "registry-mirrors": [
    "https://hub-mirror.c.163.com",
    "https://docker.mirrors.ustc.edu.cn",
    "https://mirror.baidubce.com"
  ]
}
EOF

systemctl daemon-reload
systemctl restart docker
步骤 6:放行自定义堡垒机端口
bash 复制代码
# 放行自定义端口(替换为你实际修改的端口)
firewall-cmd --permanent --add-port=8443/tcp --add-port=5222/tcp
firewall-cmd --reload
步骤 7:启动堡垒机服务
bash 复制代码
cd /opt/jumpserver-installer-v3.10.11
./jmsctl.sh start

# 验证服务状态
./jmsctl.sh status

四、常见问题与排错思路

问题 1:docker-compose: command not found
  • 现象 :启动脚本报错 docker-compose: command not found
  • 原因 :Rocky Linux 9 不再提供独立的 docker-compose 包,而是作为插件提供。
  • 解决方案 :创建软链接 ln -s /usr/libexec/docker/cli-plugins/docker-compose /usr/bin/docker-compose
问题 2:镜像拉取慢/中断(connection reset by peer
  • 现象:拉取镜像时网络中断,进度条卡住。
  • 原因:国内访问 Docker Hub 国际链路不稳定。
  • 解决方案
    1. 配置国内镜像加速器(见步骤 5)。
    2. 从老环境导出镜像,在新环境离线导入。
问题 3:服务启动后 Web 界面无法访问
  • 现象:容器状态正常,但无法通过浏览器访问自定义端口。
  • 原因 :防火墙未放行端口或 config.txt 中绑定的 IP 不正确。
  • 解决方案
    1. 放行自定义端口(见步骤 6)。
    2. 检查 /opt/jumpserver/config/config.txt 中的 BIND_ADDRESS 配置。
问题 4:systemctl status docker 显示 Active: failed
  • 现象:Docker 服务启动失败,与 firewalld 冲突。

  • 原因:Rocky 9 默认启用 firewalld,Docker 与防火墙规则冲突。

  • 解决方案

    bash 复制代码
    firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.0.0/16" port port="2375" protocol="tcp" accept'
    firewall-cmd --reload

五、迁移后验证

  1. 服务状态 :执行 ./jmsctl.sh status,确保所有容器状态为 StartedHealthy
  2. Web 界面 :访问 https://新环境IP:自定义Web端口,使用老环境账号登录,确认用户、资产和授权信息完整。
  3. 功能测试:测试资产登录、文件传输、命令审计等核心功能,确保与老环境一致。

六、总结与注意事项

  • 数据优先 :始终将 /data/jumpserver 数据目录的备份和恢复作为首要任务。
  • 环境复制:优先复制老环境的配置和脚本,而非采纳新的最佳实践,以降低风险。
  • 端口安全:修改默认端口是企业安全的基本要求,避免端口冲突和泄露风险。
  • 网络问题:国内环境下,Docker 镜像拉取是最常见的坑,提前准备离线镜像或国内加速器至关重要。
  • 回滚预案:在确认新环境稳定运行前,不要关停老环境,以便随时回滚。

通过以上步骤,我们成功将 JumpServer 堡垒机从 CentOS 7 迁移到了 Rocky Linux 9,实现了数据完整、服务可用、风险可控的迁移目标。


相关推荐
❀͜͡傀儡师1 小时前
使用 Docker 部署 Puter 云桌面系统
运维·docker·容器
wsad05321 小时前
CentOS 7 Minimal 常用软件工具安装指南
linux·运维·centos
开开心心就好2 小时前
轻松加密文件生成exe,无需原程序解密
linux·运维·服务器·windows·pdf·harmonyos·1024程序员节
wfj1262 小时前
服务器部署,用 nginx 部署后页面刷新 404 问题,宝塔面板修改(修改 nginx.conf 配置文件)
运维·服务器·nginx
技术传感器2 小时前
解剖“数字孪生“:语义层定义世界,动力层驱动世界
android·运维·服务器
济6172 小时前
ARM Linux 驱动开发篇----字符设备驱动开发(6)---测试chrdevbase 字符设备驱动开发实验--- Ubuntu20.04
linux·运维·驱动开发
小程同学>o<2 小时前
Linux 应用层开发入门(二十二)| poll_select方式读取输入数据
linux·嵌入式软件·地瓜机器人·atomgit·linux应用层开发·openloong开源社区·开源新春集福
求索小沈2 小时前
linux 录屏软件安装--obs
linux·运维·服务器
承渊政道3 小时前
Linux系统学习【深入剖析Git的原理和使用(上)】
linux·服务器·git·学习