1. 簡介
Private Service Connect (PSC) 可簡化安全且私密地使用服務的方式。這個模型可讓服務用戶在不同機構之間私下連線至服務供應商,並免除虛擬私有雲對接的需求,大幅簡化網路架構。圖 1 說明 VPC 對等互連和 PSC 屬性。
圖 1. 
服務用戶可彈性選擇如何將私人 IP 位址分配給服務,同時免除管理生產者虛擬私有雲子網路範圍的負擔。現在只要使用服務連結,即可將虛擬私有雲中選取的虛擬 IP 指派給這類服務。
在本程式碼研究室中,您將建構完整的 Private Service Connect 架構,說明如何搭配 MongoDB Atlas 使用 PSC 全域存取權。
全域存取權可讓用戶端跨區域界線連線至 Private Service Connect (PSC)。這項功能有助於在多個區域代管的受管理服務中建立高可用性,或允許用戶端存取與用戶端不在同一區域的服務。
2. 啟用全域存取權
全域存取權是選用功能,可在取用端轉送規則中設定。以下指令顯示設定方式:
gcloud beta compute forwarding-rules create psc-west \
--region=us-west1 \
--network=consumer-vpc \
--address=psc-west-address \
--target-service-attachment=projects/.../serviceAttachments/sa-west \
--allow-psc-global-access
--allow-psc-global-access旗標可啟用 Private Service Connect 端點的全域存取權- 啟用全域存取權後,用戶端可以位於與 Private Service Connect 轉送規則不同的區域,但轉送規則仍須與所連線的服務連結位於相同區域。
- 如要啟用全域存取權,生產者服務附件不需要任何設定。這純粹是消費者端的選項。
您也可以隨時為現有端點開啟或關閉全域存取權。在現有端點上啟用全域存取權時,有效連線不會中斷。使用下列指令,在現有的轉送規則上啟用全域存取權:
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
停用全域存取權
您也可以使用 --no-allow-psc-global-access 旗標,在現有的轉送規則中停用全域存取權。請注意,執行這項指令後,所有有效的跨區域流量都會終止。
gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access
3. 建構項目
- 系統會建立多區域 MongoDB Atlas 叢集 (拓撲如圖 2 所示),其中 us-west1 和 us-west2 區域分別有一個和兩個節點。
- 用戶虛擬私有雲和相關聯的 VM,可存取 us-west1 和 us-west2 中的 MongoDB 叢集。
- 虛擬私有雲,以及分別位於 us-west1 和 us-west2 區域的兩個子網路,每個子網路至少有 64 個可用 IP 位址 (建立子網路時請使用 /26 以下的範圍)。
MongoDB 用戶端會安裝在消費者 VPC 的 vm1 上。如果 us-west1 中的主要節點發生故障,用戶端就能透過 us-west2 中的新主要節點讀取/寫入資料。
圖 2. 
課程內容
- 如何在兩個區域中建立及部署虛擬私有雲和子網路
- 如何部署多區域 MongoDB Atlas 叢集
- 如何建立私人端點
- 如何連線至 MongoDB
- 如何執行及驗證多區域 MongoDB 容錯移轉
軟硬體需求
- Google Cloud 專案
- 每個區域提供一個 /26 子網路
- 專案擁有者或機構擁有者必須有權存取 MongoDB Atlas,才能建立叢集層級為 M10 以上的 MongoDB 叢集。(請使用 GETATLAS 取得免費抵免額,以執行 PoV)
4. 事前準備
更新專案以支援程式碼研究室
本程式碼研究室會使用 $variables,協助您在 Cloud Shell 中實作 gcloud 設定。
在 Cloud Shell 中執行下列操作:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
5. 消費者設定
建立消費者虛擬私有雲
在 Cloud Shell 中執行下列操作:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
建立消費者子網路
在 Cloud Shell 中執行下列操作:
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
在 Cloud Shell 中,為 us-west1 建立消費者端點:
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
在 Cloud Shell 中,為 us-west2 建立消費者端點:
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
Cloud Router 和 NAT 設定
由於 VM 執行個體沒有外部 IP 位址,因此本程式碼研究室使用 Cloud NAT 安裝軟體套件。
在 Cloud Shell 中建立 Cloud Router。
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
在 Cloud Shell 中建立 NAT 閘道。
gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
執行個體 vm1 設定
在下一節中,您將建立 Compute Engine 執行個體 vm1。
在 Cloud Shell 中建立執行個體 vm1。
gcloud compute instances create vm1 \
--project=$projectname \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=subnet=vm-subnet,no-address \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
如要允許 IAP 連線至您的 VM 執行個體,請根據以下條件建立防火牆規則:
- 套用至所有您希望能透過 IAP 存取的 VM 執行個體。
- 允許來自 IP 範圍 35.235.240.0/20 的輸入流量。這個範圍包含 IAP 用於 TCP 轉送的所有 IP 位址。
在 Cloud Shell 中,建立 IAP 防火牆規則。
gcloud compute firewall-rules create ssh-iap-consumer-vpc \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. 建立多區域 MongoDB Atlas 叢集
- 開始設定 PSC 前,我們需要先設定 Atlas 叢集。您可以透過下列兩種方式訂閱 MongoDB Atlas:
- 如果您有 Google Cloud 帳戶,可以透過 Google Cloud Marketplace 購買。如要設定訂閱方案,請參閱說明文件。
- 使用 Atlas 註冊頁面。
- 訂閱 Atlas 後,按一下「Build a Database」按鈕,如下所示。

