為使用自動註冊連線佈建的執行個體設定多個虛擬私有雲網路

本頁說明如何為現有的 Memorystore for Redis Cluster 執行個體設定多個虛擬私有雲 (VPC) 網路的連線,該執行個體已有一些自動註冊的 Private Service Connect 連線。本教學課程將說明如何建立這類端點,方法是在消費者網路中建立 Private Service Connect 端點,以 Memorystore 執行個體的服務附件為目標,並向執行個體註冊元件。本頁面也會說明如何透過 Private Service Connect 連線,將用戶端連線至執行個體。

如要為未佈建自動註冊 Private Service Connect 連線的新 Memorystore 設定多個虛擬私有雲網路,請參閱使用使用者註冊的 Private Service Connect 連線設定多個虛擬私有雲網路

如要進一步瞭解多個虛擬私有雲網路設定,請參閱「關於多個虛擬私有雲網路」。

顯示網路架構的圖表。其中有兩個客戶虛擬私有雲網路連線至 Private Service Connect 連線,而該連線又連線至 Memorystore 服務附件。

主要步驟摘要

本節提供本教學課程中設定新 Private Service Connect 連線的主要步驟摘要清單。首先,請完成「事前準備」一節中的步驟,為本教學課程做好準備。

重要步驟

  1. 步驟 1:記下服務附件路徑
  2. 步驟 2:為第二個虛擬私有雲網路設定及註冊 Private Service Connect 連線
  3. 步驟 3:設定用戶端連線

此外,你也可以:

事前準備

開始之前,請確認您具備下列 IAM 角色和 Google Cloud 資源。

必要 IAM 角色

資源 ID 範例 資源類型
roles/redis.admin 完全控管 Memorystore for Redis Cluster 執行個體,並在執行個體的生命週期內控管執行個體。
roles/servicedirectory.editor 授予您編輯 Service Directory 資源的權限。建立 Private Service Connect 端點時,需要這個角色。
roles/compute.networkAdmin 授予對虛擬私有雲網路的完整控制權,該網路會啟動與 Memorystore 執行個體的連線。您可以建立及管理 IP 位址、防火牆規則和 Private Service Connect 端點。建立 Private Service Connect 端點時,需要這個角色。

如果您使用 Private Service Connect 從多個虛擬私有雲網路連線至 Memorystore 執行個體,則每個網路可能會有各自的管理員。

必要資源

開始本教學課程前,請先建立下列資源。建議您使用下列 ID 和位置建立資源,但您也可以選擇自己的 ID 和位置。本教學課程假設您已建立 Memorystore 執行個體,且該執行個體有兩個自動註冊的 Private Service Connect 連線。

資源 ID 範例 資源類型 完整路徑範例 說明
my-memorystore-instance Memorystore for Redis Cluster 執行個體 不適用 在本教學課程的範例指令中,這個值代表現有執行個體,該執行個體已在網路 1 中自動註冊 Private Service Connect 連線。
my-network-1 虛擬私有雲網路 projects/my-project-1/global/networks/my-network-1 您的 Memorystore 在這個網路上有自動註冊的 Private Service Connect 連線
my-project-1 Google Cloud 專案 不適用 您的 Memorystore 執行個體位於這個專案中

在本教學課程中,您將使用下列資源在虛擬私有雲網路 2 中建立兩個 Private Service Connect 連線:

資源 ID 範例 資源類型 完整路徑範例 說明
my-project-2 Google Cloud 專案 不適用 在本教學課程中,您將在這個專案中建立第二個網路和第二個子網路。不過,如果您選擇,第二個網路和子網路可以與第一個網路位於同一個專案中。
my-network-2 虛擬私有雲網路 projects/my-project-2/global/networks/my-network-2 在本教學課程中,您會在該網路中建立 2 個 Private Service Connect 端點
my-subnet-2 虛擬私有雲子網路 projects/my-project-2/regions/us-central1/subnetworks/my-subnet-2 在本教學課程中,您將在這個子網路中保留 2 個 IP 位址。

啟用 API

啟用下列 API,以便管理 Compute Engine 網路、Memorystore for Redis Cluster 和 Private Service Connect 資源。

