一、背景与目标
客户因业务调整,需要将现有生产环境的网站服务及数据完整迁移至新服务器。涉及约 10 个 Java 网络应用程序及配套的搜索、消息队列服务。目标是在保证数据完整性的前提下,实现业务的平滑割接,确保迁移后服务可正常访问。
二、功能模块
1.全量服务迁移: 涵盖 Elasticsearch 7.8.0 搜索引擎、Nginx 反向代理、RabbitMQ 消息队列及 Redis 缓存服务的部署与配置还原。
2.Java 应用部署: 迁移并配置 10 个左右的 Java 后端应用,恢复其 JVM 参数及配置文件。
3.数据一致性保障: 执行数据库与索引数据的导出导入操作,确保新旧环境数据一致。
一、架构与思路
采用“先环境后数据,先内网后外网”的迁移策略。首先在新服务器复刻原有的 Linux 运行环境(JDK版本、系统库),然后分批迁移中间件数据,最后部署应用代码并进行联调。
二、具体工作与难点解决
1.ES 数据迁移: 针对 Elasticsearch 7.8.0,使用了快照(Snapshot)或 reindex 方式迁移索引数据,解决了大索引文件传输慢的问题,确保搜索功能上线即准确。
2.配置适配: 修改了 Nginx 的 proxy_pass 配置及 Java 应用的 application.yml,将原本指向旧服务器的 IP 地址更新为新环境内网 IP,解决了服务间调用失败的问题。
3.消息队列恢复: 对 RabbitMQ 进行了元数据导出与队列重建,防止迁移过程中消息丢失。
4.脚本化执行: 编写了 Shell 迁移脚本,自动化执行文件拷贝、权限修正(chown/chmod)及服务重启命令,减少了人工操作失误,提高了迁移效率。