创建集群及其主实例

本页面介绍了如何创建 AlloyDB 集群及其主实例。

准备工作

  • 您使用的 Google Cloud 项目必须已启用为可访问 AlloyDB
  • 您使用的 Google Cloud 项目中的 VPC 网络必须已针对 AlloyDB 专用服务访问通道进行了配置
  • 您必须在所使用的 Google Cloud 项目中拥有以下 IAM 角色之一:
    • roles/alloydb.admin(AlloyDB Admin 预定义 IAM 角色)
    • roles/owner(Owner 基本 IAM 角色)
    • roles/editor(Editor 基本 IAM 角色)

    如果您不拥有上述任何角色,请与组织管理员联系以申请访问权限。

  • 您还必须在所使用的 Google Cloud 项目中拥有 compute.networks.list 权限。如需获得此权限,同时遵循最小权限原则,请让管理员向您授予 roles/compute.networkUser (Compute Network User) 角色。

创建新集群

控制台

  1. 前往集群页面。

    转到集群

  2. 点击创建集群

  3. 选择集群配置。如需详细了解高可用性配置与基本配置之间的区别,请参阅节点和实例

    如果您不确定新集群是否需要读取池实例,请选择一个不包含读取池的配置。您可以根据需要,在以后随时向集群添加读取池实例。

  4. 点击继续

  5. 配置集群部分的集群 ID 字段中,输入集群的 ID。

  6. 密码字段中,输入新集群的初始密码。AlloyDB 会在创建集群时将所提供的密码分配给 postgres 数据库用户。

  7. 数据库版本字段中,选择您希望集群数据库服务器与之兼容的 PostgreSQL 主要版本。

  8. 选择区域。

  9. 选择网络路径。

  10. 可选:如需将特定 IP 地址范围应用于此集群,而不是允许 AlloyDB 选择 IP 地址范围,请按以下步骤操作:

    1. 点击显示分配的 IP 范围选项

    2. 分配的 IP 范围列表中选择一个 IP 地址范围。

    如需详细了解此选项,请参阅创建具有特定 IP 地址范围的集群

  11. 可选:如需使用客户管理的加密密钥 (CMEK)(而非 Google 管理的加密)对此集群进行加密,请执行以下额外步骤:

    1. 点击高级加密选项

    2. 选择客户管理的加密密钥 (CMEK)

    3. 在显示的菜单中,选择一个客户管理的密钥。

      Google Cloud 控制台会将此列表限制为与新集群位于同一 Google Cloud 项目和区域中的密钥。如需使用此列表中未列出的密钥,请点击没看到您的密钥?输入密钥资源名称,然后在显示的对话框中输入密钥的资源名称。

      请注意,将 CMEK 与 AlloyDB 搭配使用需要进行一些额外设置。如需了解详情,请参阅将 CMEK 与 AlloyDB 搭配使用

    4. 点击继续

  12. 配置主实例:

    1. 实例 ID 字段中,输入主实例的 ID。
    2. 选择机器类型。
    3. 可选:为实例设置自定义标志。对于每个标志,请按以下步骤操作:
      1. 点击添加标志
      2. 新增数据库标志列表中,选择一个标志。
      3. 为标志提供值。
      4. 点击完成
  13. 如果您选择没有读取池的集群类型,请点击创建集群。否则,请继续下一步操作。

  14. 如果您选择具有读取池的集群类型,请完成以下步骤:

    1. 点击继续以添加一个或多个读取池实例。
    2. 如需添加读取池实例,请执行以下操作:

      1. 点击添加读取池

      2. 读取池实例 ID 字段中,输入读取池实例的 ID。

      3. 节点数字段中,输入节点数。

        读取池实例中的节点数决定了实例的总计算容量。

      4. 选择机器类型。

      5. 可选:为实例设置自定义标志。对于每个标志:

        1. 点击添加标志
        2. 新增数据库标志列表中选择一个标志。
        3. 为标志提供值。
        4. 点击完成
      6. 点击添加读取池

    3. 点击创建集群

gcloud

