对传统工作负载进行现代化改造

本主题介绍如何将基于虚拟机的工作负载现代化改造为在 Google Kubernetes Engine (GKE)、GKE 集群或 Cloud Run 平台上运行的容器。您可以从在 VMware 或 Compute Engine 上运行的虚拟机迁移工作负载,这使您可以灵活地将现有工作负载容器化。

如需执行现代化改造(也称为迁移),您需要使用按照安装 Migrate to Containers 中的步骤创建的处理集群。

迁移工作负载的基本流程在受支持的工作负载类型中是相似的。工作负载类型之间存在一些差异,因此您需要在以下几个部分中确定工作负载类型,并查看相应的过程概览和每个步骤的详细信息。

支持的工作负载

迁移 Linux 虚拟机

迁移过程

下图演示了 Linux 工作负载的迁移步骤:

使用 Migrate to Containers 进行迁移的步骤图
  1. 添加迁移来源

    如需启动迁移,请配置一个来源,表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 迁移 Linux 数据

    选择是否要迁移数据。

  4. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  5. 执行迁移

    执行迁移以提取容器工件,包括容器映像和 Dockerfile。使用这些工件将容器部署到测试环境或生产环境。

  6. 监控迁移

    监控迁移进度并检查迁移活动日志。

  7. 删除迁移

    删除迁移以释放迁移使用的所有资源。

迁移 Windows IIS 应用

迁移过程

下图演示了 Windows 工作负载的迁移步骤:

使用 Migrate to Containers 进行迁移的步骤图

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    如需配置迁移,请配置一个来源,用于表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移计划

    使用初始迁移计划创建迁移对象。

  3. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  4. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  5. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  6. 构建 Windows 容器映像

    使用生成的工件构建一个 Windows 容器,然后部署到集群。

  7. 删除迁移

    删除迁移以释放迁移使用的所有资源。

支持的功能

Migrate to Containers:Windows 目前支持迁移 IIS .Net 框架网站。 您可以将站点拆分成多个单一用途的映像,也可以根据需要对其进行分组。

为了更好地指明可以在源虚拟机上迁移哪些网站,请尝试运行迁移中心发现客户端 CLI 离线评估

迁移 Tomcat 服务器

下图演示了 Tomcat 工作负载的迁移步骤:

使用 Migrate to Containers 进行迁移的步骤图

使用 Migrate to Containers 迁移 Tomcat 工作负载时,您可以利用 Tomcat 的功能和架构来执行以下操作:

  • 自动将应用的子集拆分到单独的容器中。
  • 保留来自来源虚拟机的 Tomcat 应用的现有密钥库、信任库和证书。
  • 动态确定 JVM 应用的最佳内存分配。
  • 从来源虚拟机复制特定的数据卷和数据卷声明。

前提条件

  • 基于 Linux 虚拟机的 Apache Tomcat 应用服务器 8.5 及更高版本。
  • 通过运行离线评估来确定工作负载是否适合迁移。
  • 为迁移 Linux 虚拟机配置 Cloud 集群。

迁移过程

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    如需配置迁移,请配置一个来源,用于表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 迁移 Tomcat 数据

    选择是否要迁移数据。

  4. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  5. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  6. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  7. 构建 Tomcat 容器映像

    使用生成的工件构建一个容器,然后将其部署到集群。

  8. 删除迁移

    删除迁移以释放迁移使用的所有资源。

不受支持的功能

不支持以下 Tomcat 功能:

  • 聚簇/会话复制

  • Windows 支持:针对使用 Windows 工作负载进行的 Tomcat 迁移。

迁移 WebSphere 传统版应用

迁移概览

IBM WebSphere Application Server (WAS) Traditional 是托管基于 Java 的工作负载的软件框架。借助 Migrate to Containers,您可以将在 WAS 传统应用中运行的应用工作负载转换为应用容器,从而实现其现代化改造。然后,您可以将应用容器部署到 GKE 集群或 Google Cloud 上的 GKE Enterprise 集群。

关于迁移 WebSphere Application Server traditional 应用

WAS 传统虚拟机可以包含多个应用。Migrate to Containers 可通过发现来源虚拟机中的已部署应用并自动建议现代化改造配置,帮助您自动将 WAS 应用现代化改造为容器。

