年底了,公司启动了降本增效,其中的一项降本的方案就是云服务迁移合并降配。我梳理了一些服务端整理的文档模版。希望可以帮助大家少踩坑。
一、注册中心迁移(运维)
版本号:******
(注意版本号需要和迁移前的一致,避免跨大版本迁移,防止出现不必要的问题耽误进度)
文档地址:
二、服务代码改动项 (服务端)
(完全迁移前,代码部署分支全部用master-火山,tag 名称全部使用 火山后缀 )
服务名称 | MySQL | Redis | kafka | ES | nacos | cdn |
server | 有改动 | 有改动 | 有改动 | 有改动 | 有改动 | 有改动 |
三、NG域名切换
略
四、中间件具体改动内容 (服务端&运维)
(建议维持账号密码不变,仅变更地址。这样可无需处理项目中的加密账号密码数据。最大化减少项目代码的改动项)
服务名称 | 项目名称 | 旧地址 | 新地址 |
MySQL | sever-name | xxxxxxxxxxxx | xxxxxxxxxxxx |
Redis | sever-name | xxxxxxxxxxxx | xxxxxxxxxxxx |
kafka | sever-name | xxxxxxxxxxxx | xxxxxxxxxxxx |
ES | sever-name | xxxxxxxxxxxx | xxxxxxxxxxxx |
nacos | sever-name | 后台地址 服务注册IP地址 | xxxxxxxxxxxx |
xxljob | sever-name | xxxxxxxxxxxx | xxxxxxxxxxxx |
五、kafka-topic创建(服务端)
建议线上和test/dev/pre数据隔离
kafka实例地址(迁移前) | kafka实例地址(迁移后) | 服务名称 | TOPIC & group |
xxxxxxxxxxxx | xxxxxxxxxxxx | sever-name |
六、ES - index 创建(服务端)
建议线上和test/dev/pre数据隔离
实例地址 (迁移前) | 实例地址 (迁移后) | 服务名称 | index |
xxxxxx | xxxxxx | sever-name | index-name |
七、部署迁移中其余迁移项(运维)
jenkins迁移(运维)
跳板机迁移(运维)
日志桶迁移(运维)
waf-clb(运维)
八、图片文件相关(运维&服务端)
CDN迁移是个大问题,原来是阿里的文件服务器,现在要改成火山文件桶,两者差别很大,在此整理了如下风险项:
1、如何保证之前在项目中嵌入的阿里云文件地址全部变更到火山。
2、如何保证数据库中存储的大量历史数据的正常访问,图片文件地址目前入库的都是阿里的cdn地址。
3、之前已经发版的App已经内嵌了阿里的文件上传SDK,如何保证阿里CDN完全放弃后这部分用户的使用。
九、服务端迁移流程(运维&服务端)
- 配置新库(MySQL+ redis + kafka + es)。
- es增量同步,云服务无方案的话可自己搭建监听。
- 开始数据全量同步+增量实时同步。
- 检查数据同步结果是否正常,检查增量数据是否正常。
- 服务端拉新分支,处理代码改动项;
- 搭建 jenkins ,保证项目能启动成功。
- 配置跳板机,保证能拿到启动日志和日常日志。
- 准备中间件
- 搭建nacos ;
- 搭建xxljob;
- 准备项目部署(层级倒序部署)
- 检查代码配置。
- 检查服务间网络通畅,中间是否通畅。
- 开始部署项目
- 检查服务心跳
- 检查服务注册
- 检查服务日志
- 切换ng流量
- 检查页面是否正常展示
- 检查图片能否正常展示
- 检查服务日志
- 检查定时任务
- 检查消息消费
- 抽查页面功能性
- 检查文件和图片相关上传
十、finally
- 通知数据老师变更数据源。(服务端)