迁移心得
作为公司降本增效项目的核心成员,负责完成了公有云全栈资源优化工程。在历时数月的迁移实践中,成功实施阿里云迁移腾讯云。
方案了涵盖IaaS、PaaS层的完整解决方案:
- 基础设施:云主机集群迁移、专线网络打通
- 容器云:整体业务迁移
- 数据服务迁移:MySQL高可用集群、MongoDB集群、ClickHouse数仓、Kafka消息队列、Redis缓存
- 监控告警:解决容器日志持久化、监控基础设施与中间件
- 通过系统的性能基准测试
- 业务灰度:负载均衡配置、DNS解析百分比灰度
基础设施
linux 迁移
在腾讯云中,云服务器菜单页面有服务器迁移功能,它通过在linux中安装插件,可以实现不断业务的情况下把生产linux机器迁移成镜像到腾讯云中,后续只需要修改IP之类少量配置就可以把服务部署到公有云中。
专线网络打通
在数据迁移过程中,公网传输存在显著安全隐患。为确保数据安全,建议采用以下专线连接方案:
- 专线服务购买
- 联系腾讯云购买"敏捷上云"或"云联网"服务
- 同时需向阿里云购买"高速通道"服务
- 费用说明:需支付腾讯云和阿里云两方的专线费用
- 专线部署流程
- 工程师将在阿里云与腾讯云机房之间部署物理专线
- 配置专线IP并通过路由实现网络互通
- 网络配置要点
- 腾讯云侧(云联网):需配置阿里云VPC路由
- 阿里云侧(高速通道):需配置腾讯云VPC路由
- 完成配置后,网络互通将为后续数据迁移和灰度发布奠定基础
特别说明: 此配置过程较为复杂,建议直接联系腾讯云二线支持团队,通过远程会议方式获取专业配置协助。
容器云
腾讯云容器服务使用指南及与阿里云的对比分析
- 容器服务配置要点
- 基础架构配置:
- 都需购买容器云集群
- 都需要预先规划网络
- 都需要配置节点池进行资源管理
- 网络接入方案:
- 业务采用Ingress绑定的方式对外暴露服务
- 所有外部请求统一通过Gateway网关接入
- 基础架构配置:
- 与阿里云的功能对比
- 主要差异点:
- 腾讯云Ingress暂不支持ALB(应用型负载均衡)
- 缺乏LB复用能力,每个CLB每小时收费0.2元,成本增加
- 功能限制:
- 由于用的CLB不是Nginx,所以不支持Nginx常见的转发规则(如rewrite-target等)
- 每个CLB需要单独配置域名证书(Secret),步骤繁琐
- 默认配置不佳,可能会引起意想不到的问题,需要看手册解决(遇到过上传文件就是失败,后经排查发现CLB client_max_body_size 有限制)
- 主要差异点:
- 使用注意事项
- 配置优化建议:
- 注意CLB的默认配置可能不满足业务需求,建议根据实际业务场景进行个性化配置调整
(注:本说明基于当前腾讯云产品版本,具体功能以官方最新文档为准)
- 注意CLB的默认配置可能不满足业务需求,建议根据实际业务场景进行个性化配置调整
- 配置优化建议:
数据服务迁移
MySQL 迁移
在阿里云上使用的是PolarDB数据库,而腾讯云对应的产品是TDSQL-C。两个平台都提供了数据迁移工具,可以根据实际情况选择使用腾讯云或阿里云的工具进行迁移。在性能方面,TDSQL-C略逊于PolarDB,使用时需要通过单独配置数据库代理来实现IP访问。
就读写分离功能而言,两者的实现方式大同小异。不过在安全管控方面,腾讯云的方案略显不足:阿里云支持为服务单独配置白名单,而腾讯云采用安全组绑定机制,长期使用后容易因安全组过多而导致管理混乱。
在进行数据迁移时,建议采用增量迁移模式。迁移完成后,不要立即关闭任务,这样系统可以持续同步增量数据,确保数据一致性。
同时,建议将数据库结构、完整数据及用户密码一并迁移,以最大程度保障业务的连续性和完整性。这种方案能有效减少迁移过程中的数据丢失风险,并确保新环境快速投入使用。
MongoDB 迁移
MongoDB存储内部业务数据,采用数据迁移工具实现平滑过渡。迁移过程将在灰度环境验证后,通过一次性切换完成,确保数据完整性和服务连续性。
Redis 迁移
Redis缓存及内存数据将使用专用迁移工具进行转移。同样采用灰度验证机制,最终执行一次性切换,最大限度减少对线上服务的影响。
Clickhouse数仓迁移
采用存算分离架构的ClickHouse数据仓库,需腾讯云原生企业版白名单支持。迁移方案:
- 开发团队通过remote方式拉取数据
- 按天分批迁移数据
- 允许极小比例的数据丢失(在可接受范围内)
- 该方案在保证迁移效率的同时,兼顾系统稳定性,特别适合大数据分析场景的平滑过渡。
Kafka消息队列
Kafka的核心功能在于消息消费,其设计理念遵循"最多一次"的交付语义,允许在极端情况下容忍消息丢失。在实际部署时,需要预先完成以下关键配置:
kafka迁移过程:
- 关闭自动创建Tpoic,手动创建指定Topic,建议设置合理的分区数和副本因子
- 开启消费者自动创建消费组
- 根据业务设置kafka消息过期时间
监控告警
日志
日志采集配置指南
- 前期准备
- 在容器集群中完成运维组件中日志插件的安装部署
- 登录腾讯云控制台中容器云平台,创建日志采集规则
- 采集范围配置 可根据实际需求选择以下采集模式:
- 指定容器采集
- 指定命名空间采集
- 按Pod Label筛选采集
- 日志格式解析
- 推荐采用多行完全正则提取模式
腾讯云提供了一个叫 Datasight 的前端页面用于访问日志服务,这一点比较好,这样不需要给开发同事创建公有云账号与权限管控
监控
通过腾讯云可观测平台订阅Prometheus监控服务后,可利用平台的集成中心功能,将腾讯云原生支持的MySQL、Redis、Kafka等中间件监控指标统一接入,实现集中化的告警配置管理。
性能
云主机CPU选型指南:阿里云与腾讯云性能型号解析
在选购Linux云主机或容器云节点时,CPU型号的选择直接影响业务性能表现。经过生产环境验证,我们发现主流云厂商的CPU型号可划分为不同性能等级,需要特别注意区分。
阿里云ECS实例提供多种CPU型号选择,关键性能型号包括:
- C9I:最新一代计算优化型实例,提供卓越的单核性能
- C1M:内存优化型实例,适合内存密集型应用
- G8Y:通用型实例,平衡计算与内存资源
- C8Y:计算优化型实例,适合计算密集型工作负载
腾讯云CVM实例的CPU型号选择同样需要关注:
- SA9:标准型实例,均衡性能表现
- S9:计算优化型实例,高主频特性
- SA9E:增强型标准实例,性能更优
选型建议:根据业务负载特性选择对应型号,建议通过基准测试验证实际性能表现。
业务灰度
业务灰度迁移方案详解:
- 环境准备阶段
- 在专线网络环境下,预先将双方服务的数据库地址配置为腾讯云地址
- 采用分库迁移策略,保持增量数据迁移服务持续运行
- 静默切换流程
- 选择业务低峰期执行以下操作:
- 更新配置文件至腾讯云地址(暂不重启服务)
- 将阿里云数据库账号权限调整为迁移库只读
- 立即重启阿里云与腾讯云服务集群
*注:此过程会产生秒级业务中断,预计数据丢失窗口控制在数十秒内
- 选择业务低峰期执行以下操作:
- 流量调度阶段
- 服务恢复后,通过公网DNS权重调整实现流量分配:
- 腾讯云承接10%业务流量
- 阿里云维持90%业务流量
- 执行压力测试验证系统稳定性
*注:如果直接切换100%流量,业务要两边服务同时存在,因为公用云DNS的TTL时间,偏远地区可能2周内才会全部完成。
- 服务恢复后,通过公网DNS权重调整实现流量分配:
- 最终迁移
- 经测试验证后,逐步将流量100%切换至腾讯云
- 按数据库分库维度实施批次迁移
在完成数据库迁移后,对于 redis 与 mongo 的迁移,我们是通过一次性割接完成切换的。