如需使用 gcloud CLI,您可以安装并初始化 Google Cloud CLI,也可以使用 Cloud Shell

  1. 如需创建启用了专用服务访问通道或 Private Service Connect 的集群,请使用 gcloud alloydb clusters create 命令。

    专用服务访问通道

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --network=NETWORK

    Private Service Connect

    gcloud alloydb clusters create CLUSTER_ID \
        --database-version=POSTGRES_VERSION \
        --password=PASSWORD \
        --region=REGION_ID \
        --project=PROJECT_ID \
        --enable-private-service-connect 

    替换以下内容:

    • CLUSTER_ID:您所创建的集群的 ID。它必须以小写字母开头,可以包含小写字母、数字和连字符。

    • VERSION:您希望集群数据库服务器与之兼容的 PostgreSQL 主要版本。请按以下方式之一操作:

      • 14,用于与 PostgreSQL 14 兼容

      • 15,用于与 PostgreSQL 15 兼容,这是支持的默认 PostgreSQL 版本

      • 16,用于与 PostgreSQL 16 兼容

    • PASSWORD:要用于默认 postgres 用户的密码。

    • NETWORK(可选):针对 AlloyDB 专用服务访问通道配置的 VPC 网络的名称。如果省略 --network 标志,AlloyDB 会使用 default 网络。

    • --enable-private-service-connect(可选):设置后可启用 Private Service Connect 作为集群及其实例的连接方法。

    • REGION_ID:您要将集群放置在其中的区域。

    • PROJECT_ID:您要将集群放置在其中的项目的 ID。

    此命令会启动一个长时间运行的操作,并返回操作 ID。

  2. 可选:如需将特定 IP 地址范围应用于此集群,而不是允许 AlloyDB 选择 IP 地址范围,请提供以下参数:

    --allocated-ip-range-name=RANGE
    

    RANGE 替换为您希望此集群用于专用服务访问通道的 IP 地址范围的名称。

    如需详细了解此选项,请参阅创建具有特定 IP 地址范围的集群

  3. 可选:如需使用客户管理的加密密钥 (CMEK)(而非默认的 Google 管理的加密)对此集群进行加密,请提供以下参数:

    --kms-key=KEY_ID \
    --kms-keyring=KEYRING_ID \
    --kms-location=LOCATION_ID \
    --kms-project=PROJECT_ID
    

    请替换以下内容:

    • KEY_ID:要使用的 CMEK 密钥的 ID。

    • KEYRING_ID:密钥的密钥环的 ID。

    • LOCATION_ID:密钥环区域的 ID,该区域必须与集群区域相同。

    • PROJECT_ID:密钥环项目的 ID。

  4. 确认操作是否成功。

    gcloud alloydb operations describe OPERATION_ID \
        --region=REGION_ID \
        --project=PROJECT_ID

    OPERATION_ID 替换为从上一步返回的操作 ID。

创建主集群后,您必须创建主实例。

创建主实例

如需创建主实例,请使用 gcloud alloydb instances create 命令。

    gcloud alloydb instances create INSTANCE_ID \
        --instance-type=PRIMARY \
        --cpu-count=CPU_COUNT \
        --region=REGION_ID \
        --cluster=CLUSTER_ID \
        --project=PROJECT_ID \
        --allowed-psc-projects=ALLOWED_PROJECT_LIST

替换以下内容:

  • INSTANCE_ID:您所创建的实例的 ID。它必须以小写字母开头,可以包含小写字母、数字和连字符。
  • CPU_COUNT:您要为实例分配的 vCPU 数量。有效值包括:
    • 2:2 个 vCPU,16 GB RAM
    • 4:4 个 vCPU,32 GB RAM
    • 8:8 个 vCPU,64 GB RAM
    • 16:16 个 vCPU,128 GB RAM
    • 32:32 个 vCPU,256 GB RAM
    • 64:64 个 vCPU,512 GB RAM
    • 96:96 个 vCPU,768 GB RAM
    • 128:128 个 vCPU,864 GB RAM
  • REGION_ID:您要将实例放置在其中的区域。
  • CLUSTER_ID:您之前创建的集群的 ID。
  • PROJECT_ID:集群所在项目的 ID
  • ALLOWED_PROJECT_LIST(可选):如果使用 Private Service Connect,则是要允许访问实例的项目 ID 或项目编号的英文逗号分隔列表。

Terraform

如需创建集群,请使用 Terraform 资源

以下是基于 AlloyDB 集群完整示例创建集群的代码段:

resource "google_alloydb_cluster" "cluster_abc" {
  cluster_id = "alloydb-cluster"
  location   = "us-central1"
  network_config {
    network = google_compute_network.default.id
  }
  database_version = "POSTGRES_15"

  initial_user {
    user     = "postgres"
    password = "postgres"
  }

  continuous_backup_config {
    enabled              = true
    recovery_window_days = 14
  }

  automated_backup_policy {
    location      = "us-central1"
    backup_window = "1800s"
    enabled       = true

    weekly_schedule {
      days_of_week = ["MONDAY"]

      start_times {
        hours   = 23
        minutes = 0
        seconds = 0
        nanos   = 0
      }
    }

    quantity_based_retention {
      count = 1
    }

    labels = {
      test = "alloydb-cluster-backup-policy-labels"
    }
  }

  labels = {
    test = "alloydb-cluster-labels"
  }
}

data "google_project" "project" {}

resource "google_compute_network" "default" {
  name = "alloydb-cluster-network"
}

准备 Cloud Shell

如需在 Google Cloud 项目中应用 Terraform 配置,请按以下方式准备 Cloud Shell:

  1. 启动 Cloud Shell
  2. 设置要在其中应用 Terraform 配置的默认 Google Cloud 项目。

    您只需为每个项目运行一次以下命令,即可在任何目录中运行它。

    export GOOGLE_CLOUD_PROJECT=PROJECT_ID

    如果您在 Terraform 配置文件中设置显式值,则环境变量会被替换。

准备目录

