使用 Private Service Connect 访问多区域 MongoDB Atlas

1. 简介

Private Service Connect (PSC) 可简化服务的安全性和私密性。此模型使服务使用者能够以私密方式与不同组织的服务提供方进行连接,从而大大简化网络架构,并且无需虚拟私有云对等互连。图 1 展示了 VPC 对等互连和 PSC 属性。

图 1.4f9551fc32ed83f5

作为服务使用方,您可以灵活选择如何将专用 IP 分配给服务,同时消除管理提供方 VPC 子网范围的负担。现在,您只需使用 Service Connect 将 VPC 中选定的虚拟 IP 分配给此类服务即可。

在此 Codelab 中,您将构建一个全面的 Private Service Connect 架构,以说明如何通过 MongoDB 图集使用 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. 您将构建的内容

  1. 将创建一个多区域 MongoDB Atlas 集群(图 2 中所述的拓扑),分别在 us-west1 和 us-west2 区域中有一个节点。
  2. 使用方 VPC 和关联虚拟机,用于访问 us-west1 和 us-west2 中的 MongoDB 集群。
  3. 分别位于 us-west1 和 us-west2 区域的一个 VPC 和两个子网,每个子网中至少有 64 个可用 IP 地址(创建 /26 及以下的子网)。

MongoDB 客户端将安装在使用方 VPC 中的 vm1 上。当 us-west1 中的主节点发生故障时,客户端将能够通过 us-west2 中新的主节点执行读/写操作。

图 2. ab6c2791514c4481.png

学习内容

  • 如何创建部署在两个区域的 VPC 和子网
  • 如何部署多区域 MongoDB 图集集群
  • 如何创建专用端点
  • 如何连接到 MongoDB
  • 如何执行和验证多区域 MongoDB 故障切换

所需条件

  • Google Cloud 项目
  • 为每个区域提供一个 /26 子网
  • 拥有 MongoDB Atlas 的 Project Owner 或 Organization Owner 访问权限,以创建集群层级为 M10 或更高级别的 MongoDB 集群。(请使用 GETATLAS 获取用于运行 PoV 的免费积分)

4. 准备工作

更新项目以支持此 Codelab

此 Codelab 利用 $variables 辅助在 Cloud Shell 中实现 gcloud 配置。

在 Cloud Shell 中,执行以下操作:

gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname

5. 消费者设置

创建使用方 VPC

在 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 配置

在此 Codelab 中,由于虚拟机实例没有外部 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 连接到您的虚拟机实例,请创建以下防火墙规则:

  • 适用于您希望可以使用 IAP 访问的所有虚拟机实例。
  • 允许来自 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 Marketplace(如果您有 Google Cloud 账号)。请参阅此文档来设置您的订阅。
  • 使用 Atlas 注册页面
  • 订阅 Atlas 之后,点击“构建数据库”按钮,如下所示。

796f5bda844bf400

  • 创建新集群 → 专用

56c340661d86962c

  • 云服务提供商和区域 → Google Cloud
  • 多云、多区域和工作负载隔离 → 已选择(蓝色对勾标记)

6c10293ffd9814ae

  • 可选节点 → us-west1(1 个节点)、us-west2(2 个节点)

e652bd944d785871.png

  • 集群层级 → M10,将所有其他设置保留为默认值

ffa0195b96c2c5ff.png

  • 集群名称 → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2

  • 选择 → 创建集群

ec5e3e6983c02e27.png

  • 创建数据库需要 7-10 分钟

d75778d5abf484aa.png

部署后的集群视图

1f0ec6a401578650

7. 为 us-west1 创建专用端点

  • 登录您的 Atlas 账号并导航到您的项目。

创建新用户以允许对任何数据库进行读写访问

“安全性”→“数据库访问权限”,然后选择“添加新的数据库用户”。以下是配置为 Codelab 的用户名和密码示例。确保选择内置角色读写任何数据库。

f622ab14ddc96fc7.png

  • 在“安全”→“网络访问”下,无需输入 IP 访问列表

在 MongoDB Atlas 中准备专用端点

  • 选择“网络访问”→“专用端点”→“专用集群”→“添加专用端点 88f5c1d9ae7e46d9

云服务提供商

  • 选择 Google Cloud,然后选择下一步

5503248bf4019a35

服务连接

  • 选择区域 us-west1,然后选择下一步

cb31aea7cad182f9.png

Endpoints

  • 如需创建 Private Service Connect 端点,请执行以下操作:
  • Google Cloud 项目 ID:选择“显示说明”了解详情
  • VPC 名称:consumer-vpc
  • 子网名称:psc-endpoint-us-west1
  • Private Service Connect 端点前缀:psc-endpoint-us-west1

21d76af5367832f4

设置端点

