阿里云应用迁移步骤
数据和应用从原始服务器迁移到云端
成型后的服务器架构大概如下:
- 负载均衡 - 服务器集群 - MySQL集群 - Redis集群
- 其中服务器集群: 原始服务器(仅做异步任务, 日志收集等), 其他多台高配置服务器对外提供服务
- 服务集群可一键添加新服务器(不停机)
- MySQL读写分离, 也可一键添加新服务器(不停机)
- Redis读写分离, 也可一键添加新的分片(不停机)
- 海外加速(负载均衡)
测试负载均衡对应用的影响
- 购买负载均衡, 将测试域名test.abc.com, 和正式域名api.abc.com配置到负载均衡中, ssl设置正确
- 购买按量付费服务器, 搭建应用, 应用设置正确, 此时数据库连接原始的测试服数据, redis使用本地
- 将测试域名指向负载均衡, 负载均衡转发到这个按量付费的服务器中
- 测试所有功能是否正常, 特别是支付, 分享, 注意涉及到ip白名单的接口
- 直到所有功能正常运行
在负载均衡中测试
- 按数据迁移步骤, 迁移测试数据库到云端
- 修改测试配置, MySQL+redis都使用云端测试数据库
- 测试是否正常(一般都正常)
- 此时测试服使用的是: 云服务器+云MySQL集群+云Redis集群, 到此步骤说明架构和程序都没问题, 接下来开始正式迁移
数据迁移
- 修改原始服务器的env的redis配置到云端, 重启应用, 同步access_token缓存
- 设置全量迁移到最后一步, 不启动
- 关闭api, 重启应用
- 执行全量迁移程序(阿里云数据迁移程序)并执行全量校验(3分钟)
- 修改env配置, 将MySQL地址修改成云数据库, 清空配置缓存
- 打开api, 重启应用服务器
- 此时原始服务器的redis+MySQL都使用了云端
制作镜像
- 测试服删掉所有测试文件, 上传正式文件, 特别是前端文件
- 修改env, 连接正式的MySQL数据库名, 正式的Redis, 其他配置都和正式服一样
- 注意在env中开启异步日志
- 阿里云后端制作正式镜像
- 在负载均衡中的服务器组中移除此服务器
- 关闭这个按量付费的测试服务器
新购高配置服务器作为集群的主服务器
- 新购高配置服务器, 镜像选择刚刚做的镜像
- 将新服务器加入到负载均衡的服务器组中
- 到此时, 有两台服务器运行: 新购的高配置服务器 和 原始服务器, 且都配置了云数据库, 云redis
- 但正式域名还只实指向始服务器, 新的高配置服务器没使用
负载均衡设置
- 配置全球加速GA
- 修改正式域名的别名解析到负载均衡DNS中
- 等待dns全部生效(2小时左右), 此时两台服务器都会被正式域名解析到, 直到正式域名100%解析到负载均衡DNS中
- 原始服务器不提供对外服务, 仅作为异步任务处理服务器
配置弹性伸缩
- 开启并配置弹性伸缩
- 将镜像设置成我们制作的镜像
- 将负载均衡关联到弹性伸缩中
- 测试新增1台弹性伸缩实例, 观察负载均衡是否将流量导入到新增的弹性伸缩服务器中
- 观察日志是否正常
其他配置
- 配置负载均衡http强制跳转https
- 配置负载均衡指定api地址强制导入到主服务器中, 主要第三方api有可能会有ip白名单限制, 这样新增服务器就不必设置白名单了
数据和应用从云端迁移到原始服务器
云服务关闭到只剩一台, 外加一台原始服务器, 将云服务器的数据迁移到原始服务器
- 设置全量迁移到最后一步, 不启动
- 关闭两台api, 重启应用
- 执行全量迁移程序并执行全量校验(3分钟)
- 修改两台env配置, 将MySQL地址修改成目标服务器, 清空配置缓存
- 打开两台api, 重启应用服务器
- 修改dns解析到本机
- 等待dns全部生效(2小时左右)
- 修改目标服务器的env的redis配置到本机, 重启应用
最后更新于 2026-05-23 19:29:03 并被添加「」标签,已有 39 位童鞋阅读过。
本站使用「署名 4.0 国际」创作共享协议,可自由转载、引用,但需署名作者且注明文章出处
此处评论已关闭