每个 Terraform 配置文件都必须有自己的目录(也称为“根模块”)。

  1. Cloud Shell 中,创建一个目录,并在该目录中创建一个新文件。文件名必须是 TF 文件,例如 main.tf。在本文档中,该文件称为 main.tf
    mkdir DIRECTORY && cd DIRECTORY && touch main.tf
  2. 将示例代码复制到新创建的 main.tf 中。 (可选)从 GitHub 中复制代码。如果 Terraform 代码段是端到端解决方案的一部分,则建议这样做。
  3. 查看 main.tf 文件,并修改要应用于您环境的示例参数。
  4. 保存更改。
  5. 初始化 Terraform。您只需为每个目录执行一次此操作。
    terraform init
    (可选)如需使用最新的 Google 提供程序版本,请添加 -upgrade 选项:
    terraform init -upgrade

应用更改

  1. 查看配置,确认 Terraform 更新是否符合您的预期:
    terraform plan
    根据需要更正配置。
  2. 通过运行以下命令并在提示符处输入 yes 来应用 Terraform 配置:
    terraform apply
    等待 Terraform 显示 Apply complete! 消息。
  3. 打开您的 Google Cloud 项目以查看结果。在 Google Cloud 控制台中,在界面中找到资源,以确保 Terraform 已创建或更新它们。

REST v1

此示例会创建一个集群。network 参数是必需的。如需查看此调用的完整参数列表,请参阅方法:projects.locations.clusters.create。如需了解集群设置,请参阅查看集群和实例设置

请勿在集群 ID 中包含敏感信息或个人身份信息,因为它可供外部用户查看。无需在集群名称中包含项目 ID。此操作将在适当的位置(例如在日志文件中)自动完成。

在使用任何请求数据之前,请先进行以下替换:

  • CLUSTER_ID:您创建的集群的 ID。它必须以小写字母开头,可以包含小写字母、数字和连字符。
  • PROJECT_ID:您要将集群放置在其中的项目的 ID。
  • LOCATION_ID:集群区域的 ID。
  • NETWORK针对 AlloyDB 专用服务访问通道配置的 VPC 网络的名称。
  • DATABASE_VERSION:数据库版本的枚举字符串,例如 POSTGRES_15
  • INITIAL_USERNAME:要用于默认 postgres 用户的用户名。
  • INITIAL_USER_PASSWORD:要用于默认 postgres 用户的密码。

请求 JSON 正文如下所示:

{
  clusterId = "CLUSTER_ID"
  network = "projects/PROJECT_ID/global/networks/NETWORK"
  databaseVersion = "DATABASE_VERSION"

  initialUser {
    user     = "INITIAL_USERNAME"
    password = "INITIAL_USER_PASSWORD"
  }

  continuousBackupConfig {
    enabled              = true
    recoveryWindowDays = 14
  }

  weeklySchedule {
    daysOfWeek = ["MONDAY"]

      startTimes {
        hours   = 23
        minutes = 0
        seconds = 0
        nanos   = 0
      }
  }

    quantityBasedRetention {
      count = 1
    }

    labels = {
      test = "alloydb-cluster-full"
    }
  }
}

如需发送请求,请将请求正文保存在名为 request.json 的文件中,并使用以下 POST 请求:

  POST https://alloydb.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION_ID/clusters

克隆活跃集群

如需创建活跃集群的克隆(包含所有源集群数据的副本并在同一区域运行),请对该集群执行时间点恢复。您可以在执行此操作时指定非常近的时间点,例如当前分钟的第一秒。

此过程仅将源集群的数据复制到克隆中,而不会复制源集群的任何配置。如需使用 CMEK 加密克隆的数据,您需要在时间点恢复命令中指定 CMEK 详细信息,即使源集群的数据已使用 CMEK 进行加密也是如此。创建新集群后,您需要添加实例、数据库标志、备份时间表以及满足您需求的任何其他必要配置。

以这种方式创建的集群独立于其来源,其数据在初始复制完成后与源集群的数据没有任何关系。如果您想创建自动跟踪和复制在其源集群中进行的更改的次要集群,请参阅跨区域复制简介

创建具有特定 IP 地址范围的集群

AlloyDB 使用专用服务访问通道,让集群的内部资源能够相互通信。在您创建集群之前,您的虚拟私有云 (VPC) 网络必须至少包含一个配置了专用服务访问通道连接的 IP 地址范围。

如果您的 VPC 网络包含多个配置了专用服务访问通道的 IP 地址范围,您可以选择指定 AlloyDB 为新集群分配的范围。

如需指定 IP 地址范围,请参阅创建集群中的可选步骤。

如果您未指定范围,AlloyDB 会在创建集群时执行以下操作之一:

  • 如果您有多个可提供专用服务访问通道的 IP 地址范围,AlloyDB 会选择其中一个范围。

  • 如果您在 VPC 中仅设置了一个具有专用服务访问通道的 IP 地址范围,AlloyDB 会将该范围应用于新集群。

如需详细了解如何创建 IP 地址范围以用于 AlloyDB,请参阅启用专用服务访问通道

后续步骤