在接下来的部分中,系统会生成一个名为 setup_psc.sh 的 Shell 脚本,该脚本应保存在本地。保存后,修改 Shell 脚本以允许 psc 全局访问。您可以在 Google Cloud 项目的 Cloud Shell 中执行此操作。

  • Shell 脚本示例,输出将具有不同的值

5c80cf7315a05c25

  • 从 MongoBD 控制台复制 Shell 脚本,并将内容保存在 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

更新 Shell 脚本以支持全球访问

使用 nano 或 vi 编辑器识别并使用以下语法更新 Shell 脚本:

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

运行 Shell 脚本

浏览并执行脚本 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 下载到本地。

2856802dd6497f51 b0059dc8e1558891.png

上传 JSON 文件

上传之前保存的 JSON 文件 atlasEndpoints-psc-endpoint-us-west1.json

3a74e8d9952d793a

4938fd8256eb81b4

选择“创建”

验证 Private Service Connect 端点

在 MongoDB 界面中,导航到您的项目,然后依次点击“安全”→“网络访问”→“专用端点”。如果选择“专用集群”标签页,端点将需要 10 分钟才能转换为可用状态。

可用状态

972aff09d180d9de

在 Google Cloud 控制台中,前往“网络服务”→“Private Services Connect”,选择“已连接的端点”标签页,该标签页会显示使用方端点将转换为“待处理”→“已接受”的标签页,如下例所示:

5472dd938604b3

8. 为 us-west2 创建专用端点

  • 登录您的 Atlas 账号并导航到您的项目。

在 MongoDB Atlas 中准备专用端点

  • 选择“网络访问”→“专用端点”→“专用集群”→“添加专用端点 88f5c1d9ae7e46d9

云服务提供商

  • 选择 Google Cloud,然后选择下一步

5503248bf4019a35

服务连接

  • 选择区域 us-west2,然后选择下一步

fc0b7a8e4274be3b.png

Endpoints

  • 如需创建 Private Service Connect 端点,请执行以下操作:
  • Google Cloud 项目 ID:选择“显示说明”了解详情
  • VPC 名称:consumer-vpc
  • 子网名称:psc-endpoint-us-west2
  • Private Service Connect 端点前缀:psc-endpoint-us-west2

17b5a056587ede8a

设置端点

在接下来的部分中,系统会生成一个名为 setup_psc.sh 的 Shell 脚本,该脚本应保存在本地。保存后,修改 Shell 脚本以允许 psc 全局访问。您可以在 Google Cloud 项目的 Cloud Shell 中执行此操作。

  • Shell 脚本示例,输出将具有不同的值

b021821e7d59f450.png

  • 从 MongoBD 控制台复制 Shell 脚本,并将内容保存在 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

更新 Shell 脚本以支持全球访问

使用 nano 或 vi 编辑器识别并使用以下语法更新 Shell 脚本:

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

运行 Shell 脚本

浏览并执行脚本 setup_psc.sh,并在完成后创建一个名为 atlasEndpoints-psc-endpoint-us-west2.json 的文件。json 文件包含下一步部署所需的 IP 地址和 Private Service Connect 端点名称的列表。

在 Cloud Shell 中,执行以下操作:

sh setup_psc.sh

脚本运行完毕后,使用 Cloud Shell 编辑器在本地下载 atlasEndpoint-psc-endpoint-us-west2.json。

2856802dd6497f51 6e3d944944718f13

上传 JSON 文件

上传之前保存的 JSON 文件 atlasEndpoints-psc-endpoint-us-west2.json

3a74e8d9952d793a

4938fd8256eb81b4

选择“创建”

验证 Private Service Connect 端点

在 MongoDB 界面中,导航到您的项目,然后依次点击“安全”→“网络访问”→“专用端点”。选择标签页、专用集群,端点将在 10 分钟后转换为可用状态。

可用状态:

8801df4f6b39d20a

在 Google Cloud 控制台中,前往“网络服务”→“Private Services Connect”,选择“已连接的端点”标签页,其中会显示将使用方端点转换为“待处理”→“已接受”的标签页,如下例所示。使用方端点中总共部署了 100 个端点,需要转换为“已接受”状态,然后才能进入下一步骤。

6131abcdef5c1f49

9. 从专用端点连接到 MongoDB 图集

接受 Private Service Connections 后,需要额外的时间(10-15 分钟)来更新 MongoDB 集群。在 MongoDB 界面中,灰色轮廓表示集群更新,因此无法连接到专用端点。

c1524d2c0c5765d1.png

确定部署并选择“连接”(注意,灰色框已不存在)

3eea96af20bfad20

选择连接类型 → 专用端点,然后选择“选择连接方法”

16a9090e495640c7

选择“使用 MongoDB Shell 连接”

35e422af16cb5ce0

选择“我没有安装 MongoDB Shell -”(Ubuntu 20.4),并确保将第 1 步和第 3 步中的内容复制到记事本。

51be47403c00bab4

10. 安装 mongosh 应用

