服务器迁移
服务器迁移案例
一、迁移背景
随着业务的变化,原有的服务器资源即将关闭。因此,我们决定将现有的容器化前后端应用从旧服务器迁移至新服务器。本次迁移的目标是确保应用在新服务器上能够正常运行,同时尽量减少停机时间和对用户的影响。
二、迁移步骤
(一)迁移前准备
- 检查当前环境
- 确认旧服务器上运行的容器化应用版本,包括前后端应用的镜像版本、依赖服务(如数据库、缓存等)的版本。
- 检查旧服务器的配置,包括 CPU、内存、存储等资源使用情况,以及网络配置(如 IP 地址、域名解析等)。
- 准备新服务器
- 安装并配置新服务器的操作系统,确保其与旧服务器的系统兼容。
- 安装 Docker 和相关依赖软件,确保新服务器能够运行容器化应用。
- 配置新服务器的网络,包括设置 IP 地址、子网掩码、网关等,确保其能够正常访问外部网络和内部网络中的其他服务。
(二)镜像迁移
- 导出镜像
在旧服务器上,使用以下命令导出镜像:
docker save -o <镜像文件名>.tar <镜像名>:<标签>
例如,导出名为 “frontend” 的镜像,标签为 “v1.0”:
docker save -o frontend_v1.0.tar frontend:v1.0
将导出的镜像文件复制到新服务器上,可以使用 scp
命令:
scp /path/to/<镜像文件名>.tar user@new_server:/path/to/
- 导入镜像
在新服务器上,使用以下命令导入镜像:
docker load -i <镜像文件名>.tar
例如,导入刚才复制的前端镜像:
docker load -i frontend_v1.0.tar
- 迁移所有镜像
如果需要迁移旧服务器上的所有镜像,可以使用以下命令:
docker save $(docker images -q) -o all_images.tar
然后将 all_images.tar
文件复制到新服务器并导入:
docker load -i all_images.tar
(三)CNAME 申请
- 确定域名解析需求
明确应用需要通过哪些域名进行访问,例如前端应用的域名、后端 API 的域名等。 - 申请 CNAME
登录域名注册商或 DNS 服务提供商的管理控制台,为每个需要解析的域名申请 CNAME 记录,将域名指向新服务器的 IP 地址或负载均衡器的域名。
(四)Nginx 配置
- 导出旧服务器上的 Nginx 配置文件
在旧服务器上,找到 Nginx 的配置文件目录(通常为/etc/nginx/nginx.conf
和/etc/nginx/conf.d/
),将相关配置文件复制到新服务器上:
scp /etc/nginx/nginx.conf user@new_server:/etc/nginx/
scp /etc/nginx/conf.d/* user@new_server:/etc/nginx/conf.d/
- 调整新服务器上的 Nginx 配置
在新服务器上,根据实际环境调整 Nginx 配置文件:- 更新监听的 IP 地址和端口号(如果需要)。
- 修改反向代理的后端服务地址,确保其指向正确的容器服务地址。
- 检查 SSL 证书配置,如果使用了 HTTPS,确保证书文件已正确安装在新服务器上,并更新配置文件中的证书路径。
- 启动 Nginx 服务
完成配置调整后,在新服务器上启动 Nginx 服务:
sudo systemctl start nginx
检查 Nginx 服务状态,确保其正常运行:
sudo systemctl status nginx
(五)Jenkins Pipeline 配置
- 更新 Jenkins 节点配置
在 Jenkins 中,更新新服务器节点的配置,确保其能够正常连接到新服务器并执行构建任务。 - 修改 Pipeline 脚本
根据新服务器的环境,修改 Pipeline 脚本中的相关配置,如镜像仓库地址、容器运行参数、部署路径等。 - 测试 Pipeline
在 Jenkins 中触发一次 Pipeline 构建,验证应用是否能够成功构建、部署并在新服务器上运行。
(六)测试与验证
- 功能测试
在新服务器上对迁移后的应用进行全面的功能测试,确保所有功能正常。 - 性能测试
进行性能测试,确保应用在新服务器上的性能满足业务需求。 - 用户测试(可选)
邀请部分用户进行测试,收集反馈,确保用户体验良好。
(七)切换流量
- 更新 DNS 记录
在确认新服务器上的应用运行正常后,将域名的 DNS 记录更新为新服务器的 IP 地址或负载均衡器的域名,将用户流量切换至新服务器。 - 监控与回滚(可选)
在切换流量后,密切监控应用的运行状态和用户反馈。如果发现问题,及时回滚至旧服务器。
三、注意事项
- 在迁移过程中,应提前备份重要数据,如数据库、配置文件等,以防止数据丢失。
- 与团队成员和相关利益者保持沟通,及时通报迁移进度和可能出现的问题。
- 根据实际情况,可以考虑采用蓝绿部署、金丝雀发布等策略,以减少迁移风险和对用户的影响。