自助从 Looker(原始版本)迁移到 Looker (Google Cloud Core)

本文档简要介绍了将现有 Looker 实例从 Looker(原始)环境迁移到 Looker (Google Cloud Core) 的技术步骤。

Looker (Google Cloud Core) 是一个与 Google Cloud Platform 深度集成的部署环境。Looker (Google Cloud Core) 托管在 Google Cloud 基础架构上;您可以通过 Google Cloud 控制台直接进行管理;它与 Google Cloud 的许多其他产品、服务和功能进行了深度集成。

准备工作

  1. 参阅以下文档,熟悉 Google Cloud 的原则和工具:
  2. 请与您的客户代表联系,咨询如何迁移以及您的 Looker(原始)实例是否符合条件。如果您的实例符合条件,并且您已升级现有 Looker(原始版本)合同以涵盖 Looker (Google Cloud Core),则可以完成本文档中的步骤来迁移您的实例。
  3. 如需获取准备迁移所需的权限,请让管理员向您授予 Looker (Google Cloud Core) 实例所在的 Google Cloud 项目的以下 IAM 角色:

    • 创建 Looker (Google Cloud Core) 实例: Looker Admin (roles/looker.admin)。
    • 在 Google Cloud 项目中分配 IAM 角色:Project IAM Admin (roles/resourcemanager.projectIamAdmin)。
    • 创建 Cloud Storage 存储桶: Storage Admin (roles/storage.admin)。

    如需详细了解如何授予角色,请参阅管理访问权限

    您也可以通过自定义角色或其他预定义角色来获取所需的权限。

  4. 如需管理 Looker(原始)实例以便为迁移做好准备,您必须在该实例中拥有 Looker 管理员角色。
  5. 创建一个新的“空”Looker (Google Cloud Core) 实例。

    请务必为新的 Looker (Google Cloud Core) 实例选择正确的版本、网络连接类型(公共 IP 或专用 IP)和其他配置属性(CMEK、VPC-SC),以确保其具备必要的功能。Looker (Google Cloud Core) 中的部分功能取决于所选版本所选网络类型

    将实例留空;不要在其中填充任何数据,例如模型文件、用户、连接、探索、信息中心或文件夹。在导入过程中,系统会擦除所有设置或内容,并将其替换为迁移的数据。

    不过,在迁移过程中,系统不会覆盖通过 Google Cloud 控制台指定的或只能在实例创建过程中指定的 Looker (Google Cloud Core) 的配置属性。

概览

概括来讲,迁移过程包括以下步骤。

  1. 确保您的 Looker(原始)实例已准备好进行迁移。
  2. 从 Looker(原始)实例导出数据。
  3. 将数据导入新的“空”Looker (Google Cloud Core) 实例。
  4. 完成 Looker (Google Cloud Core) 实例的设置。
  5. 停用 Looker(原始)实例。

以下部分详细介绍了每个步骤。

确保您的 Looker(原始)实例已准备好进行迁移

您的 Looker(原始)实例必须满足以下前提条件,才符合迁移条件:

  • 您的 Looker(原始)实例必须由 Google 管理(换言之,不能由客户托管),并托管在 Google Cloud 或 Amazon Web Services 上。
  • 您的 Looker(原始)实例必须使用当前 Looker (Google Cloud Core) 版本的一个月度版本内的版本。如需查找当前的 Looker (Google Cloud Core) 版本,请参阅 Looker 版本说明,并找到最新的部署公告。

