ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

CentOS 7.9迁移AlmaLinux 8实战:阿里云环境升级指南

CentOS 7.9迁移AlmaLinux 8实战:阿里云环境升级指南 1. 项目背景与核心需求最近在阿里云上维护的一批CentOS 7.9服务器面临生命周期终止EOL问题急需寻找稳定可靠的替代方案。经过多方评估最终选择了AlmaLinux 8作为迁移目标。这个决定主要基于以下几个技术考量首先AlmaLinux作为RHEL的1:1二进制兼容发行版在软件生态和系统稳定性上能够完美承接原有CentOS环境。其次AlmaLinux承诺提供10年的长期支持这比CentOS Stream的滚动更新模式更适合企业生产环境。最重要的是通过leapp工具可以实现原地升级in-place upgrade这比重建服务器节省90%以上的迁移时间。关键提示原地升级虽然方便但必须做好完整的系统备份。建议使用阿里云快照功能创建完整的系统盘备份这是升级前的必要步骤。2. 环境准备与依赖检查2.1 系统现状确认在阿里云控制台确认实例信息# 查看当前系统版本 cat /etc/centos-release # 检查内核版本 uname -r # 确认磁盘空间至少需要10GB空闲空间 df -h典型输出示例CentOS Linux release 7.9.2009 (Core) 3.10.0-1160.92.1.el7.x86_64 /dev/vda1 40G 28G 12G 70% /2.2 关键服务检查列出必须保留的服务及其版本# 查看运行中的服务 systemctl list-units --typeservice --staterunning # 记录重要软件版本 nginx -v mysql --version php -v2.3 安装leapp工具添加EPEL仓库并安装必要工具yum install -y epel-release yum install -y leapp leapp-repository特别要注意的是必须安装特定于AlmaLinux的升级数据curl -O https://almalinux.org/files/leapp-data-almalinux.tar.gz tar xf leapp-data-almalinux.tar.gz -C /etc/leapp/files/3. 升级预检与问题修复3.1 执行预检扫描leapp preupgrade这个命令会生成详细的检查报告位置在/var/log/leapp/leapp-report.txt常见问题及解决方案问题类型具体表现修复方案已弃用的软件包python2相关包迁移到python3环境内核模块冲突第三方驱动如xtables-addons升级到DKMS版本文件系统检查/usr分区空间不足清理缓存或扩容磁盘3.2 特殊配置调整对于阿里云环境需要特别注意云助手Agent的兼容性/usr/local/share/aliyun-assist/2.2.3.292/aliyun-service -k确保cloud-init配置备份cp -a /etc/cloud /etc/cloud.bak检查安全组规则是否包含新的服务端口如Cockpit的9090端口4. 执行原地升级4.1 正式升级命令leapp upgrade升级过程会经历以下阶段创建临时环境约5-10分钟软件包替换和配置迁移约30-60分钟取决于网络速度生成新的initramfs设置下次启动使用新内核重要提醒在阿里云控制台确保实例设置了强制停止不保护选项避免系统自动重启导致升级中断。4.2 重启后配置首次登录新系统后需要验证系统版本cat /etc/almalinux-release重建软件仓库配置dnf install -y almalinux-release dnf config-manager --set-enabled powertools恢复阿里云YUM源mv /etc/yum.repos.d/almalinux.repo /etc/yum.repos.d/almalinux.repo.bak curl -o /etc/yum.repos.d/almalinux.repo https://mirrors.aliyun.com/repo/almalinux-8.repo5. 常见问题排查5.1 网络服务异常现象Nginx/Apache等服务无法启动 解决方案# 检查SELinux上下文 restorecon -Rv /etc/nginx # 重新加载服务配置 systemctl daemon-reload5.2 权限问题修复# 修复文件权限 chcon -R -t httpd_sys_content_t /var/www/html # 重建用户映射 authselect check authselect apply-changes5.3 性能调优建议针对阿里云ECS实例调整磁盘调度器echo none /sys/block/vda/queue/scheduler优化网络参数echo net.ipv4.tcp_tw_reuse 1 /etc/sysctl.conf sysctl -p6. 升级后验证6.1 基础功能测试# 检查关键服务状态 systemctl list-units --typeservice --statefailed # 验证网络连接 curl -I https://www.aliyun.com # 测试软件兼容性 python3 -c import django; print(django.__version__)6.2 性能基准对比使用sysbench进行前后对比测试# CPU测试 sysbench cpu --cpu-max-prime20000 run # 内存测试 sysbench memory --memory-block-size1K --memory-total-size10G run6.3 安全加固建议更新SSH配置sed -i s/^#PermitRootLogin.*/PermitRootLogin no/ /etc/ssh/sshd_config启用firewalldsystemctl enable --now firewalld firewall-cmd --permanent --add-servicehttp firewall-cmd --reload7. 阿里云环境特殊处理7.1 云监控组件适配# 卸载旧版云监控 /usr/local/cloudmonitor/wrapper/bin/cloudmonitor.sh stop rm -rf /usr/local/cloudmonitor # 安装新版 wget https://cloudmonitor-agent.oss-cn-hangzhou.aliyuncs.com/linux/cloudmonitor.v2.3.0.linux-amd64.tar.gz tar xf cloudmonitor.v2.3.0.linux-amd64.tar.gz -C /usr/local/ cd /usr/local/cloudmonitor ./bin/install.sh7.2 磁盘自动扩容如果系统盘在升级前进行了扩容growpart /dev/vda 1 xfs_growfs /7.3 备份策略调整建议升级后修改阿里云快照策略取消原CentOS系统的自动快照策略为新系统创建新的策略保留周期建议设置为30天8. 长期维护建议配置自动更新dnf install -y dnf-automatic sed -i s/apply_updates no/apply_updates yes/ /etc/dnf/automatic.conf systemctl enable --now dnf-automatic.timer日志轮转优化echo /var/log/leapp/*.log { weekly missingok rotate 12 compress } /etc/logrotate.d/leapp建立系统健康检查脚本cat /usr/local/bin/system-check EOF #!/bin/bash # 检查关键服务 systemctl list-units --typeservice --statefailed # 检查磁盘空间 df -h | awk $5 80 {print} # 检查内存使用 free -m | awk NR2{if($3/$2*100 90) print Memory alert} EOF chmod x /usr/local/bin/system-check在实际操作中我发现阿里云实例的升级过程比物理服务器更顺利主要得益于云环境的标准化硬件配置。但需要特别注意云监控组件的兼容性问题建议在升级窗口期前先在一台测试实例上验证所有关键服务的运行状态。
RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进