GCP 上 Eon 模式的先决条件

在 GCP 上部署 Eon 模式数据库之前,您必须执行以下几个步骤:

  • 查看 GCP 项目的默认服务帐户的权限。

  • 创建要在创建群集时使用的 HMAC 密钥。

  • 创建公共存储位置。

服务帐户权限

服务帐户允许自动化流程通过 GCP 进行身份验证。Eon 模式数据库部署过程使用 GCP 项目的项目服务帐户来部署实例。当您创建新项目时,GCP 会自动为该项目创建一个默认服务帐户(由 project_number-compute@developer.gserviceaccount.com 标识),并授予其 IAM 角色编辑者。有关此角色和其他 IAM 角色的详细信息,请参阅 Google Cloud 文档的了解角色

编辑者角色允许服务帐户从市场创建资源。当您创建管理控制台 (MC) 的实例时,MC 使用该帐户部署更多资源,例如为数据库配置实例。

有关详细信息,请参阅 Google Cloud 文档的了解服务帐户页面。

权限和角色

要在 GCP 上部署 Vertica,您的用户帐户必须具有:

  • 编辑者 (Editor) 角色。

  • runtimeconfig.waiters.getIamPolicy 权限。

创建 HMAC 密钥

Vertica 使用基于哈希的消息身份验证代码 (HMAC) 密钥对访问公共存储位置的请求进行身份验证。此密钥有两部分:访问 ID 和密钥。当您在 GCP 中创建 Eon 模式数据库时,您需要提供 HMAC 密钥的两个部分供节点用于访问公共存储。

要创建 HMAC 密钥:

  1. 登录到您的 Google Cloud 帐户。

  2. 如果您将用于创建数据库的项目的名称未显示在顶部横幅中,请单击下拉列表并选择正确的项目。

  3. 在左上角的导航菜单中的“存储 (Storage)”标题下,单击存储 (Storage) 并选择设置 (Settings)

  4. 在“设置 (Settings)”页面中,单击互操作性 (Interoperability)

  5. 滚动到页面底部,并找到“用户帐户 HMAC (User account HMAC)”标题。

  6. 除非您已经设置了默认项目,否则您会看到一条消息,指出您尚未为用户帐户设置默认项目。单击设置 project-id 作为默认项目 (Set project-id as default project) 按钮选择当前项目作为默认项目以实现互操作性。

  7. 在您的用户帐户的“访问密钥 (Access keys)”下,单击创建密钥 (Create a key)

  8. 您的新访问密钥将显示在 HMAC 密钥列表中。当您创建 Eon 模式数据库时将需要它们。您可以将它们复制到方便的位置(例如文本编辑器),或使用一个浏览器选项卡打开此页面,同时使用另一个选项卡或窗口创建数据库。这些密钥在此页面上仍然可用,因此您无需担心它们会保存到其他位置。

创建公共存储位置

您的 Eon 模式数据库需要将一个存储位置作为其公共存储。在 GCP 上运行的 Eon 模式数据库使用 Google Cloud Storage (GCS) 作为其公共存储位置。当您创建新的 Eon 模式数据库时,您将为 MC 的向导提供存储位置的 GCS URL。

此位置需要满足以下条件:

  • URL 必须至少包含一个存储桶名称。您也可以使用一个或多个级别的文件夹。例如,以下 GCS URL 是有效的:

    • gs://verticabucket/mydatabase

    • gs://verticabucket/databases/mydatabase

    • gs://verticabucket

    多个数据库可以共享同一个存储桶,只要每个数据库都有自己的文件夹即可。

  • 如果提供,则 URL 中的最低级别文件夹应当尚不存在。例如,在 GCS URL gs://verticabucket/databases/mydatabase 中,必须存在名为 verticabucket 的存储桶和名为 databases 的目录。名为 mydatabase 的子目录不得存在。Vertica 安装过程应该自行创建最终文件夹。如果该文件夹已存在,则安装过程将失败。

  • 必须将存储桶的权限设置为允许服务帐户对存储桶具有读取、写入和删除权限。要获得这些权限,分配给用户的最佳角色是存储对象管理员

  • 为防止出现性能问题,存储桶必须与运行 Eon 模式数据库的所有节点位于同一区域。

  • 如果通过 admintools UI 创建数据库,则必须在 admintools.conf 中将 gcsauth 设置为引导参数。有关此参数和其他 GCP 参数的详细信息,请参阅 Google Cloud Storage 参数

    [BootstrapParameters]
    gcsauth = ID:secret