Google 要求您将每个应用迁移到其自己的容器映像(ibmcom/websphere-traditionalibmcom/websphere-libertyopenliberty/open-liberty)。之后,您便可以单独测试和部署迁移后的应用,而不必一起测试和部署多个应用。

将 WAS 应用迁移到单个应用容器。

迁移来源可以基于 WAS ND 或 WAS。目标是 Liberty 或传统 WAS 基本容器,相应的 ND 聚簇功能将委托给 Kubernetes。

使用要求

查看以下系统要求,确认您的迁移和部署环境与 Migrate to Containers 兼容。

迁移 WAS 传统应用的要求

在开始迁移之前,请确保您的 IBM WAS 传统环境和迁移处理集群符合下述要求。

WAS 传统系统要求

Migrate to Containers 支持迁移托管在以下版本的 IBM WAS 上的应用:

  • WebSphere Application Server traditional 8.5.5.x
  • WebSphere Application Server traditional 9.0.5.x

为了能够处理包含 WAS 传统应用的虚拟机,Migrate to Containers 会从该虚拟机中提取两种类型的配置:

  • 每个应用的配置。

  • 目标配置文件的配置。配置文件定义 WAS 的运行时环境,包括端口、JVM 设置等。

Migrate to Containers 软件会自动使用 GKE Enterprise 或 GKE 集群中的 IBM WebSphere Application Server Migration Toolkit for Application Binaries 来发现、评估和生成迁移报告及配置脚本。您需自行负责该工具包的采购、许可和使用。

在开始迁移之前,您必须将该工具包上传到您账号中的 Google Cloud Storage 存储桶。关于此流程,请参阅设置 binaryAppScanner.jar

兼容的虚拟机操作系统

Migrate to Containers 支持从安装了兼容虚拟机操作系统中列出的 64 位 Linux 操作系统的虚拟机中迁移 WAS 传统应用。

处理集群要求

使用 Google Kubernetes Engine (GKE)GKE Enterprise 集群运行 Migrate to Containers 组件(这些组件负责执行将应用从来源虚拟机迁移到目标容器所需的转换)。对于 WAS 虚拟机中的应用:

处理集群必须使用兼容的处理集群操作系统中列出的 Linux 操作系统。

如需了解如何创建每种类型的处理集群,请参阅选择处理集群的类型

部署迁移后应用的要求

迁移应用后,请确保您的应用环境和目标集群满足下述要求。

目标集群要求

使用 Google Kubernetes Engine (GKE)、Google Cloud 上的 GKE Enterprise 集群或 Google Distributed Cloud Virtual for Bare Metal。目标集群必须使用兼容的工作负载集群操作系统中列出的 Linux 操作系统。

在执行迁移的过程中,Migrate to Containers 会创建一个代表迁移后的 WAS 应用的 Docker 映像,并将其上传到 Docker 注册表。您必须确保目标集群具有 Docker 注册表的读取权限(请参阅此处)。

支持的目标容器
  • WebSphere Application Server 传统版
  • WebSphere Application Server Liberty
  • Open Liberty

须知事项

在开始迁移之前,您必须先执行以下任务。

安装 Migrate to Containers

在处理集群上安装 Migrate to Containers。处理集群是安装了 Migrate to Containers 组件的 Google Kubernetes Engine (GKE)GKE Enterprise 集群,用于迁移虚拟机。如需查看所有安装说明,请参阅安装概览

(可选)安装 Migrate to Virtual Machines

如需使用 Migrate to Containers 将 Websphere 工作负载从 VMware 迁移到 Google Cloud,您必须安装 Migrate to Virtual Machines,以便处理传输。

如需了解详情,请参阅安装 Migrate to Virtual Machines

设置 binaryAppScanner.jar

Migrate to Containers 会自动使用 binaryAppScanner.jar(作为 IBM WebSphere Application Server Migration Toolkit for Application Binaries 的一部分提供)来提取来源虚拟机中的 WAS 应用的配置信息和文件。

在执行迁移之前,您必须完成以下操作:

如需设置 binaryAppScanner.jar,请执行以下操作:

  1. IBM 支持下载安装程序文件 binaryAppScannerInstaller.jar。在下载过程中,您必须接受许可协议。

  2. 运行以下命令以提取 binaryAppScanner.jar 文件并接受许可协议:

    java -jar binaryAppScannerInstaller.jar --acceptLicense --verbose
    
  3. 指定提取的目标目录。例如 /tmp。安装程序会在目标目录下创建一个名为 /wamt 的目录。

  4. 转到 /wamt 目录。例如:

    cd /tmp/wamt
    
  5. 使用以下命令创建两个 Dockerfile:

    FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/websphere-traditional-container-discover:1.3.1
    ADD binaryAppScanner.jar /
    
    FROM us-docker.pkg.dev/migrate-modernize-public/modernize-plugins-prod/websphere-traditional-container-extract:1.3.1
    ADD binaryAppScanner.jar /
    
  6. 构建并推送 Docker 映像:

    gcloud builds submit --timeout 1h -t gcr.io/PROJECT_ID/websphere-traditional-container-discover-with-scanner:1.3.1 --project PROJECT_ID
    gcloud builds submit --timeout 1h -t gcr.io/PROJECT_ID/websphere-traditional-container-extract-with-scanner:1.3.1 --project PROJECT_ID
    
  7. 修改插件 CRD 以将其与二进制扫描程序捆绑在一起,如下所示:

    $ kubectl edit appxplugins.anthos-migrate.cloud.google.com -n v2k-system websphere-traditional-container
    
    # Set the value of spec.discoveryImage and spec.generateArtifactsImage:
    
    apiVersion: anthos-migrate.cloud.google.com/v1beta2
    kind: AppXPlugin
    metadata:
      namespace: v2k-system
      name: websphere-traditional-container
      labels:
        anthos-migrate.cloud.google.com/preview-type: public
      annotations:
        anthos-migrate.cloud.google.com/display-name: WebSphere traditional container
    spec:
      discoverImage: gcr.io/PROJECT_ID/websphere-traditional-container-discover-with-scanner:1.3.1
      discoverCommand:
      - /ko-app/websphere-traditional
      - discover
      generateArtifactsImage: gcr.io/PROJECT_ID/websphere-traditional-container-extract-with-scanner:1.3.1
      generateArtifactsCommand:
      - /ko-app/websphere-traditional
      - extract
      parameterDefs:
      - name: was-home
        usage: Path of the WebSphere WAS_HOME on the original instance.
        envVar: APPX_WAS_HOME
    
  8. 保存此 CRD。

迁移过程

下图演示了 WebSphere 工作负载的迁移步骤:

将 WAS 应用迁移到单个应用容器。

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    添加表示来源平台的迁移来源。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 迁移 WebSphere 数据

    选择是否要迁移数据。

  4. 自定义迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。 每次迁移时,迁移一个 WAS 应用。

  5. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  6. 生成和查看迁移工件

    执行迁移以生成应用容器。您可以监控迁移过程,并在完成后查看工件,为构建可部署的应用映像做好准备。

  7. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  8. 构建应用容器映像

    使用生成的工件构建一个容器,然后将其部署到集群。

  9. 将应用容器部署到目标集群

    将映像部署到您的目标集群。

  10. 删除迁移

    删除迁移以释放迁移使用的所有资源。

迁移 JBoss 服务器

下图演示了 JBoss 工作负载的迁移步骤:

使用 Migrate to Containers 进行迁移的步骤图

使用 Migrate to Containers 来迁移 JBoss 工作负载时,可以利用 JBoss 的功能和架构从源虚拟机复制特定的数据卷和数据卷声明。

前提条件

  • JBoss AS 应用服务器 v8.1.0 及更高版本,或 JBoss EAP 应用服务器 v7.0、v7.1、v7.2、v7.3 和 v7.4。

  • 为迁移虚拟机配置 Google Cloud 集群。

迁移过程

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    如需配置迁移,请配置一个来源,用于表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 迁移 JBoss 数据

    选择是否要迁移数据。

  4. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  5. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  6. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  7. 构建 JBoss 容器映像

    使用生成的工件构建一个容器,然后将其部署到集群。

  8. 删除迁移

    删除迁移以释放迁移使用的所有资源。

