
# 应用层迁移实施
- **主机迁移**
  主机迁移是典型的Rehost迁移方式，虽然主机（服务器）上可以承载各种系统应用如Nginx代理、数据库、容器、中间件、大数据等，但由于数据库/中间件/大数据等应用是以数据为核心，对于这类数据层面的迁移我们通常会采用独立的数据迁移方式而非主机迁移，这里讲的主机迁移对应的迁移层级为应用和操作系统。主机迁移的方式主要有以下三种：
  表1三种主机迁移方式说明 
  | **主机**    | **迁移方式**    | **适用场景**        | **备注**        |
  |:---|:---|:---|:---|
  | 虚拟机/物理机迁移 | 重新部署        | OS可变，停机时间长      | -             |
  | 虚拟机/物理机迁移 | SMS工具迁移（免费） | OS不变，版本一致，停机时间短 | 优先推荐，华为云有技术支持 |
  | 虚拟机/物理机迁移 | 镜像导入/导出     | OS不变，版本一致，停机时间长 | -             |
     
  

- **重新部署：**针对公有云的平迁方式的应用上云场景，我们建议使用CI/CD流水线构建自动化平台，然后在云上重新部署应用。
- **SMS工具迁移：** 是一种P2V/V2V迁移服务，可以帮您把X86物理服务器或者私有云、公有云平台上的虚拟机迁移到华为云弹性云服务器上，从而帮助您轻松地把服务器上的应用和数据迁移到华为云，主机迁移服务工作原理如下图所示：
  图1SMS迁移过程   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002146430558.png "点击放大")
  主机迁移服务的安全传输原理指的是：源端服务器中的迁移Agent从主机迁移服务获取到迁移指令后，会动态生成安全证书和密钥并且通过华为云OpenStack 元数据管理服务传输给目的端服务器，此后，源端服务器和目的端服务器会重启并使用新生成的动态安全证书建立安全的SSL通道。SMS主机迁移过程中，无需中断或者停止业务，只需在"持续同步"状态时，启动目的端前停止业务，大大减少业务中断时间。关于主机迁移服务的更多详细信息，请参考[SMS主机迁移服务](https://support.huaweicloud.com/sms/index.html)。
  
- **镜像导入/导出：** 主机迁移也可利用华为云自主研发的镜像服务（Image Management Service，IMS）的导入功能，通过已有的云服务器或使用外部镜像文件创建私有镜像，将已有的业务云镜像导入到云平台，方便企业业务迁移与业务的批量部署，实现业务上云或云上迁移。
  图2镜像导出导入方案   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002181784809.png "点击放大")
  在源端与目标端无法通过网络使用SMS主机迁移服务进行整机迁移时，可以使用IMS镜像服务进行整机迁移。将源端服务器的系统盘和数据盘分别制作私有镜像，上传至华为云OBS对象存储服务中，在IMS镜像服务中，使用上传的外部镜像文件制作成私有镜像，最后使用私有镜像发放云服务器，完成整机迁移。迁移后的主机操作系统、系统配置，数据文件与源端服务器完全一致。关于主机迁移服务的更多详细信息，请参考[IMS帮助文档](https://support.huaweicloud.com/ims/index.html)。
  

- **容器迁移**
  容器是操作系统内核自带能力，是基于Linux内核实现的轻量级高性能资源隔离机制。Kubernetes是一个开源的容器编排部署管理平台，用于管理云平台中多个主机上的容器化应用。Kubernetes的目标是让部署容器化的应用简单并且高效，Kubernetes提供了应用部署、规划、更新、维护的一种机制。对应用开发者而言，可以把Kubernetes看成一个集群操作系统。Kubernetes提供服务发现、伸缩、负载均衡、自愈甚至选举等功能，让开发者从基础设施相关配置等解脱出来。
  华为云容器引擎（Cloud Container Engine，CCE）提供高度可扩展的、高性能的企业级Kubernetes集群，支持运行Docker容器。借助云容器引擎，您可以在华为云上轻松部署、管理和扩展容器化应用程序。CCE是基于开源Kubernetes的企业级容器服务，提供高可靠高性能的企业级容器应用管理服务，支持Kubernetes社区原生应用和工具，简化云上自动化容器运行环境搭建。
  您可以通过CCE控制台、Kubectl命令行、Kubernetes API使用[华为云容器引擎](https://support.huaweicloud.com/cce/index.html)所提供的Kubernetes托管服务。
  这里的容器迁移指的是将其它云上的容器集群应用迁移至华为云CCE为例来讲解。总体迁移方案如下图所示。
  图3容器迁移方案   
  ![](https://support.huaweicloud.com/usermanual-caf/zh-cn_image_0000002177562353.png "点击放大")
  整体的容器镜像迁移步骤：
  1. 导出第三方集群上使用的容器镜像。
  
  2. 按照第三方容器镜像服务上的操作指南拉取镜像到客户端机器。
  
  3. 将导出的容器镜像文件上传到华为云SWR。
  
  4. 使用docker pull命令将镜像上传到华为云，具体操作方法请查看[推送镜像到镜像仓库像](https://support.huaweicloud.com/usermanual-swr/swr_01_0011.html)。
   
 