此外,请在迁移前执行以下操作:

  • Looker(原始版本)与 Looker (Google Cloud Core) 之间存在一小部分功能差异。请查看这些差异,确保 Looker (Google Cloud Core) 中的功能能够满足您的持续需求。

  • 迁移操作会复制所有生产模式项目及其包含的模型文件,但不会复制属于各个用户的开发模式项目。为了确保通过迁移转移开发模式文件,您必须先将所有开发模式项目中的所有文件提交到 Git 代码库,然后再开始迁移。

  • Looker (Google Cloud Core) 仅支持 Google OAuthSAMLOpenID Connect 身份验证方法。

    • 如果您的 Looker(原始)实例使用其他身份验证方法(例如电子邮件地址和密码、LDAP 等),您需要将所有用户转换为 Looker (Google Cloud Core) 支持的身份验证方法
    • 如果您的 Looker(原始)实例已在使用 Google OAuth,那么所有用户记录都将转移,但您仍须为 Looker (Google Cloud Core) 实例所属项目中的用户手动创建 IAM 权限
    • 如果您的 Looker(原始)实例使用 SAML,则必须将 SAML 身份验证管理控制台页面上的合并用户设置设为 GoogleOIDC,以免测试 SAML 身份验证时出错。
    • 如果您的 Looker(原始)实例使用 OIDC,则 OpenID Connect 身份验证管理控制台页面上的合并用户设置必须设置为 GoogleSAML,以免您在测试 OpenID Connect 身份验证时出错。
    • 如果您使用的是外部身份提供方,则必须将身份提供方中的回调网址更新为 Looker (Google Cloud Core) 网址,以允许在新的 Looker (Google Cloud Core) 实例中进行身份验证。
    • 如果您的 Looker (Google Cloud Core) 实例将使用 SAML 或 OpenID Connect 作为身份验证方法,建议您同时设置 Google OAuth,将其作为 Looker (Google Cloud Core) 的备用身份验证方法
    • 如果您要将自定义网域与 Looker (Google Cloud Core) 实例搭配使用,在自定义网域启用之前,请勿为该实例设置 SAML 或 OpenID Connect。
  • 在迁移期间,两个 Looker 实例(一个 Looker(原始版本)、一个 Looker (Google Cloud Core) 将并行运行一段时间。自动发生的任何活动(如提醒和定期报告,以及访问后端数据库的后台活动)都可能是重复的。为避免重复,请在 Looker(原始版本)或 Looker (Google Cloud Core) 实例中删除自动提醒和时间表。

从 Looker(原始)实例导出数据

从 Looker(原始)实例导出数据需要执行两个步骤:

  1. 创建一个用于存储迁移数据的位置
  2. 启动导出

创建用于存储迁移数据的位置

在创建 Looker (Google Cloud Core) 实例的同一 Google Cloud 项目中执行以下所有操作。

  1. 创建新的 Cloud Storage 存储桶(例如 <bucket-name>)。
    • 此存储桶将用于存储迁移数据。
    • 按照创建存储分区文档页面中的说明操作。
    • 请注意,<bucket-name> 在整个 Google Cloud 中必须是唯一的。我们建议您在存储桶名称前加上唯一标识符(例如项目 ID)作为前缀。
  2. 确定 Cloud Storage 存储桶中的文件夹名称(例如 <folder-name>)。现在不要创建该文件夹。在导出请求期间指定文件夹名称。导出过程将在导出过程中自动创建。
  3. 在 Cloud KMS 中创建密钥环和密钥(例如 <kms_keyring_id><kms-key-id>)。
  4. 专门为迁移创建一个新的服务帐号(例如 <export-service-account>)。
  5. <export-service-account> 授予两个特定的 IAM 角色:

  6. 创建与 <export-service-account> 关联的服务帐号密钥,然后下载 JSON 密钥文件。

请求导出

确认您的实例已准备好进行迁移、创建“空”的 Looker (Google Cloud Core) 实例并创建迁移数据的位置后,请在 Looker(原始)实例的管理面板的导出页面中输入以下信息:

  • 您创建的 Cloud Storage 存储桶的名称。
  • Cloud Storage 文件夹名称 - 导出期间将自动创建使用此名称的文件夹。导出完成后,在您创建的 Cloud Storage 存储桶中,导出的文件将出现在带有时间戳的子文件夹中。
  • KMS 密钥名称
  • 包含服务账号密钥的 JSON 文本。

导出页面输入相应信息后,点击请求导出以开始导出。

导出过程需要几分钟到几小时。导出完成后,您将在 Cloud Storage 存储桶和文件夹中看到多个导出文件(采用非人类可读的格式)。这些文件是以下导入步骤的输入。

将数据导入新的“空”Looker (Google Cloud Core) 实例

实例数据导出后,您可以将其导入 Looker (Google Cloud Core) 实例。

按照将数据从 Cloud Storage 导入到 Looker (Google Cloud Core) 实例页面上的说明,将命令指向存放导出文件的存储桶和文件夹。

简而言之,这包括以下内容:

  1. Looker 服务帐号(而不是 <export-service-account>)授予以下用于访问存储桶和 KMS 密钥的角色:
  2. 通过 Google Cloud 控制台或 gcloud CLI 触发导入

导入操作需要几分钟到几小时才能完成。完成后,您的 Looker (Google Cloud Core) 实例将重启,并显示所有迁移后的数据。

完成 Looker (Google Cloud Core) 实例的设置

此时,Looker 管理员可以前往实例网址,然后登录实例以完成设置。

迁移过程会复制尽可能多的 Looker(原始)实例配置。但是,某些内容无法迁移,或在 Looker (Google Cloud Core) 中的运行方式略有不同,必须进行调整。

已知需要特别注意的一些项目包括:

常规设置(位于 Looker **管理** 面板中)

系统不会自动复制大多数常规设置(以及 **管理** 面板中的其他设置),因为这些设置往往不同,或者并非以相同形式存在于 Looker (Google Cloud Core) 中。您应该仔细查看和配置所选 Looker (Google Cloud Core) 配置中的所有设置。如需详细了解 Looker (Google Cloud Core) 中的设置,请参阅通过 Looker 管理 Looker (Google Cloud Core) 实例通过 Google Cloud 控制台管理 Looker (Google Cloud Core) 实例文档页面。

用户

Looker (Google Cloud Core) 仅支持 Google OAuthSAMLOpenID Connect 身份验证方法。

如果 Looker(原始)实例也配置了 Google OAuth,则系统会复制用户记录及其属性(只要它们在两个实例中都与相同的 Google ID 和电子邮件地址相关联)。Project IAM Admin 必须向每个用户授予实例所在 Google Cloud 项目的 Looker Admin 或 Looker Instance User IAM 角色

如果 Looker(原始)实例配置了 SAML 或 OpenID Connect,请确保身份验证方法的合并用户字段仅指明 Looker (Google Cloud Core) 支持的身份验证方法

如果 Looker(原始)实例的部分用户通过 Looker (Google Cloud Core) 不支持的机制(例如 LDAP 或电子邮件地址/密码)进行身份验证,那么这些用户帐号将需要重新创建并转换为受支持的身份验证方法。

数据库连接数

Looker (Google Cloud Core) 支持的数据库方言Looker(原始版本)略有不同。系统会复制数据库连接的所有配置属性(包括连接字符串和密码,如适用)。但是,Looker (Google Cloud Core) 中不同的网络拓扑可能会导致数据库连接立即无法正常工作。例如,如果通过 Looker(原始)实例专用的防火墙或隧道访问数据库,则可能需要重新配置防火墙或隧道。您应测试每个连接,并根据需要重新建立连接。

Git 代码库连接

如果该实例使用的是裸 Git 代码库,则这些代码库应不加修改地运行(复制但不共享)。但是,如果实例连接到远程代码库,则可能需要验证并重新启用这些连接,这与数据库连接类似。

其他网络配置

Looker 实例可能具有其他类型的入站和出站网络连接(例如,在专用 IPAction HubMarketplace电子邮件等环境中)。此外,还必须验证这些网络连接。

用于访问 Looker (Google Cloud Core) 实例的网址

Looker (Google Cloud Core) 实例附带一个随机分配的主网址。如果需要通过特定网址访问该实例,您可以配置一个自定义网域

时间表和提醒

如果 Looker(原始版本)实例和 Looker (Google Cloud Core) 实例同时处于活动状态,它们可能会生成重复的计划操作和提醒,并执行重复的后台操作来访问已连接的数据库。在其中一个实例中,应尽快停用这些活动。

维护窗口

与 Looker(原始版本)中的不同,您可以为 Looker (Google Cloud Core) 指定维护政策

Elite 系统活动

Elite System Activity 数据不会在迁移过程中复制。Looker (Google Cloud Core) 实例开始时会使用新的历史记录。

自定义网域

您可以为 Looker (Google Cloud Core) 实例创建自定义网域。您必须设置 DNS 记录,以确保 SSL 证书已部署。此外,在启用自定义网域且设置了身份验证方法后,请务必将身份验证客户端中的回调网址更新为自定义网域。无法使用 looker.com 域名为 Looker (Google Cloud Core) 创建自定义网域。

如果您要使用 Looker(原始)实例的自定义网址为 Looker (Google Cloud Core) 实例创建自定义网域,则应在迁移完成后且确认 Looker (Google Cloud Core) 实例可供使用后设置自定义网域。启用自定义网域后,用户在访问该实例网址时将看到 Looker (Google Cloud Core) 实例,而不是 Looker(原始)实例。

不要为 Looker (Google Cloud Core) 实例设置 SAML 或 OpenID Connect,除非该实例可供使用、DNS 记录已更新并启用自定义网域。

书签

如果您在 Looker(原始)实例中使用自定义网址(没有使用 looker.com 网域),如果您使用与 Looker(原始)实例相同的网址为 Looker (Google Cloud Core) 实例创建自定义网域,则此迁移过程应该会保留用户的书签。

启用自定义网域后,指向 Looker(原始)内容(例如 https://www.yourcustomdomain.com/dashboard/123)的书签将指向 Looker (Google Cloud Core) 实例中的内容。(注意:企业版嵌入版 Looker (Google Cloud Core) 在网址中使用字母数字内容后缀,而非数字内容 ID,但包含内容 ID 的书签仍会正确重定向到相同的内容。)

此过程不能用于使用网域 looker.com 的 Looker(原始)网址。

该列表并不详尽。请先测试对您而言最重要的实例的所有方面,然后再考虑迁移是否完成。

迁移完成后,如果您确定不再需要再次导出,可以删除之前创建的 <export-service-account>,这会导致为其共享的 JSON 密钥变得毫无用处。

停用 Looker(原始)实例

迁移后的 Looker (Google Cloud Core) 实例正常运行后,您可以向用户发送该实例的网址,指示他们开始访问该实例并停止访问 Looker(原始)实例。

问题排查

以下部分可能有助于您解决导入或导出过程中遇到的问题。

导出过程中的问题

如果导出 Looker(原始)数据时出现问题,则管理面板的导出页面上会显示错误状态。点击 ERROR 状态会显示一条错误消息。

常见的错误来源如下:

  • Cloud Storage 存储桶、KMS 密钥或 <export-service-account> 无效。
  • <export-service-account> 缺少必要的权限。

在提交导出请求之前,确认这些对象的状态会很有帮助。

导入过程中遇到的问题

如果导入操作在 4 小时后仍未完成(如果源实例非常大,可能需要更长时间)完成,或者错误退出,您可能需要向 Cloud Customer Care 团队提交工单,以解决此问题。对于此操作,客户直接可见的诊断信息相对较少。

后续步骤