不受支持的功能

不支持以下 JBoss 功能:

  • 敏感数据和 Secret - 存储在 JBOSS_HOME/standalone 目录中的敏感数据和 Secret 不会被移除。此数据将包含在容器映像中。
  • JBoss 日志记录器配置 - 日志记录器配置将按原样从源机器提取。除非在构建 JBoss 容器之前手动修改 jbossServer.tar.gz,否则在迁移过程中不会修改此配置。
  • 内存分配 - Java 虚拟机 (JVM) 资源分配将从社区容器提取,并且不依赖于源机器 JVM 资源。
  • 环境变量 - 来源机器中的环境变量和 JVM 参数不会迁移到容器映像。
  • 离线评估 - 不支持确定 JBoss 工作负载是否适合迁移。

迁移 Apache 服务器

下图展示了 Apache 工作负载的迁移步骤:

使用 Migrate to Containers 进行迁移的步骤图

使用 Migrate to Containers 迁移 Apache 工作负载时,您可以利用 Apache 的功能和架构来执行以下操作:

  • 从来源虚拟机复制特定的数据卷和数据卷声明。

前提条件

  • 基于 Linux 虚拟机的 Apache 2 Webserver。
  • 为迁移 Linux 虚拟机配置 Google Cloud 集群。

迁移过程

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    如需配置迁移,请配置一个来源,用于表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 迁移数据

    选择是否要迁移数据。

  4. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  5. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  6. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  7. 构建 Apache 容器映像

    使用生成的工件构建一个容器,然后将其部署到集群。

  8. 删除迁移

    删除迁移以释放迁移使用的所有资源。

不受支持的功能

不支持 Apache 1 工作负载。

不支持以下 Apache 功能:

  • 证书

  • Windows 支持:针对使用 Windows 工作负载进行的 Apache 迁移。

迁移 WordPress 网站

使用 Migrate to Containers 来迁移 WordPress 工作负载时,可以利用 WordPress 的功能和架构从源虚拟机复制特定的数据卷和数据卷声明。

前提条件

  • WordPress 4.0 或更高版本,在基于 Linux 虚拟机的 Apache 2 网络服务器上运行。
  • 为迁移 Linux 虚拟机配置 Google Cloud 集群。

迁移过程

使用 Migrate to Containers 进行迁移的步骤如下:

  1. 添加迁移来源

    如需配置迁移,请配置一个来源,用于表示要迁移的源平台。如果您已具有先前迁移的来源,并且您要迁移的虚拟机来自同一来源,则您可以重复使用它。

  2. 创建迁移

    使用初始迁移计划创建迁移对象。

  3. 自定义您的迁移计划

    在执行特定要求之前,先修改适用于您的具体需求的迁移计划。

  4. 迁移 WordPress 数据

    在执行迁移之前,根据您的特定要求查看和编辑数据迁移计划。

  5. 执行迁移

    执行迁移以提取容器工件,其中包括构建容器映像所需的 Dockerfile 和其他文件。

  6. 监控迁移过程

    监控迁移进度并检查迁移活动日志。

  7. 构建 WordPress 容器映像

    使用生成的工件构建一个容器,然后将其部署到集群。

  8. 删除迁移

    删除迁移以释放迁移使用的所有资源。

不受支持的功能

不支持在基于 Linux 虚拟机的 Apache 2 网络服务器以外的主机上运行的 WordPress 网站。

不支持以下 WordPress 功能:

  • WordPress 数据库迁移。

    如需详细了解如何迁移依赖于数据库的应用,请参阅确保数据库可访问

  • 将存储在 WordPress 服务器本地的数据(例如媒体上传、插件和主题背景)导出到 NFS 驱动器。

    如需详细了解如何将本地存储的数据导出到 NFS,请参阅将 NFS 装载定义为永久性卷

  • 已迁移部署的横向扩缩。

    存储在 WordPress 服务器本地的数据会导出到 Compute Engine 永久性磁盘,该磁盘会装载到迁移的部署 pod 中。Compute Engine 永久性磁盘无法附加到多个 pod,因此会阻止迁移后部署的横向扩缩。

  • 将证书和敏感数据导出到 Kubernetes Secret 对象。

后续步骤