- 建立新叢集 → 專屬

- 雲端服務供應商和區域 → Google Cloud
- 多雲端、多區域和工作負載隔離 → 已選取 (藍色勾號)

- 可選取的節點 → us-west1 (1 個節點)、us-west2 (2 個節點)

- 叢集層級 → M10,其他設定保留預設值

- 叢集名稱 → psc-mongodb-uswest1-uswest2

- 選取「→」→「建立叢集」

- 建立資料庫需要 7 到 10 分鐘

部署叢集後的檢視畫面

7. 為 us-west1 建立私人端點
- 登入 Atlas 帳戶並前往專案。
建立新使用者,允許讀取/寫入任何資料庫
依序選取「安全性」→「資料庫存取權」,然後新增資料庫使用者。以下為範例,使用者名稱和密碼設定為 codelab。請務必選取內建角色,以便讀取及寫入任何資料庫。

- 在「安全性」→「網路存取」下方,「IP 存取清單」不需要任何項目
在 MongoDB Atlas 中準備私人端點
- 依序選取「網路存取」→「私人端點」→「專屬叢集」→「新增私人端點」

雲端服務供應商
- 選取 Google Cloud,然後按一下「下一步」

服務連結
- 選取 us-west1 地區,然後按一下「下一步」

端點
- 如要建立 Private Service Connect 端點,請提供下列資訊:
- Google Cloud 雲端專案 ID:選取「顯示操作說明」查看詳細資料
- 虛擬私有雲名稱:consumer-vpc
- 子網路名稱:psc-endpoint-us-west1
- Private Service Connect 端點前置字元:psc-endpoint-us-west1

設定端點
在下一節中,系統會產生名為 setup_psc.sh 的殼層指令碼,請將其儲存在本機。儲存後,請編輯殼層指令碼,允許 PSC 全域存取。您可以在 Google Cloud 雲端專案的 Cloud Shell 中執行這項操作。
- 範例殼層指令碼,輸出內容的值會有所不同

- 從 MongoDB 控制台複製殼層指令碼,然後將內容儲存在 Google Cloud Cloud Shell 終端機中,並確保將指令碼儲存為 setup_psc.sh
更新前的範例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
更新殼層指令碼,支援全域存取
使用 nano 或 vi 編輯器找出並更新殼層指令碼,語法如下:
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
更新後的範例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
執行殼層指令碼
前往並執行 setup_psc.sh 指令碼,完成後會建立名為 atlasEndpoints-psc-endpoint-us-west1.json 的檔案。這個 JSON 檔案包含部署作業下一個步驟所需的 IP 位址和 Private Service Connect 端點名稱清單。
在 Cloud Shell 中執行下列操作:
sh setup_psc.sh
指令碼完成後,請使用 Cloud Shell 編輯器在本機下載 atlasEndpoints-psc-endpoint-us-west1.json。

上傳 JSON 檔案
上傳先前儲存的 JSON 檔案 atlasEndpoints-psc-endpoint-us-west1.json。


選取「建立」
驗證 Private Service Connect 端點
在 MongoDB 使用者介面中,依序前往專案、安全性 → 網路存取權 → 私人端點。選取專屬叢集分頁後,端點轉換為可用狀態需要 10 分鐘。
可用狀態

在 Google Cloud 控制台中,前往「網路服務」→「Private Service Connect」,然後選取「已連線的端點」分頁標籤,顯示從「待處理」轉換為「已接受」的消費者端點,如下所示:

8. 為 us-west2 建立私人端點
- 登入 Atlas 帳戶並前往專案。
在 MongoDB Atlas 中準備私人端點
- 依序選取「網路存取」→「私人端點」→「專屬叢集」→「新增私人端點」

雲端服務供應商
- 選取 Google Cloud,然後按一下「下一步」

服務連結
- 選取 us-west2 地區,然後按一下「下一步」

端點
- 如要建立 Private Service Connect 端點,請提供下列資訊:
- Google Cloud 雲端專案 ID:選取「顯示操作說明」查看詳細資料
- 虛擬私有雲名稱:consumer-vpc
- 子網路名稱:psc-endpoint-us-west2
- Private Service Connect 端點前置字元:psc-endpoint-us-west2

設定端點
在下一節中,系統會產生名為 setup_psc.sh 的殼層指令碼,請將其儲存在本機。儲存後,請編輯殼層指令碼,允許 PSC 全域存取。您可以在 Google Cloud 雲端專案的 Cloud Shell 中執行這項操作。
- 範例殼層指令碼,輸出內容的值會有所不同

- 從 MongoDB 控制台複製殼層指令碼,然後將內容儲存在 Google Cloud Cloud Shell 終端機中,並確保將指令碼儲存為 setup_psc.sh
更新前範例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
更新殼層指令碼,支援全域存取
使用 nano 或 vi 編輯器找出並更新殼層指令碼,語法如下:
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
更新後的範例:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
執行殼層指令碼
前往並執行 setup_psc.sh 指令碼,完成後會建立名為 atlasEndpoints-psc-endpoint-us-west2.json 的檔案。這個 JSON 檔案包含部署作業下一個步驟所需的 IP 位址和 Private Service Connect 端點名稱清單。
在 Cloud Shell 中執行下列操作:
sh setup_psc.sh
指令碼完成後,請使用 Cloud Shell 編輯器在本機下載 atlasEndpoints-psc-endpoint-us-west2.json。

上傳 JSON 檔案
上傳先前儲存的 JSON 檔案 atlasEndpoints-psc-endpoint-us-west2.json


選取「建立」
驗證 Private Service Connect 端點
在 MongoDB 使用者介面中,依序前往專案、安全性 → 網路存取權 → 私人端點。選取分頁後,專屬叢集的端點會在 10 分鐘後轉換為可用狀態。
可用狀態:

在 Google Cloud 控制台中,前往「網路服務」→「Private Service Connect」,然後選取「已連線的端點」分頁,顯示從「待處理」轉換為「已接受」的消費者端點,如下例所示。消費者端點共部署 100 個端點,必須先轉換為已接受,才能進行下一個步驟。

9. 從私人端點連線至 MongoDB Atlas
Private Service Connect 連線獲得接受後,更新 MongoDB 叢集還需要額外時間 (10 到 15 分鐘)。在 MongoDB UI 中,灰色外框代表叢集更新,因此無法連線至私人端點。

找出部署作業並選取「連線」(請注意,灰色方塊已不再顯示)

選擇連線類型 → 私人端點,然後選取「選擇連線方法」

選取「Connect with the MongoDB Shell」(使用 MongoDB Shell 連線)

選取「I do not have the MongoDB Shell installed, Ubuntu 20.4」,並務必將步驟 1 和步驟 3 的內容複製到記事本。

10. 安裝 mongosh 應用程式
安裝前,您需要根據先前在步驟 1 和 3 中複製的值建立指令字串。接著,您會使用 Cloud Shell 透過 SSH 連線至 vm1,然後安裝並驗證主要 (us-west1) 資料庫的 mongosh 應用程式。在 consumer-vpc 中建立 vm1 時,已安裝 Ubuntu 20.4 映像檔。
選擇連線方法:步驟 1,複製下載網址

指令字串範例,請替換為自訂值:
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
選擇連線方式 (步驟 3)。

指令字串範例,請替換為自訂值:
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
登入 vm1
在 Cloud Shell 中執行下列操作:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
在 Cloud Shell 中使用 IAP 登入 vm1,如果逾時請重試。
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
從作業系統執行安裝作業
從 Cloud Shell OS 登入執行安裝作業 (詳情請參閱這篇文章),並使用自訂字串更新下方語法
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
作業應會傳回
OK
。
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update -y
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb
連線至 MongoDB 部署
在 Cloud Shell OS 登入中執行下列操作。設定的使用者名稱和密碼為「codelab」。
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
範例如下:

對資料庫執行指令
在 Cloud Shell OS 登入中執行下列操作。
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})
11. 容錯移轉使用中的 MongoDB 區域 (us-west1)
執行容錯移轉前,請先驗證 us-west1 是主要節點,且 us-west2 有兩個次要節點。
依序前往「Database」→「psc-mongodb-uswest1-uswest2」→「Overview」

在下一節中,請登入位於 us-west1 的 vm1,將主要 MongoDB 叢集區域 us-west1 容錯移轉,並確認資料庫仍可從 us-west2 的 MongoDB 叢集存取。
您可以透過 Atlas UI 測試主要和區域性容錯移轉。
- 登入 Atlas UI。
- 依序點選叢集名稱旁的 [...] 和「Test Outage」(測試中斷)。

- 選取「區域性服務中斷」→ 選取區域。

- 選取主要區域 us-west1 → 模擬區域中斷。

選取叢集後,系統會在 3 到 4 分鐘內顯示中斷模擬結果
關閉視窗


確認 us-west1 已停止運作,且 us-west2 現在已接管主要角色
依序前往「Database」→「psc-mongodb-uswest1-uswest2」→「Overview」

驗證與新主叢集 (us-west2) 的連線
登入位於 us-west1 的 vm1,並存取 us-west2 中的 mongodb,驗證 Private Service Connect 的全域存取權。
如果 Cloud Shell 工作階段已終止,請執行下列操作:
在 Cloud Shell 中執行下列操作:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
在 Cloud Shell 中使用 IAP 登入 vm1,如果逾時請重試。
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
連線至 MongoDB 部署
在 Cloud Shell OS 登入中執行下列操作。
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
範例如下:

對資料庫執行指令
在 Cloud Shell OS 登入中執行下列操作。
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

成功:您已驗證 PSC 全域存取權可讓消費者端點跨區域順暢連線,有助於提高可用性或因應區域性中斷。在本程式碼實驗室中,MongoDB 地區容錯移轉發生在位於 us-west1 的主要節點,因此次要區域 us-west2 接管了主要節點。雖然叢集導致區域服務中斷,但位於 us-west1 的消費者 VM1 仍成功連上 us-west2 的新主要叢集。
12. 清除
從 Cloud 控制台刪除消費者端點
依序前往「網路服務」→「Private Service Connect」→「已連線的端點」
使用 psc-endpoint 篩選器,避免刪除非實驗室的消費者端點。選取所有端點 → 刪除

刪除與消費者端點相關聯的靜態內部 IP 位址
前往「VPC network」(虛擬私有雲網路) →「consumer-vpc」→「STATIC INTERNAL IP ADDRESSES」(靜態內部 IP 位址)
使用 psc-endpoint 篩選器,排除可能刪除的非實驗室消費者端點,並將每頁列數增加至 100。選取所有端點 →「發布」

從 Cloud Shell 刪除 Codelab 元件。
gcloud compute instances delete vm1 --zone=us-west1-a --quiet
gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute routers delete consumer-cr --region=us-west1 --quiet
gcloud compute networks delete consumer-vpc --quiet
在 Atlas UI 中找出叢集 psc-mongodb-uswest1-uswest2 → 結束模擬

選取「結束中斷模擬」—>「結束」

叢集現在正在將 us-west1 還原為主要叢集,這項程序需要 3 到 4 分鐘。完成後,終止叢集,並注意灰色外框,表示狀態已變更。


插入叢集名稱 → 終止

刪除與 us-west1 和 us-west2 相關聯的私人端點
在 Atlas UI 中,依序前往「Security」→「Network Access」→「Private Endpoint」,然後選取「Terminate」

13. 恭喜
恭喜!您已成功設定並驗證 Private Service Connect 端點,可跨區域存取 MongoDB。您已成功建立消費端虛擬私有雲、多區域 MongoDB 和消費端端點。位於 us-west1 的 VM 在區域容錯移轉後,已成功連線至 us-west1 和 us-west2 中的 MongoDB。
Cosmopup 認為程式碼研究室很棒!

後續步驟
查看一些程式碼研究室…
- 使用 Private Service Connect 發布及使用 GKE 服務
- 使用 Private Service Connect 發布及使用服務
- 透過 Private Service Connect 和內部 TCP Proxy 負載平衡器,經由混合式網路連線至地端部署服務
- 使用具備自動 DNS 設定的 Private Service Connect