创建集群及其主实例

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

准备工作

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

    如果您不具备上述任何角色,请与您的 Organization Administrator 联系以请求访问权限。

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

创建新集群

控制台

  1. 前往集群页面。

    转到集群

  2. 点击创建集群

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

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

  4. 点击继续

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

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

  7. Database version 字段中,选择您希望集群的数据库服务器与之兼容的 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. New database flag(新数据库标志)列表中,选择一个标志。
      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,该 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(可选):您要允许访问实例的项目 ID 或项目编号的逗号分隔列表(如果使用 Private Service Connect)。

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 已创建或更新它们。

克隆活跃集群

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

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

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

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

AlloyDB 使用专用服务访问权限,让集群的内部资源能够相互通信。您必须先在 Virtual Private Cloud (VPC) 网络中配置了专用服务访问通道连接的 IP 地址范围至少有一个,然后才能创建集群。

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

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

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

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

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

如需详细了解如何创建要与 AlloyDB 搭配使用的 IP 地址范围,请参阅启用专用服务访问通道

后续步骤