安装前,您需要根据之前在步骤 1 和 3 中获取的值创建一个命令字符串。然后,您将使用 Cloud Shell 通过 SSH 连接到 vm1,然后安装 mongosh 应用并在主 (us-west1) 数据库中进行验证。在 consumer-vpc 中创建 vm1 时,安装了 Ubuntu 20.4 映像。

选择连接方法:第 1 步:复制下载网址

5da980ff86265dd8

命令字符串示例,请替换为您的自定义值:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

选择连接方法,第 3 步。

698286bdf3dee3c7

命令字符串示例,请替换为您的自定义值:

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 操作系统登录执行安装(提供了其他详细信息),使用您的自定义字符串更新下面的语法

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 操作系统登录界面中,执行以下操作。已在 Codelab 中配置的用户名和密码。

mongosh

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

示例如下:

d5d0324a273b4d5e.png

对数据库执行命令

在 Cloud Shell 操作系统登录界面中,执行以下操作。

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})

11. 故障切换活跃 MongoDB 区域,us-west1

在执行故障切换之前,我们先验证 us-west1 是主节点,us-west2 是否有两个次要节点。

前往数据库 → psc-mongodb-uswest1-uswest2 → 概览

64ca0395807bb3ac

在下一部分中,登录位于 us-west1 的 vm1,对主 MongoDB 集群区域 us-west1 进行故障切换,并验证是否仍可从 us-west2 中的 MongoDB 集群访问数据库。

您可以通过 Atlas 界面测试主要和地区性故障切换。

  • 登录 Versa 3 界面。
  • 点击集群名称旁边的 psc-mongodb-uswest1-uswest2 → 测试中断。

3a50da4381817975

  • 选择地区性服务中断 → 选择地区。

b8dfff376477bcbb.png

  • 选择主要区域 us-west1→ 模拟区域级服务中断。

76494a750a040bc5

选择集群后,该集群将在 3-4 分钟后显示中断模拟

关闭窗口

3a9f0359bd4e288f

bac1b2db0d754bbf.png

验证 us-west1 是否已关闭,且 us-west2 现已接管成为主服务器

前往数据库 → psc-mongodb-uswest1-uswest2 → 概览

86fd7d5230715645

通过新的主实例 us-west2 验证与集群的连接

登录位于 us-west1 的 vm1,并在 us-west2 中访问 mongodb,以验证专用服务连接全球访问权限。

如果 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 操作系统登录界面中,执行以下操作。

mongosh

mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab

示例如下:

d262800a557b41a3.png

对数据库执行命令

在 Cloud Shell 操作系统登录界面中,执行以下操作。

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()

exit

20c2571d84c0661d

成功:您已证明,PSC 全球访问支持跨区域实现无缝的消费者端点连接,以帮助实现高可用性,或因区域级服务中断。在此 Codelab 中,MongoDB 区域故障切换发生在位于 us-west1 的主节点中,因此次要区域 us-west2 接管了主实例。虽然集群导致了区域性中断,但位于 us-west1 的使用方 vm1 已成功连接到 us-west2 中的新主集群。

12. 清理

在 Cloud 控制台中删除使用方端点

导航到“网络服务”→“Private Service Connect”→“已连接的端点”

使用过滤器 psc-endpoint 消除非实验室使用方端点可能被删除的问题。选择所有端点 → 删除

192548e374b444a1

删除与使用方端点关联的静态内部 IP 地址

导航到 VPC 网络 → consumer-vpc→ 静态内部 IP 地址

使用过滤器 psc-endpoint 消除非实验室使用方端点可能被删除的问题,并将每页的行数增加到 100。选择所有端点 → 发布

4cebf164c4fecd83

从 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 界面中,找到集群 psc-mongodb-uswest1-uswest2 → 结束模拟

f82e28ac984d9e20.png

选择“结束服务中断模拟”—>退出

38feaf055abdceea

集群正在将 us-west1 还原为主集群,此过程将需要 3-4 分钟。完成后,终止集群,请注意指示状态更改的灰色轮廓。

f249a61bcc966d41.png

9427a9349daa1fea

插入集群名称 → 终止

9ef6d3a6387c5b4b.png

删除与 us-west1 和 us-west2 关联的专用端点

在 Atlas 界面中,导航至“安全”→“网络访问”→“专用端点”→“终止”

56415ea954b2fec9

13. 恭喜

恭喜,您已成功配置并验证了一个 Private Service Connect 端点,该端点可跨区域对 MongoDB 进行全球访问。您已成功创建使用方 VPC、多区域 MongoDB 和使用方端点。在进行区域级故障切换时,位于 us-west1 的虚拟机成功连接到了 us-west1 和 us-west2 中的 MongoDB。

Cosmopup 认为 Codelab 很棒!!

8c2a10eb841f7b01.jpeg

后续操作

查看下列 Codelab…

补充阅读材料和视频

参考文档