作者与团队
王志雷,火山引擎存储&数据库解决方案架构师,专注于存储&数据库产品的解决方案规划、设计和拓展工作。
贾伟力,火山引擎存储&数据库解决方案架构师,专注于存储&数据库产品的解决方案规划、设计和拓展工作。
火山引擎存储&数据库解决方案团队,由资深的存储&数据库解决方案架构师组成。团队致力于帮助企业与组织更好的使用火山引擎云存储与云数据库产品,针对实际业务场景设计最优的解决方案,用专业技术助力组织和企业实现业务成功。
前文中为您介绍了火山引擎上云迁移的背景、迁移方案、流程等信息,详细说明请参考火山引擎上云迁移指南(一):上云迁移背景。本文将从云上网络改造、应用迁移、存储迁移、中间件迁移和数据库迁移等部分为您介绍上云迁移的实施流程。
云上网络改造
云上网络规划
火山引擎提供私有网络VPC、公网 IP、NAT 网关、VPN 网关、专线、负载均衡CLB、云企业网CEN等网络产品,支持用户搭建基于网络的信息系统。
迁移方法
网络拓扑迁移的主要方法是将原环境中系统的全部网络拓扑结构梳理清楚,在火山引擎的网络环境中将网络拓扑结构进行重建。
在迁移过程中主要涉及到在火山引擎上创建原环境中包含的网络资源,再在火山引擎上进行规划和配置,使火山引擎上的网络环境满足用户系统运行的需要。
云上网络架构设计原则
- 火山引擎采用VPC组网,划分多个VPC,将不同业务网络隔离开,例如生产主备环境、开发测试环境彼此处于不同VPC。
- 业务涉及本地IDC与火山引擎互通时,对数据传输安全和性能有要求,可以使用物理专线或VPN服务,构成混合云组网。
网络安全配置
在完成网络拓扑迁移之后,根据用户的安全需求可在火山引擎上对网络安全进行优化,提升系统的安全性。火山引擎上提供的网络安全产品主要包括 DDoS 、WAF、IP 高防、网络 ACL、安全组、云堡垒机和云安全中心。
应用迁移
客户业务应用通常部署物理机、虚拟机和容器上,应用的上云和跨云迁移可以通过迁移物理机、虚拟机和容器实现应用的迁移。
云主机迁移
主机迁移服务是一种P2V/V2V迁移服务,可以帮您把X86物理服务器或者私有云、公有云平台上的虚拟机迁移到火山引擎云服务器上,从而帮助您轻松地把服务器上的应用和数据迁移到火山引擎。 云主机数据涉及两部分:系统镜像盘和数据盘的迁移。此外,火山引擎即将上线服务器迁移工具,帮助您快速完成服务器的迁移,敬请期待。
迁移系统镜像盘
-
系统镜像重新部署:各云厂商的cloudinit的脚本不同,故云厂商的镜像很难实现通用,建议采用重新部署或DeVops推送的方式在火山引擎重新部署系统镜像。
-
制作自定义系统镜像:对于某些旧版本操作系统且无法进行操作系统升级,或当前应用、代码无人维护,无法采用重新部署的方式构建应用,可以通过制作自定义镜像方式部署应用。
迁移数据盘
推荐使用开源工具进行数据盘的迁移。
-
Linux平台:Linux平台推荐使用rsync工具迁移,详细的描述参考文件存储迁移章节描述。
-
Windows平台:Windows推荐使用Robocopy工具迁移。
容器迁移
迁移场景
全栈迁云架构思路分两种:一种是整体迁移,一种是平滑迁移。这两种方式相比,整体迁移更简单,平滑迁移响度复杂但对业务影响小,所以也需要根据您的实际场景做选择。您也可以参考火山引擎云原生迁移解决方案完成容器上云。
-
整体迁移:应用全部迁移上云后,各个组件调试完毕、测试验收通过后,可以整体切换生产流量到线上集群,待线上集群上的业务稳定运行一段时间后再下线原有环境。
-
平滑迁移:可以使用线上容器服务 VKE 集群与线下集群混合组网对外提供服务,逐步改造业务组件上云后将原有环境下线。
迁移流程
将自建IDC或者其他公有云Kubernetes集群平滑迁移到火山引擎Kubernetes,总体上分为3个阶段:
- 准备工作:火山引擎准备环境和迁移环境检查,提前暴露迁移可能存在的潜在风险;
- 应用迁移:将应用及其数据和涉及到的镜像文件迁移到新的集群中;
- 流量切换:这一阶段决定了如何将线上流量导入到新建的集群中,并使用新建的集群为用户提供服务。
具体步骤如下:
-
准备工作
提前在火山引擎控制台中创建创建托管版集群。详细说明请参考创建集群。
-
应用迁移
在数据搬迁部分,可靠迁移是关键。根据数据类型的不同,我们会使用与之匹配的企业级迁移工具。
- 镜像迁移:
-
通过手动/迁移脚本进行存量镜像迁移至火山引擎镜像仓库。迁移过程中新版本镜像建议使用CICD自动推送至CR。
-
将容器镜像批量迁移至容器镜像仓库服务。
-
- 应用配置迁移。运维或者研发人员基于velero工具完成集群或者应用配置迁移。
-
流量切换
流量迁移是集群迁移中十分重要的环节,在客户停机时间窗内,数据、应用迁云完成后,需要进一步适配监控、日志等组件,待各个组件调试完毕通过验收后,可以使用智能 DNS 进行生产流量的切割。
存储迁移
文件存储迁移
在线迁移服务:文件存储迁移服务
即将上线,敬请期待。
开源迁移工具:rsync
- 工具简介 rsync(remote synchronize)是Liunx/Unix下的一个远程数据同步工具。它可通过LAN/WAN快速同步多台主机间的文件和目录,并适当利用rsync算法(差分编码)以减少数据的传输,rsync算法并不是每一次都整份传输,而是只传输两个文件的不同部分。
- 源端支持场景
- Linux本地文件系统
- NFS文件
- 第三方云NAS
- 迁移流程
- 工具优势
-
保留源文件、目录属性(用户组、读写权限等)
-
镜像保存整个目录树和文件系统
-
rysnc在传输的过程中可以实行压缩及解压缩操作,可以使用更少的带宽
-
- 适用场景
-
适合公网网络场景的迁移。
-
适合大文件场景的迁移。
-
其他文件迁移工具
rsync迁移受限于单并发,导致在小文件场景迁移的带宽较小,下面介绍两款基于rsync拆分目录的开源软件(fpsync和msrsync)和rclone工具,能够提高迁移并发度,从而提高迁移的带宽。这几款工具适合在火山引擎VPC网络场景的迁移,可以最大限度的利用网络带宽资源。
-
fpsync
fpsync 工具使用 fpart 和 rsync 命令并行同步目录。fpsync 工具可以在本地运行多个 rsync 流程,或通过 SSH 在多个节点(工作线程)上启动 rsync 传输。
-
msrsync
msrsync 将源目录分解成独立的“桶”,然后针对每个桶运行单个 rsync 进程。旨在通过运行多个并行 rsync 进程来优化带宽的使用。
-
rclone
rclone是一个命令行程序,用于管理云存储上的文件。它是云供应商Web存储界面的功能丰富的替代方案。超过40种云存储产品支持rclone,包括S3对象存储,业务和消费者文件存储服务以及标准传输协议。
-
文件迁移工具对比
并发迁移 跨主机迁移 增量迁移 文件权限迁移 文件迁移过滤 源端删除文件是否同步 断点续传 rsync 不支持 支持 支持 支持 支持 支持 支持 fpsync 支持 支持 支持 支持 支持 支持 支持 msrsync 支持 不支持 支持 支持 支持 不支持 支持 rclone 支持 支持 支持 不支持 支持 支持 支持
对象存储迁移
火山引擎对象存储TOS(Tinder Object Storage)是火山引擎提供的海量、安全、低成本、易用、高可靠、高可用的分布式云存储服务。您可以通过RESTful API接口、SDK和工具等多种形式使用火山引擎TOS。通过网络,您可以在任何应用、任何时间、任何地点管理和访问火山引擎TOS上的数据。
在线迁移服务:存储迁移服务
-
服务简介
火山引擎存储迁移服务是一个线上存储迁移服务,可以帮助您将其他云服务商对象存储服务的数据在线迁移至火山引擎对象存储TOS中。
-
源端支持场景
- 阿里云
- 腾讯云
- 华为云
- 其他S3协议对象存储
- 对象存储-火山引擎
-
迁移流程
-
产品优势
- 简单易用:提供GUI界面操作,使用简单
- 安全认证:采用AK/SK的鉴权方式,避免数据被盗用
- 安全传输:支持通过https加密传输数据,确保数据传输过程中的安全
离线迁移服务:数据闪送
-
服务简介
数据闪送是火山引擎提供的安全、高效、便捷的数据迁移服务。通过定制化的迁移设备,实现TB到PB级别的本地数据迁移上云。致力于解决大规模数据传输效率、安全问题等难题。当本地机房带宽较小或无公网时,可通过离线迁移服务将数据迁移至火山引擎TOS。
-
源端支持场景
- Linux本地文件系统
- NFS文件
- 兼容S3协议的文件
-
迁移流程
-
产品优势
- 扩展灵活,低成本
- 部署方便
- 安全可靠
-
适用场景
- 本地IDC文件迁移上云
- 迁移大容量数据场景
开源迁移工具:rclone
-
工具简介
rclone是一款开源远程数据同步工具。后端支持文件系统以及多种类型的对象存储产品。rclone支持40多种云存储产品,包括对象存储、企业和消费者文件存储、服务以及标准传输协议。
-
源端支持场景
- S3对象存储
- NFS
- HDFS
- Linux本地文件系统
-
迁移流程
-
工具优势
- 迁移效率快:支持多文件并发和单文件并发传输
- 增量迁移:支持增量数据迁移,减少数据传输量和缩短停机时间窗
- 网络兼容好:支持公网、专线和VPN网络
- 断点续传:网络故障异常断开恢复后支持断点续传
-
适用场景
- 本地IDC文件迁移上云
- 迁移网络支持公网和专线
- 迁移源端方式支持IP和域名
中间件迁移
云搜索服务:ElasticSearch
ElasticSearch快照迁移方案
-
方案简介
基于 TOS 快照的迁移方式是使用 ElasticSearch 的 snapshot API 接口进行迁移,基本原理就是从源 ElasticSearch 集群创建索引快照,然后在目标 ElasticSearch 集群中进行恢复。ElasticSearch 快照是增量模式,每次快照都是相比上一次快照的增量数据,通过这种方式可以尽量缩短停机时间。
-
应用场景
- ElasticSearch同版本或者低版本向高版本迁移场景
- 数据量大(TB级别,且要求停机时间窗的)
-
迁移流程
-
方案优点
- 停业务时间短:快照是增量创建,每次快照都是新增数据,可以不断的迁移增量快照数据
- 迁移效率快:基于对象存储的迁移,迁移速率最高几百兆带宽
Logstash迁移方案
-
方案简介
logstash 支持从一个 ElasticSearch 集群中读取数据然后写入到另一个 ElasticSearch 集群,因此可以使用 logstash 进行数据迁移。
-
应用场景:ElasticSearch跨版本迁移场景
-
迁移流程
-
方案优点
- 迁移源端和目标端版本兼容性广
- 支持按照时间点的迁移
日志服务:TLS(Tinder Log Service)
-
方案简介
日志服务数据通常有保留期限,超过期限就会投递到对象存储归档,日志数据的迁移通过把对象存储中的数据迁移到火山引擎TOS,然后再把TOS的数据恢复到火山引擎的TLS,整个数据迁移过程依赖火山引擎DMS或者开源工具rclone完成日志数据的迁移和火山引擎tls-import完成日志数据的恢复。
-
迁移流程
-
方案优点
- 支持日志服务历史归档数据和实时数据的迁移
- TLS的数据恢复支持指定时间点的数据
消息队列:Kafka
您也可以参考Kafka业务迁移,将自建 Kafka 集群或其他云厂商 Kafka 集群平滑迁移至火山引擎消息队列 Kafka版。
-
方案简介 MirrorMaker是Kafka官方提供的用来做跨机房同步的组件。在kafka的安装目录的bin目录下有一个kafka-mirror-maker.sh文件就是MirrorMaker的入口。MirrorMaker本质上既是一个生产者又是一个消费者,MirrorMaker从一个源端Kafka的某个主题消费消息,再把消费到的消息投递到目标端Kafka的相同的主题下。
-
迁移流程
-
方案优势:支持Kafka消息数据的迁移
消息队列:RocketMQ
您也可以参考RocketMQ业务迁移,将自建 RocketMQ 集群或其他云厂商 RocketMQ 集群平滑迁移至火山引擎消息队列 RocketMQ版。
-
方案简介
针对消息队列RocketMQ,数据信息包含两部分:元数据和消息数据,元数据是指topic、group的配置信息;消息数据是指业务投递的消息,RocketMQ迁移仅需要迁移元数据信息,消息数据消费完成即可。
-
迁移流程
-
方案优势
- 元数据信息可以提前在火山引擎配置
- 停机时间短
-
适用场景
- 仅支持用户自建的RocketMQ,云服务厂商提供的RocketMQ服务不支持导出元数据
- 仅支持RocketMQ元数据迁移,不支持RocketMQ消息迁移
消息队列:RabbitMQ
您也可以参考RabbitMQ业务迁移,将自建 RabbitMQ 集群或其他云厂商 RabbitMQ 集群平滑迁移至火山引擎消息队列 RabbitMQ版。
-
方案简介
针对消息队列RabbitMQ,数据信息包含两部分:元数据和消息数据,元数据是指exchange、vhost、queue的配置信息;消息数据是指业务投递的消息,RabbitMQ迁移仅需要迁移元数据信息,消息数据消费完成即可。
-
迁移流程
-
方案优势:元数据信息可以提前在火山引擎配置
数据库迁移
数据库迁移工具:DTS
-
DTS简介
火山引擎数据库传输服务 DTS(Database Transmission Service)提供了数据迁移、数据订阅于一体的数据库数据传输管理服务,支持关系型数据库、非关系型数据库数据源间的数据传输,降低数据库之间数据流通复杂性,可在业务不停服的前提下轻松完成数据库迁移上云。
-
DTS 应用场景
- 适用范围广:支持MySQL、PostgreSQL、Redis和MongoDB等
- 接入方式多样性:火山引擎云实例、火山引擎ECS自建数据库和具有公网IP的数据库
- 适用多种网络:公网、专线、VPN
-
迁移流程
-
工具优势
- 场景丰富多样
- 支持多种数据库引擎迁移,迁移过程引起的业务中断时间窗口缩短至分钟级
- 支持多种网络环境下的数据传输
- 操作简便可视
- 提供可视化管理界面,提供向导式任务配置,客户可以轻松完成数据迁移
- 迁移进度量化展示,控制台显示全量迁移百分比和增量迁移数据延迟时间
- 数据安全可靠
- 实例高可用,节点具备高度的恢复和治愈能力,秒级恢复
- 支持断点续传,链路异常中断恢复正常后,能够自动追加中断时间段的数据
- 场景丰富多样
Redis备份恢复迁移
-
方案简介
某些云厂商的云Redis服务禁用了sync和psync命令,这就导致依赖该命令的不停机迁移方案场景使用受限。同时各个云厂商针对Redis提供了备份恢复功能,可以下载rdb的备份文件,基于rdb的备份数据在火山引擎恢复数据到Redis,大部分Redis作为缓存使用,容量相比关系型数据库小了许多,使用备份恢复停机的方案迁移耗时也不会太久。
-
迁移流程
-
迁移优势
- 适用场景广,支持自建Redis和各个云厂商Redis服务
- 数据恢复效率快
SQL Server备份恢复迁移
-
方案简介 SQL Server备份方式支持多种方法:全量备份、差异备份和事务日志备份,全量备份和差异备份恢复的时候只能恢复到备份的时间点,事务日志备份可以恢复到备份数据中的任意时间点。
-
迁移流程
-
迁移优势
- 支持增量迁移,业务割接停机时间短
- 数据恢复效率快
总结与展望
本文主要介绍了上云迁移的通用步骤与方法论,火山引擎提供的云产品以及相关迁移工具。总的来说,上云迁移是一个系统性的工程,需要有业务人员与技术人员一起配合进行业务梳理、迁移流程规划、云上架构设计、迁移分工,选择合适的迁移工具并制定适合业务特点的迁移方案,尽可能在迁移实施之前把可能存在的风险点及应对措施梳理出来,并进行实际的演练测试,这样可以最大限度的降低迁移对业务带来的影响。
上云不是终点,上云只是起点。企业与组织的业务应用部署上火山引擎之后,可以借助火山引擎提供的强大能力与丰富的产品矩阵进行不断地架构与应用优化,提高业务效率并降低整体IT成本。未来火山引擎会陆续推出更多的迁移工具以及云服务,帮助使用者更加便捷高效的将不同组件和数据迁移上云,敬请期待。