gcloud

如要在專案 2 中啟用 API,請執行下列指令:

gcloud services enable --project=PROJECT_2_ID compute.googleapis.com
gcloud services enable --project=PROJECT_2_ID redis.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 redis clusters describe 指令:

gcloud redis clusters describe INSTANCE_ID --project=PROJECT_1_ID --region=REGION_ID

更改下列內容:

  • INSTANCE_ID 是 Memorystore 執行個體的名稱。
  • PROJECT_1_ID 是包含 Memorystore 執行個體的專案 1 ID。
  • REGION_ID 是 Memorystore 執行個體所在的地區 ID。

以下是這個指令的輸出範例:

gcloud redis clusters describe my-memorystore-instance \
--project=my-project-1 --region=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:為第二個虛擬私有雲網路設定及註冊 Private Service Connect 連線

本節說明如何為第二個虛擬私有雲網路設定兩個 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

更改下列內容:

  • IP_ADDRESS_2_ID 是您為 IP 位址指定的 ID。
  • PROJECT_2_ID 是專案 2 的 ID。這是您建立第二個 VPC 網路和子網路的專案。
  • IP_ADDRESS_2 是您從 SUBNET_2_ID 範圍內選擇的 IP 位址,該範圍是您在必要資源中保留的範圍。
  • REGION_ID 是 Memorystore 執行個體所在的地區。
  • SUBNET_2_ID 是您在專案 2 的網路 2 上預留的子網路 ID,屬於必要資源

為網路 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 是專案 2 的 ID。這是您建立第二個 VPC 網路和子網路的專案。

例如:

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 是專案 2 的 ID。這是您建立第二個 VPC 網路和子網路的專案。

例如:

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 執行個體的連線。首先,您需要取得轉送規則的連線 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。

為虛擬私有雲網路 2 註冊 Private Service Connect 連線資訊

gcloud

如要註冊每項連線,請提供 Private Service Connect 連線 ID、IP 位址、網路路徑、轉送規則路徑/URI,以及目標服務連結。如要執行這項操作,請執行 gcloud redis clusters add-cluster-endpoints 指令:

gcloud redis clusters add-cluster-endpoints INSTANCE_ID \
--region=REGION_ID \
--project=PROJECT_1_ID \
--cluster-endpoint='["psc-connection":[{"psc-connection-id":"PSC_CONNECTION_1_ID","address":"IP_ADDRESS_1","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwarding-rule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_1_NAME","service-attachment":"SERVICE_ATTACHMENT_1"},{"psc-connection-id":"PSC_CONNECTION_2_ID","address":"IP_ADDRESS_2","network":"projects/PROJECT_2_ID/global/networks/NETWORK_2_ID","forwarding-rule":"projects/PROJECT_2_ID/regions/REGION_ID/forwardingRules/FORWARDING_RULE_2_NAME","service-attachment":"SERVICE_ATTACHMENT_2"}]]'

更改下列內容:

  • INSTANCE_ID 是 Memorystore for Redis Cluster 執行個體的 ID。
  • REGION_ID 是 Memorystore 執行個體所在的地區 ID。
  • PROJECT_1_ID 是 Memorystore 執行個體所在的專案 1 ID。如果 Private Service Connect 連線與執行個體位於不同專案,請使用包含連線的專案做為這個參數的值。
  • PROJECT_2_ID 是專案 2 的 ID。
  • PSC_CONNECTION_1_ID 是您在取得網路 2 的轉送規則連線 ID 時記下的 Private Service Connect 連線 ID 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 連線 ID 2。
  • IP_ADDRESS_2 是您預留的第二個 IP 位址。
  • FORWARDING_RULE_2_NAME 是您建立的第二個轉送規則名稱。
  • SERVICE_ATTACHMENT_2 是與 FORWARDING_RULE_2_NAME 連結的第二個服務附件。

例如:

