本页介绍了如何为已存在且已自动注册 Private Service Connect 连接的 Memorystore for Valkey 实例设置多个虚拟私有云 (VPC) 网络的连接。本教程将介绍如何通过在使用方网络中创建 Private Service Connect 端点、定位到 Memorystore 实例的服务连接,以及在实例中注册组件来实现此目的。本页还介绍了如何通过 Private Service Connect 连接将客户端连接到实例。
如需详细了解如何为未使用自动注册的 Private Service Connect 连接预配的新 Memorystore 设置多个 VPC 网络,请参阅使用用户注册的 Private Service Connect 连接设置多个 VPC 网络。
如需详细了解多个 VPC 网络设置,请参阅关于多个 VPC 网络。
关键步骤摘要
本部分简要列出了本教程中用于设置新的 Private Service Connect 连接的关键步骤。首先,请完成准备工作中的步骤。
关键步骤
- 第 1 步:记下服务附加路径。
- 第 2 步:为第二个 VPC 网络设置和注册 Private Service Connect 连接。
- 第 3 步:设置客户端连接。
- 第 4 步:删除您的 Private Service Connect 连接。
- 第 5 步:删除 Memorystore for Valkey 实例。
准备工作
在开始之前,请确保您拥有以下 IAM 角色和 Google Cloud 资源。
所需 IAM 角色
资源 ID 示例 | 资源类型 |
---|---|
roles/memorystore.admin
|
可以完全控制 Memorystore for Valkey 实例,并控制实例的整个生命周期。 |
roles/servicedirectory.editor
|
向您授予修改 Service Directory 资源的权限。您需要拥有此角色才能创建 Private Service Connect 端点。 |
roles/compute.networkAdmin
|
授予对 VPC 网络的完整控制权限来启动与 Memorystore 实例的连接。您可以创建和管理 IP 地址、防火墙规则和 Private Service Connect 端点。您需要拥有此角色才能创建 Private Service Connect 端点。 如果您使用 Private Service Connect 从多个 VPC 网络连接到 Memorystore 实例,则每个网络都可能有自己的管理员。 |
必备资源
在开始本教程之前,请创建一个 Memorystore 实例和一个 Virtual Private Cloud 网络。此外,请确保您有一个 Google Cloud 项目。
我们建议您使用以下 ID 和位置创建这些资源,但您也可以选择自己的 ID 和位置。本教程假定您创建了一个 Memorystore 实例,其中包含两个自动注册的 Private Service Connect 连接。
资源 ID 示例 | 资源类型 | 完整路径示例 | 说明 |
---|---|---|---|
my-memorystore-instance
|
Memorystore for Valkey 实例 | 不适用 | 对于本教程中的示例命令,此值表示已在网络 1 中自动注册了 Private Service Connect 连接的现有实例。 |
my-network-1
|
VPC 网络 |
projects/my-project-1/global/networks/my-network-1
|
您的 Memorystore 在此网络上具有自动注册的 Private Service Connect 连接 |
my-project-1
|
Google Cloud 项目 | 不适用 | 您的 Memorystore 实例位于此项目中 |
在本教程中,您将使用以下资源在 VPC 网络 2 中创建两个 Private Service Connect 连接:
资源 ID 示例 | 资源类型 | 完整路径示例 | 说明 |
---|---|---|---|
my-project-2
|
Google Cloud 项目 | 不适用 | 在本教程中,您将在此项目中创建第二个网络和第二个子网。不过,第二个网络和子网可以与第一个网络位于同一项目中(如果您愿意)。 |
my-network-2
|
VPC 网络 |
projects/my-project-2/global/networks/my-network-2
|
在本教程中,您将在此网络中创建 2 个 Private Service Connect 端点 |
my-subnet-2
|
VPC 子网 |
projects/my-project-2/regions/us-central1/subnetworks/my-subnet-2
|
在本教程中,您将在此子网中预留 2 个 IP 地址 |
启用 API
启用管理 Compute Engine 网络、Memorystore for Valkey 和 Private Service Connect 资源所需的以下 API。
gcloud
如需在项目 2 中启用 API,请运行以下命令:
gcloud services enable --project=PROJECT_2_ID compute.googleapis.com gcloud services enable --project=PROJECT_2_ID memorystore.googleapis.com gcloud services enable --project=PROJECT_2_ID servicedirectory.googleapis.com
第 1 步:记下服务附件路径
记下 Memorystore 实例的两个服务连接 URI。您可以使用这些服务连接 URI 设置新的 Private Service Connect 连接。
gcloud
如需查看启用了 Private Service Connect 的实例的摘要信息,请查找 pscServiceAttachments
字段。此字段会显示指向实例的服务连接的两个 URI。如需查看此信息,请使用 gcloud memorystore instances describe
命令:
gcloud memorystore instances describe INSTANCE_ID --project=PROJECT_1_ID --location=REGION_ID
替换以下内容:
- INSTANCE_ID 是 Memorystore 实例的名称。
- PROJECT_1_ID 是包含 Memorystore 实例的项目 1 的 ID。
- REGION_ID 是 Memorystore 实例所在区域的 ID。
以下是此命令的示例输出:
gcloud memorystore instances describe my-memorystore-instance \ --project=my-project-1 --location=us-central1 ... pscServiceAttachments: - connectionType: CONNECTION_TYPE_DISCOVERY serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa - serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa-2
第 2 步:为第二个 VPC 网络设置和注册 Private Service Connect 连接
本部分介绍了如何设置第二个 VPC 网络所需的两个 Private Service Connect 连接。
为网络 2 创建 Private Service Connect 端点
本部分介绍了您需要执行哪些操作才能在网络 2 中创建 2 个 Private Service Connect 端点。
为网络 2 预留 IP 地址
接下来,在网络 2 中预留 2 个 IP 地址。
预留 IP 地址 1
gcloud
如需预留 IP 地址 1,请运行 gcloud compute addresses create
命令:
gcloud compute addresses create IP_ADDRESS_1_ID \ --project=PROJECT_2_ID \ --addresses=IP_ADDRESS_1 \ --region=REGION_ID \ --subnet=projects/PROJECT_2_ID/regions/REGION_ID/subnetworks/SUBNET_2_ID \ --purpose=GCE_ENDPOINT
替换以下内容:
- IP_ADDRESS_1_ID 是您为 IP 地址指定的 ID。
- PROJECT_2_ID 是项目 2 的 ID。
- IP_ADDRESS_1 是您在前提条件资源中预留的
SUBNET_2_ID
范围内的 IP 地址。 - REGION_ID 是 Memorystore 实例所在的区域。
- SUBNET_2_ID 是您在前提条件资源中在项目 2 的网络 2 上预留的子网的 ID。
例如:
gcloud compute addresses create my-ip-address-1 \ --project=my-project-1 \ --addresses=10.142.0.10 \ --region=us-central1 \ --subnet=projects/my-project-1/regions/us-central1/subnetworks/my-subnet-1 \ --purpose=GCE_ENDPOINT
预留 IP 地址 2
gcloud
如需预留 IP 地址 2,请运行 gcloud compute addresses create
命令:
gcloud compute addresses create IP_ADDRESS_2_ID \ --project=PROJECT_2_ID \ --addresses=IP_ADDRESS_2 \ --region=REGION_ID \ --subnet=projects/PROJECT_2_ID/regions/REGION_ID/subnetworks/SUBNET_2_ID \ --purpose=GCE_ENDPOINT
替换以下内容:
为网络 2 添加转发规则
接下来,创建将 IP 地址连接到 Memorystore 实例的服务连接的转发规则。
为 IP 1 添加转发规则 1
gcloud
如需为 IP 1 添加转发规则,请运行 gcloud compute forwarding-rules create
命令:
gcloud compute forwarding-rules create FORWARDING_RULE_1_NAME \ --address=IP_ADDRESS_1_ID \ --network=projects/PROJECT_2_ID/global/networks/NETWORK_2_ID \ --region=REGION_ID \ --target-service-attachment=SERVICE_ATTACHMENT_1 \ --project=PROJECT_2_ID \ --allow-psc-global-access
替换以下内容:
- FORWARDING_RULE_1_NAME 是您为要创建的转发规则指定的名称。
- IP_ADDRESS_1_ID 是您在预留 IP 地址部分中预留的 IP 地址的 ID。
- NETWORK_2_ID 是第二个网络的 ID。
- REGION_ID 是 Memorystore 实例所在的区域。
- SERVICE_ATTACHMENT_1 是您在记下服务连接路径中记下的第一个服务连接。
- PROJECT_2_ID 是您的第二个项目。
例如:
gcloud compute forwarding-rules create my-forwarding-rule-1 \ --address=my-ip-address-1 \ --network=projects/my-project-2/global/networks/my-network-2 \ --region=us-central1 \ --target-service-attachment=projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-a0583920-edef-42-psc-sa \ --project=my-project-2 \ --allow-psc-global-access
为 IP 2 添加转发规则 2
gcloud
如需为 IP 2 添加转发规则,请运行 gcloud compute forwarding-rules create
命令:
gcloud compute forwarding-rules create FORWARDING_RULE_2_NAME \ --address=IP_ADDRESS_2_ID \ --network=projects/PROJECT_2_ID/global/networks/NETWORK_2_ID \ --region=REGION_ID \ --target-service-attachment=SERVICE_ATTACHMENT_2 \ --project=PROJECT_2_ID \ --allow-psc-global-access
替换以下内容:
- FORWARDING_RULE_2_NAME 是您为要创建的转发规则指定的名称。
- IP_ADDRESS_2_ID 是您在预留 IP 地址部分中预留的 IP 地址的 ID。
- NETWORK_2_ID 是第二个网络的 ID。
- REGION_ID 是 Memorystore 实例所在的区域。
- SERVICE_ATTACHMENT_2 是您在记下服务连接路径中记下的第二个服务连接。
- PROJECT_2_ID 是您的第二个项目。
例如:
gcloud compute forwarding-rules create my-forwarding-rule-2 \ --address=my-ip-address-2 \ --network=projects/my-project-2/global/networks/my-network-2 \ --region=us-central1 \ --target-service-attachment=projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-a0583920-edef-42-psc-sa-2 \ --project=my-project-2 \ --allow-psc-global-access
为网络 2 注册 Memorystore 实例的 Private Service Connect 连接
本部分介绍了向 Memorystore 实例注册 Private Service Connect 连接的步骤。首先,您需要获取转发规则的关联 ID 和项目 ID。
然后,您需要向 Memorystore 实例注册 Private Service Connect 连接信息,以便启用连接。
获取网络 2 的转发规则连接 ID 和项目 ID
接下来,获取每个转发规则的 pscConnectionId
值。记下这些值。
获取 Private Service Connect 连接 ID 1
gcloud
如需查看 pscConnectionId
值和其他转发规则摘要信息,请运行 gcloud compute forwarding-rules describe
命令:
gcloud compute forwarding-rules describe FORWARDING_RULE_1_NAME \ --project=PROJECT_2_ID \ --region=REGION_ID
替换以下内容:
- FORWARDING_RULE_1_NAME 是第一个转发规则的名称。
- PROJECT_2_ID 是包含转发规则的 Google Cloud 项目的 ID。
以下示例展示了此命令的示例输出:
gcloud compute forwarding-rules describe my-forwarding-rule-1 \ --project=my-project-2 \ --region=us-central1 ... pscConnectionId: '94710983646969729'
获取 Private Service Connect 连接 ID 2
gcloud
如需查看 pscConnectionId
值和其他转发规则摘要信息,请运行 gcloud compute forwarding-rules describe
命令:
gcloud compute forwarding-rules describe FORWARDING_RULE_2_NAME \ --project=PROJECT_2_ID \ --region=REGION_ID
替换以下内容:
- FORWARDING_RULE_2_NAME 是第二个转发规则的名称。
- PROJECT_2_ID 是包含转发规则的 Google Cloud 项目的 ID。
注册 VPC 网络 2 的连接信息
gcloud
如需注册每个 Private Service Connect 连接,您需要提供 Private Service Connect 连接 ID、IP 地址、网络路径、转发规则路径/URI 和目标服务连接。为此,请运行 gcloud memorystore instances update --add-endpoints
命令:
gcloud memorystore instances update INSTANCE_ID \ --location=REGION_ID \ --project=PROJECT_1_ID \ --add-endpoints='[{"connections":[{"pscConnection":{"pscConnectionId":"PSC_CONNECTION_1_ID","ipAddress":"IP_ADDRESS_1","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwardingRule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_1_NAME","serviceAttachment":"SERVICE_ATTACHMENT_1"}}, {"pscConnection":{"pscConnectionId":"PSC_CONNECTION_2_ID","ipAddress":"IP_ADDRESS_2","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwardingRule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_2_NAME","serviceAttachment":"SERVICE_ATTACHMENT_2"}}]}]'
替换以下内容:
- INSTANCE_ID 是 Memorystore for Valkey 实例的 ID。
- REGION_ID 是 Memorystore 实例所在区域的 ID。
- PROJECT_1_ID 是 Memorystore 实例所在的项目 1 的 ID。
- PROJECT_2_ID 是项目 2 的 ID。
- PSC_CONNECTION_1_ID 是您在获取网络 2 的转发规则连接 ID 时记录的 Private Service Connect 连接 1。
- IP_ADDRESS_1 是您预留的第一个 IP 地址的地址。
- NETWORK_2_ID 是网络 2 的 ID。
- FORWARDING_RULE_1_NAME 是您创建的第一个转发规则的名称。
- SERVICE_ATTACHMENT_1 是
FORWARDING RULE_1_NAME
关联的第一个服务附件。 - PSC_CONNECTION_2_ID 是您在获取网络 2 的转发规则连接 ID 时记录的 Private Service Connect 连接 2。
- IP_ADDRESS_2 是您预留的第二个 IP 地址的地址。
- FORWARDING_RULE_2_NAME 是您创建的第二个转发规则的名称。
- SERVICE_ATTACHMENT_2 是与
FORWARDING_RULE_2_NAME
关联的第二个服务附件。
例如:
gcloud memorystore instances update my-instance \ --location=us-central-1 \ --project=my-project-1 \ --add-endpoints='[{"connections":[{"pscConnection":{"pscConnectionId":"94710983646969729","ipAddress":"10.142.0.10","network":"projects/my-project-2/global/networks/my-network-2","forwardingRule":"projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-1","serviceAttachment":"projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa"}}, {"pscConnection":{"pscConnectionId":"86510983646969993","ipAddress":"10.142.0.12","network":"projects/my-project-2/global/networks/my-network-2","forwardingRule":"projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-2","serviceAttachment":"projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa-2"}}]}]'
第 3 步:设置客户端连接
本部分介绍了如何配置客户端以便与本指南中介绍的网络建立连接。
记下连接端点信息
接下来,记下两个 IP 地址。第一种是自动注册的 Private Service Connect 连接的发现连接 IP 地址。它列在 discoveryEndpoints:
字段后面。
用户注册的 Private Service Connect 连接的发现连接 IP 地址列在 Endpoints:connections:pscConnection
部分。此 IP 地址对应于 CONNECTION_TYPE_DISCOVERY
字段。
gcloud
如需查看网络的 Private Service Connect 连接端点信息,请运行 gcloud memorystore instances describe
命令:
gcloud memorystore instances describe INSTANCE_ID \ --location=REGION_ID \ --project=PROJECT_1_ID
记下 IP 地址:
endpoints:
- connections:
- pscAutoConnection:
address: 10.128.0.55
connectionType: CONNECTION_TYPE_DISCOVERY
forwardingRule: projects/my-project-1/regions/us-central1/forwardingRules/my-forwarding-rule-3
network: projects/my-project-1/global/networks/my-network-2
projectId: my-project-1
pscConnectionId: '24710983646969729'
pscConnectionStatus: PSC_CONNECTION_STATUS_ACTIVE
serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa
- pscAutoConnection:
address: 10.128.0.56
forwardingRule: projects/my-project-1/regions/us-central1/forwardingRules/my-forwarding-rule-4
network: projects/my-project-1/global/networks/my-network-2
projectId: my-project-1
pscConnectionId: '26510983646969993'
pscConnectionStatus: PSC_CONNECTION_STATUS_ACTIVE
serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa-2
- connections:
- pscConnection:
address: 10.142.0.10
connectionType: CONNECTION_TYPE_DISCOVERY
forwardingRule: projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-3
network: projects/my-project-2/global/networks/my-network-2
projectId: my-network-2
pscConnectionId: '94710983646969729'
pscConnectionStatus: PSC_CONNECTION_STATUS_ACTIVE
serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa
- pscConnection:
address: 10.142.0.12
forwardingRule: projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-4
network: projects/my-project-2/global/networks/my-network-2
projectId: my-project-2
pscConnectionId: '86510983646969993'
pscConnectionStatus: PSC_CONNECTION_STATUS_ACTIVE
serviceAttachment: projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa-2
在上面的输出结果中,您需要记下的发现 Private Service Connect 连接的 IP 地址值分别为 10.128.0.55
(自动注册)和 10.142.0.10
(用户注册)。
配置客户端
接下来,按如下方式配置客户端:
使用网络 1 的发现 IP 配置网络 1 中的客户端连接。在本教程中,这是您在
endpoints:
部分的网络 1 对应的连接条目中记下的 IP 地址,与CONNECTION_TYPE_DISCOVERY
值相对应。使用网络 2 中的发现 IP 配置网络 2 中的客户端连接。在本教程中,这是您在
endpoints
部分的连接条目中记下的 IP 地址,对应于网络 2,并且与CONNECTION_TYPE_DISCOVERY
值相对应。
如需了解如何连接到 Memorystore 实例,请参阅使用 valkey-cli 从 Compute Engine 虚拟机连接。
第 4 步:删除您的 Private Service Connect 连接
在删除 Memorystore 实例之前,您必须先删除与该实例关联的所有用户注册的 Private Service Connect 连接。为此,您必须删除转发规则并取消注册您在本教程中设置的端点。
此外,您还可以选择删除预留的 IP 地址,以便将其释放以供日后使用。
删除转发规则
本部分介绍了如何删除您在本教程前面部分创建的转发规则。
删除转发规则 1
gcloud
如需删除转发规则,请运行 gcloud compute forwarding-rules delete
命令:
gcloud compute forwarding-rules delete FORWARDING_RULE_1_NAME \ --region=REGION_ID \ --project=PROJECT_2_ID
替换以下内容:
- FORWARDING_RULE_1_NAME 是第一个转发规则的名称。
- PROJECT_2_ID 是项目 2 的 ID。
删除转发规则 2
gcloud
如需删除转发规则,请运行 gcloud compute forwarding-rules delete
命令:
gcloud compute forwarding-rules delete FORWARDING_RULE_2_NAME \ --region=REGION_ID \ --project=PROJECT_2_ID
替换以下内容:
- FORWARDING_RULE_2_NAME 是第二个转发规则的名称。
- PROJECT_2_ID 是项目 2 的 ID。
为 VPC 网络 2 注销 Private Service Connect 端点
本部分介绍了如何取消注册您在本教程前面部分注册的 Private Service Connect 端点。
为 VPC 网络 2 注销端点
gcloud
如需向 Memorystore 实例取消注册端点信息,请运行 gcloud memorystore instances update --remove-endpoints
命令:
gcloud memorystore instances update INSTANCE_ID \ --location=REGION_ID \ --project=PROJECT_1_ID \ --remove-endpoints='[{"connections":[{"pscConnection":{"pscConnectionId":"PSC_CONNECTION_1_ID","ipAddress":"IP_ADDRESS_1","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwardingRule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_1_NAME","serviceAttachment":"SERVICE_ATTACHMENT_1"}}, {"pscConnection":{"pscConnectionId":"PSC_CONNECTION_2_ID","ipAddress":"IP_ADDRESS_2","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwardingRule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_2_NAME","serviceAttachment":"SERVICE_ATTACHMENT_2"}}]}]'
替换以下内容:
- INSTANCE_ID 是您要为其取消注册端点的实例的 ID。
- PROJECT_1_ID 是 Memorystore 实例所在的项目 1 的 ID。
- REGION_ID 是 Memorystore 实例所在区域的 ID。
- PSC_CONNECTION_1_ID 是您在获取网络 2 的转发规则连接 ID 时记录的 Private Service Connect 连接 1。
- IP_ADDRESS_1 是您预留的第一个 IP 地址的地址。
- NETWORK_2_ID 是网络 2 的 ID。
- FORWARDING_RULE_1_NAME 是您创建的第一个转发规则的名称。
- SERVICE_ATTACHMENT_1 是
FORWARDING RULE_1_NAME
关联的第一个服务附件。 - PSC_CONNECTION_2_ID 是您在获取网络 2 的转发规则连接 ID 时记录的 Private Service Connect 连接 2。
- IP_ADDRESS_2 是您预留的第二个 IP 地址的地址。
- FORWARDING_RULE_2_NAME 是您创建的第二个转发规则的名称。
- SERVICE_ATTACHMENT_2 是与
FORWARDING_RULE_2_NAME
关联的第二个服务附件。
第 5 步:删除 Memorystore for Valkey 实例
您还可以选择删除 Memorystore 实例。不过,您必须先取消注册 Private Service Connect 端点,然后才能删除 Memorystore 实例。
gcloud
如需删除 Memorystore for Valkey 实例,请运行 gcloud memorystore instances delete
命令:
gcloud memorystore instances delete INSTANCE_ID \ --location=REGION_ID \ --project=PROJECT_1_ID
替换以下内容:
- INSTANCE_ID 是实例的 ID。
- REGION_ID 是 Memorystore 实例所在区域的 ID。
- PROJECT_1_ID 是项目 1 的 ID。这是 Memorystore 实例所在的项目。