gcloud redis clusters add-cluster-endpoints my-instance \
--region=us-central-1 \
--project=my-project-1 \
--cluster-endpoint='["psc-connection":[{"psc-connection-id":"94710983646969729","address":"10.142.0.10","network":"projects/my-project-2/global/networks/my-network-2","forwarding-rule":"projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-1","service-attachment":"projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa"},{"psc-connection-id":"86510983646969993","address":"10.142.0.12","network":"projects/my-project-2/global/networks/my-network-2","forwarding-rule":"projects/my-project-2/regions/us-central1/forwardingRules/my-forwarding-rule-2","service-attachment":"projects/1048073346231/regions/us-central1/serviceAttachments/gcp-memorystore-auto-8d7d48ef-3ca3-4d-psc-sa-2"}]]'

步驟 3:設定用戶端連線

本節說明如何設定用戶端,以便連線至本指南中的網路。

記下 Private Service Connect 連線端點資訊

接著,請記下兩個 IP 位址。第一個是自動註冊的 Private Service Connect 連線的探索連線 IP 位址。這個欄位會列在 discoveryEndpoints: 欄位之後。

使用者註冊的 Private Service Connect 連線探索連線 IP 位址會列在 clusterEndpoints:connections:pscConnection 區段。這個 IP 位址對應於 CONNECTION_TYPE_DISCOVERY 欄位。

gcloud

如要查看網路的 Private Service Connect 連線端點資訊,請執行 gcloud redis clusters describe 指令:

gcloud redis clusters describe INSTANCE_ID \
--region=REGION_ID \
--project=PROJECT_1_ID

請記下這些 IP 位址:

discoveryEndpoints:
- address: 10.128.0.55
  port: 6379
  pscConfig:
    network: projects/my-project-1/global/networks/my-network-1

...
...

clusterEndpoints:
- 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 中設定用戶端連線。在本教學課程中,這個 IP 位址就是您記下的 discoveryEndpoints: 欄位後方列出的位址。

  • 使用網路 2 中的探索 IP,在網路 2 中設定用戶端連線。在本教學課程中,這是您在 clusterEndpoints 區段中記下的 IP 位址,且對應 CONNECTION_TYPE_DISCOVERY 值。

如需連線至 Memorystore 執行個體的說明,請參閱「使用 redis-cli 從 Compute Engine VM 連線」。

刪除 Private Service Connect 連線

您可以在刪除執行個體前,選擇刪除與執行個體相關聯的所有使用者註冊的 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。這是您建立第二個 VPC 網路和子網路的專案。

刪除轉送規則 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 端點

取消註冊虛擬私有雲網路 2 的端點

gcloud

如要向 Memorystore 執行個體取消註冊端點資訊,請執行 gcloud redis clusters remove-cluster-endpoints 指令:

gcloud redis clusters remove-cluster-endpoints INSTANCE_ID \
--region=REGION_ID \
--project=PROJECT_1_ID \
--cluster-endpoint='["psc-connection":[{"psc-connection-id":"PSC_CONNECTION_1_ID"},{"psc-connection-id":"PSC_CONNECTION_2_ID"}]]'

更改下列內容:

  • INSTANCE_ID 是要取消註冊端點的執行個體 ID。
  • PROJECT_1_ID 是 Memorystore 執行個體所在的專案 1 ID。
  • REGION_ID 是 Memorystore 執行個體所在的地區 ID。
  • PSC_CONNECTION_1_ID 是您在取得轉送規則連線 ID 時記下的第一個 Private Service Connect 連線 ID。
  • PSC_CONNECTION_2_ID 是您在取得轉送規則連線 ID 時記下的第二個 Private Service Connect 連線 ID。

刪除 Memorystore for Redis Cluster 執行個體

你也可以選擇刪除 Memorystore 執行個體。不過,您必須先取消註冊 Private Service Connect 端點,才能刪除 Memorystore 執行個體。

gcloud

如要刪除 Memorystore for Redis Cluster 執行個體,請執行 gcloud redis clusters delete 指令:

gcloud redis clusters delete INSTANCE_ID \
--region=REGION_ID \
--project=PROJECT_1_ID

更改下列內容:

  • INSTANCE_ID 是執行個體的 ID。
  • REGION_ID 是 Memorystore 執行個體所在的地區 ID。
  • PROJECT_1_ID 是專案 1 的 ID。這是 Memorystore 執行個體所在的專案。