Truy cập vào tập dữ liệu MongoDB Atlas đa khu vực bằng Private Service Connect

1. Giới thiệu

Private Service Connect (PSC) giúp đơn giản hoá cách sử dụng các dịch vụ một cách an toàn và riêng tư. Mô hình này giúp đơn giản hoá đáng kể cấu trúc mạng bằng cách cho phép người dùng dịch vụ kết nối riêng tư với nhà cung cấp dịch vụ trên nhiều tổ chức và loại bỏ nhu cầu kết nối ngang hàng giữa các đám mây riêng ảo. Hình 1 minh hoạ các thuộc tính của VPC Peering và PSC.

Hình 1. 4f9551fc32ed83f5.png

Là một người tiêu dùng dịch vụ, bạn có thể linh hoạt chọn cách phân bổ IP riêng cho các dịch vụ, đồng thời không phải quản lý dải mạng con cho VPC của nhà cung cấp. Giờ đây, bạn có thể chỉ cần chỉ định một IP ảo đã chọn từ VPC cho dịch vụ đó bằng cách sử dụng một dịch vụ kết nối.

Trong lớp học lập trình này, bạn sẽ xây dựng một cấu trúc Private Service Connect toàn diện minh hoạ việc sử dụng quyền truy cập toàn cầu PSC với MongoDB Atlas.

Quyền truy cập trên toàn cầu cho phép các ứng dụng kết nối với Private Service Connect (PSC) trên nhiều ranh giới khu vực. Điều này hữu ích khi tạo tính sẵn sàng cao trên các dịch vụ được quản lý lưu trữ ở nhiều khu vực hoặc cho phép các ứng dụng truy cập vào một dịch vụ không nằm trong cùng khu vực với ứng dụng.

2. Bật quyền truy cập chung

Quyền truy cập chung là một tính năng không bắt buộc và được định cấu hình trên quy tắc chuyển tiếp phía người dùng. Lệnh sau đây cho biết cách định cấu hình:

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
  • Cờ --allow-psc-global-access cho phép truy cập toàn cầu vào một điểm cuối Private Service Connect
  • Quyền truy cập trên toàn cầu cho phép máy khách nằm ở một khu vực khác với quy tắc chuyển tiếp Private Service Connect, nhưng quy tắc chuyển tiếp vẫn phải nằm trong cùng khu vực với tệp đính kèm dịch vụ mà quy tắc đó được kết nối.
  • Bạn không cần phải thiết lập gì trên tệp đính kèm dịch vụ của nhà sản xuất để bật quyền truy cập chung. Đây hoàn toàn là một lựa chọn ở phía người dùng.

Bạn cũng có thể bật hoặc tắt quyền truy cập toàn cầu bất cứ lúc nào cho các điểm cuối hiện có. Không có sự gián đoạn lưu lượng truy cập đối với các kết nối đang hoạt động khi bạn bật quyền truy cập toàn cầu trên một điểm cuối hiện có. Bạn có thể bật tính năng Truy cập toàn cầu trên một quy tắc chuyển tiếp hiện có bằng lệnh sau:

gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access

Tắt quyền truy cập chung

Bạn cũng có thể tắt quyền truy cập toàn cầu trên các quy tắc chuyển tiếp hiện có bằng cờ --no-allow-psc-global-access. Xin lưu ý rằng mọi lưu lượng truy cập giữa các vùng đang hoạt động sẽ bị chấm dứt sau khi lệnh này được chạy.

gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access

3. Sản phẩm bạn sẽ tạo ra

  1. Một cụm MongoDB Atlas ở nhiều khu vực (cấu trúc liên kết được mô tả trong Hình 2) sẽ được tạo với một nút trong us-west1 và hai nút trong các khu vực us-west2 tương ứng.
  2. Một VPC người dùng và máy ảo được liên kết để truy cập vào các cụm MongoDB ở us-west1 và us-west2.
  3. Một VPC và 2 mạng con ở các khu vực us-west1 và us-west2 tương ứng với ít nhất 64 địa chỉ IP trống trong mỗi mạng con (Tạo mạng con có /26 trở xuống).

Ứng dụng MongoDB sẽ được cài đặt trên vm1 trong vpc của người dùng. Khi nút chính gặp sự cố ở us-west1, máy khách sẽ có thể đọc/ghi thông qua nút chính mới ở us-west2.

Hình 2. ab6c2791514c4481.png

Kiến thức bạn sẽ học được

  • Cách tạo một VPC và các mạng con được triển khai ở 2 khu vực
  • Cách triển khai một cụm MongoDB Atlas ở nhiều khu vực
  • Cách tạo điểm cuối riêng tư
  • Cách kết nối với MongoDB
  • Cách thực hiện và xác thực quy trình chuyển đổi dự phòng MongoDB ở nhiều khu vực

Bạn cần có

  • Dự án trên Google Cloud
  • Cung cấp một mạng con /26 cho mỗi khu vực
  • Quyền truy cập của chủ sở hữu dự án hoặc chủ sở hữu tổ chức vào MongoDB Atlas để tạo một cụm MongoDB có cấp cụm từ M10 trở lên. (Vui lòng sử dụng GETATLAS để nhận tín dụng miễn phí khi chạy PoV)

4. Trước khi bắt đầu

Cập nhật dự án để hỗ trợ lớp học lập trình

Lớp học lập trình này sử dụng $variables để hỗ trợ việc triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện các bước sau:

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

5. Thiết lập người tiêu dùng

Tạo VPC của người tiêu dùng

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom

Tạo mạng con của người tiêu dùng

Trong Cloud Shell, hãy thực hiện các bước sau:

gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1

Trong Cloud Shell, hãy tạo điểm cuối của người dùng cho 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

Trong Cloud Shell, hãy tạo điểm cuối của người dùng cho 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

Cấu hình Cloud Router và NAT

Cloud NAT được dùng trong lớp học lập trình để cài đặt gói phần mềm vì các thực thể máy ảo không có địa chỉ IP ngoài.

Trong Cloud Shell, hãy tạo bộ định tuyến đám mây.

gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1

Trong Cloud Shell, hãy tạo cổng NAT.

gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1

Cấu hình vm1 của phiên bản

Trong phần sau, bạn sẽ tạo thực thể Compute Engine, vm1.

Trong Cloud Shell, hãy tạo thực thể 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"

Để cho phép IAP kết nối với các phiên bản máy ảo, hãy tạo một quy tắc tường lửa có:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn có thể truy cập bằng IAP.
  • Cho phép lưu lượng truy cập vào từ dải IP 35.235.240.0/20. Dải này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Trong Cloud Shell, hãy tạo quy tắc tường lửa IAP.

gcloud compute firewall-rules create ssh-iap-consumer-vpc \
    --network consumer-vpc \
    --allow tcp:22 \
    --source-ranges=35.235.240.0/20

6. Tạo cụm MongoDB Atlas nhiều khu vực

  • Chúng ta cần thiết lập một cụm Atlas trước khi bắt đầu thiết lập PSC. Bạn có thể đăng ký MongoDB Atlas theo một trong hai cách dưới đây:
  • Thông qua Google Cloud Marketplace nếu bạn có tài khoản Google Cloud. Tham khảo tài liệu để thiết lập gói thuê bao.
  • Với trang đăng ký Atlas.
  • Sau khi đăng ký Atlas, hãy nhấp vào nút Build a Database (Tạo cơ sở dữ liệu) như minh hoạ bên dưới.

796f5bda844bf400.png

  • Tạo cụm mới → Dành riêng

56c340661d86962c.png

  • Nhà cung cấp dịch vụ đám mây và khu vực → Google Cloud
  • Đa đám mây, đa vùng &tách biệt khối lượng công việc → Đã chọn (dấu kiểm màu xanh dương)

6c10293ffd9814ae.png

  • Các nút có thể bầu chọn → us-west1 (1 nút), us-west2 (2 nút)

e652bd944d785871.png

  • Cấp cụm → M10, Giữ nguyên tất cả chế độ cài đặt khác theo mặc định

ffa0195b96c2c5ff.png

  • Tên cụm → psc-mongodb-uswest1-uswest2

3720fb8c15ba5cc2.png

  • Chọn → Tạo nhóm khuôn mặt

ec5e3e6983c02e27.png

  • Quá trình tạo cơ sở dữ liệu mất từ 7 đến 10 phút

d75778d5abf484aa.png

Chế độ xem của cụm sau khi triển khai

1f0ec6a401578650.png

7. Tạo điểm cuối riêng tư cho us-west1

  • Đăng nhập vào tài khoản Atlas của bạn rồi chuyển đến dự án.

Tạo người dùng mới để cho phép quyền đọc/ghi đối với mọi cơ sở dữ liệu

Bảo mật → Quyền truy cập vào cơ sở dữ liệu, chọn thêm người dùng cơ sở dữ liệu mới. Sau đây là một ví dụ, tên người dùng và mật khẩu được định cấu hình là codelab. Đảm bảo chọn vai trò tích hợp Đọc và ghi vào mọi cơ sở dữ liệu.

f622ab14ddc96fc7.png

  • Trong phần Bảo mật → Quyền truy cập mạng, Danh sách truy cập IP không yêu cầu một mục nhập

Chuẩn bị các Điểm cuối riêng tư trong MongoDB Atlas

  • Chọn Network access (Quyền truy cập mạng) → Private Endpoints (Điểm cuối riêng tư) → Dedicated cluster (Cụm chuyên dụng) → Add private endpoint (Thêm điểm cuối riêng tư) 88f5c1d9ae7e46d9.png

Nhà cung cấp dịch vụ đám mây

  • Chọn Google Cloud, rồi chọn tiếp theo

5503248bf4019a35.png

Đính kèm dịch vụ

  • Chọn khu vực us-west1, rồi chọn tiếp theo

cb31aea7cad182f9.png

Điểm cuối

  • Để tạo một điểm cuối kết nối dịch vụ riêng tư, hãy cung cấp những thông tin sau:
  • Mã dự án trên Google Cloud: Chọn "hiện hướng dẫn" để biết thông tin chi tiết
  • Tên VPC: consumer-vpc
  • Tên mạng con: psc-endpoint-us-west1
  • Tiền tố điểm cuối Private Service Connect: psc-endpoint-us-west1

21d76af5367832f4.png

Thiết lập điểm cuối

Trong phần sau, một tập lệnh shell sẽ được tạo và bạn nên lưu tập lệnh này cục bộ với tên setup_psc.sh. Sau khi lưu, hãy chỉnh sửa tập lệnh shell để cho phép truy cập toàn cầu vào psc. Bạn có thể thực hiện thao tác này trong Cloud Shell của dự án trên Google Cloud.

  • Ví dụ về tập lệnh shell, đầu ra của bạn sẽ có các giá trị khác nhau

5c80cf7315a05c25.png

  • Sao chép tập lệnh shell từ bảng điều khiển MongoBD và lưu nội dung trong thiết bị đầu cuối Google Cloud Cloud Shell, nhớ lưu tập lệnh dưới dạng setup_psc.sh

Ví dụ trước khi cập nhật:

#!/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

Cập nhật tập lệnh shell để hỗ trợ quyền truy cập toàn cầu

Sử dụng trình chỉnh sửa nano hoặc vi để xác định và cập nhật tập lệnh shell bằng cú pháp bên dưới:

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

Ví dụ sau khi cập nhật:

#!/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

Chạy tập lệnh shell

Chuyển đến và thực thi tập lệnh setup_psc.sh. Sau khi hoàn tất, một tệp có tên atlasEndpoints-psc-endpoint-us-west1.json sẽ được tạo. Tệp json chứa danh sách các địa chỉ IP và Tên điểm cuối Private Service Connect cần thiết cho bước tiếp theo của quá trình triển khai.

Trong Cloud Shell, hãy thực hiện những việc sau:

sh setup_psc.sh

Sau khi tập lệnh hoàn tất, hãy dùng trình chỉnh sửa Cloud Shell để tải atlasEndpoints-psc-endpoint-us-west1.json xuống cục bộ.

2856802dd6497f51.png b0059dc8e1558891.png

Tải tệp JSON lên

Tải tệp json đã lưu trước đó lên atlasEndpoints-psc-endpoint-us-west1.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Chọn Tạo

Xác thực các điểm cuối Private Service Connect

Trong giao diện người dùng MongoDB, hãy chuyển đến dự án của bạn, sau đó chọn Security (Bảo mật) → Network access (Quyền truy cập vào mạng) → Private endpoint (Điểm cuối riêng tư). Việc chọn thẻ, cụm chuyên dụng, quá trình chuyển đổi điểm cuối sang trạng thái có sẵn sẽ mất 10 phút.

Trạng thái có sẵn

972aff09d180d9de.png

Trong bảng điều khiển Google Cloud, hãy chuyển đến Network Services (Dịch vụ mạng) → Private Services Connect (Kết nối dịch vụ riêng tư), chọn thẻ Connected endpoint (Điểm cuối được kết nối) hiển thị các điểm cuối của người dùng chuyển đổi Trạng thái thành Đang chờ xử lý → Đã chấp nhận, ví dụ:

5472dd938604b3.png

8. Tạo điểm cuối riêng tư cho us-west2

  • Đăng nhập vào tài khoản Atlas của bạn rồi chuyển đến dự án.

Chuẩn bị các Điểm cuối riêng tư trong MongoDB Atlas

  • Chọn Network access (Quyền truy cập mạng) → Private Endpoints (Điểm cuối riêng tư) → Dedicated cluster (Cụm chuyên dụng) → Add private endpoint (Thêm điểm cuối riêng tư) 88f5c1d9ae7e46d9.png

Nhà cung cấp dịch vụ đám mây

  • Chọn Google Cloud, rồi chọn tiếp theo

5503248bf4019a35.png

Đính kèm dịch vụ

  • Chọn khu vực us-west2, rồi chọn tiếp theo

fc0b7a8e4274be3b.png

Điểm cuối

  • Để tạo một điểm cuối kết nối dịch vụ riêng tư, hãy cung cấp những thông tin sau:
  • Mã dự án trên Google Cloud: Chọn "hiện hướng dẫn" để biết thông tin chi tiết
  • Tên VPC: consumer-vpc
  • Tên mạng con: psc-endpoint-us-west2
  • Tiền tố điểm cuối Private Service Connect: psc-endpoint-us-west2

17b5a056587ede8a.png

Thiết lập điểm cuối

Trong phần sau, một tập lệnh shell sẽ được tạo và bạn nên lưu tập lệnh này cục bộ với tên setup_psc.sh. Sau khi lưu, hãy chỉnh sửa tập lệnh shell để cho phép truy cập toàn cầu vào psc. Bạn có thể thực hiện thao tác này trong Cloud Shell của dự án trên Google Cloud.

  • Ví dụ về tập lệnh shell, đầu ra của bạn sẽ có các giá trị khác nhau

b021821e7d59f450.png

  • Sao chép tập lệnh shell từ bảng điều khiển MongoBD và lưu nội dung trong thiết bị đầu cuối Google Cloud Cloud Shell, nhớ lưu tập lệnh dưới dạng setup_psc.sh

Ví dụ trước khi cập nhật:

#!/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

Cập nhật tập lệnh shell để hỗ trợ quyền truy cập toàn cầu

Sử dụng trình chỉnh sửa nano hoặc vi để xác định và cập nhật tập lệnh shell bằng cú pháp bên dưới:

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

Ví dụ sau khi cập nhật:

#!/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

Chạy tập lệnh shell

Chuyển đến và thực thi tập lệnh setup_psc.sh. Sau khi hoàn tất, một tệp có tên atlasEndpoints-psc-endpoint-us-west2.json sẽ được tạo. Tệp json chứa danh sách các địa chỉ IP và Tên điểm cuối Private Service Connect cần thiết cho bước tiếp theo của quá trình triển khai.

Trong Cloud Shell, hãy thực hiện những việc sau:

sh setup_psc.sh

Sau khi tập lệnh hoàn tất, hãy dùng trình chỉnh sửa Cloud Shell để tải atlasEndpoints-psc-endpoint-us-west2.json xuống cục bộ.

2856802dd6497f51.png 6e3d944944718f13.png

Tải tệp JSON lên

Tải tệp json đã lưu trước đó lên atlasEndpoints-psc-endpoint-us-west2.json

3a74e8d9952d793a.png

4938fd8256eb81b4.png

Chọn Tạo

Xác thực các điểm cuối Private Service Connect

Trong giao diện người dùng MongoDB, hãy chuyển đến dự án của bạn, sau đó chọn Security (Bảo mật) → Network access (Quyền truy cập vào mạng) → Private endpoint (Điểm cuối riêng tư). Sau khi bạn chọn thẻ, cụm chuyên dụng, điểm cuối sẽ chuyển sang trạng thái có sẵn sau 10 phút.

Trạng thái hiện có:

8801df4f6b39d20a.png

Trong bảng điều khiển Google Cloud, hãy chuyển đến Network Services (Dịch vụ mạng) → Private Services Connect (Kết nối dịch vụ riêng tư), chọn thẻ Connected endpoint (Điểm cuối được kết nối) hiển thị các điểm cuối của người dùng đang chuyển đổi từ Trạng thái đang chờ xử lý → Đã chấp nhận, ví dụ bên dưới. Tổng cộng có 100 điểm cuối được triển khai trong điểm cuối của người tiêu dùng và cần chuyển sang trạng thái được chấp nhận trước khi chuyển sang bước tiếp theo.

6131abcdef5c1f49.png

9. Kết nối với MongoDB Atlas từ các điểm cuối riêng tư

Sau khi Private Service Connect được chấp nhận, bạn cần thêm thời gian (10-15 phút) để cập nhật cụm MongoDB. Trong giao diện người dùng MongoDB, đường viền màu xám biểu thị bản cập nhật cụm, do đó, bạn không thể kết nối với điểm cuối riêng tư.

c1524d2c0c5765d1.png

Xác định việc triển khai và chọn Kết nối (lưu ý rằng hộp màu xám sẽ không còn xuất hiện)

3eea96af20bfad20.png

Chọn loại kết nối → Điểm cuối riêng tư, chọn Chọn phương thức kết nối

16a9090e495640c7.png

Chọn Connect with the MongoDB Shell (Kết nối bằng MongoDB Shell)

35e422af16cb5ce0.png

Chọn I do not have the MongoDB Shell installed, Ubuntu 20.4 (Tôi chưa cài đặt MongoDB Shell, Ubuntu 20.4) và nhớ sao chép nội dung từ bước 1 và bước 3 vào một sổ tay.

51be47403c00bab4.png

10. Cài đặt ứng dụng mongosh

Trước khi cài đặt, bạn cần tạo một chuỗi lệnh dựa trên các giá trị đã sao chép trước đó ở bước 1 và 3. Sau đó, bạn sẽ ssh vào vm1 bằng Cloud Shell, tiếp theo là cài đặt và xác thực ứng dụng mongosh cho cơ sở dữ liệu chính (us-west1). Hình ảnh Ubuntu 20.4 được cài đặt khi tạo vm1 trong consumer-vpc.

Chọn phương thức kết nối: Bước 1, Sao chép URL tải xuống

5da980ff86265dd8.png

Chuỗi lệnh mẫu, hãy thay thế bằng các giá trị tuỳ chỉnh của bạn:

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

Chọn phương thức kết nối, bước 3.

698286bdf3dee3c7.png

Chuỗi lệnh mẫu, hãy thay thế bằng các giá trị tuỳ chỉnh của bạn:

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

Đăng nhập vào vm1

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Đăng nhập vào vm1 bằng IAP trong Cloud Shell, thử lại nếu có thời gian chờ.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Thực hiện quy trình cài đặt từ hệ điều hành

Thực hiện quy trình cài đặt từ chế độ đăng nhập os Cloud Shell, thông tin chi tiết khác có sẵn, hãy cập nhật cú pháp bên dưới bằng chuỗi tuỳ chỉnh của bạn

wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -

Thao tác này sẽ phản hồi bằng một

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

Kết nối với việc triển khai MongoDB

Trong quá trình đăng nhập vào Cloud Shell, hãy thực hiện các bước sau. Tên người dùng và mật khẩu được định cấu hình là codelab.

mongosh

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

Ví dụ bên dưới:

d5d0324a273b4d5e.png

Thực thi các lệnh đối với cơ sở dữ liệu

Trong quá trình đăng nhập vào Cloud Shell, hãy thực hiện các bước sau.

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

11. Vùng MongoDB đang hoạt động dự phòng, us-west1

Trước khi thực hiện chuyển đổi dự phòng, hãy xác thực rằng us-west1 là chính và us-west2 có hai nút phụ.

Chuyển đến Database (Cơ sở dữ liệu) → psc-mongodb-uswest1-uswest2 → Overview (Tổng quan)

64ca0395807bb3ac.png

Trong phần sau, hãy đăng nhập vào vm1 nằm ở us-west1, chuyển đổi dự phòng khu vực cụm MongoDB chính us-west1 và xác minh rằng cơ sở dữ liệu vẫn có thể truy cập được từ cụm MongoDB ở us-west2.

Bạn có thể kiểm thử cả chế độ dự phòng chính và theo khu vực trên giao diện người dùng Atlas.

  • Đăng nhập vào giao diện người dùng Atlas.
  • Nhấp vào ["..."] bên cạnh tên cụm của bạn, psc-mongodb-uswest1-uswest2 → Test Outage (Kiểm tra sự cố ngừng hoạt động).

3a50da4381817975.png

  • Chọn Sự cố theo khu vực → Chọn khu vực.

b8dfff376477bcbb.png

  • Chọn khu vực chính, us-west1 → Simulate Regional Outage (Mô phỏng sự cố mất điện theo khu vực).

76494a750a040bc5.png

Sau khi bạn chọn, cụm sẽ hiển thị mô phỏng sự cố mất điện sau 3 đến 4 phút

Đóng cửa sổ

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

Xác minh rằng us-west1 đã ngừng hoạt động và us-west2 hiện đã được chuyển thành khu vực chính

Chuyển đến Database (Cơ sở dữ liệu) → psc-mongodb-uswest1-uswest2 → Overview (Tổng quan)

86fd7d5230715645.png

Xác thực khả năng kết nối với cụm theo khoá chính mới, us-west2

Đăng nhập vào vm1 nằm ở us-west1 và truy cập vào mongodb ở us-west2 để xác thực quyền truy cập toàn cầu của Private Service Connect.

Nếu phiên Cloud Shell của bạn bị chấm dứt, hãy thực hiện những việc sau:

Trong Cloud Shell, hãy thực hiện các bước sau:

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

Đăng nhập vào vm1 bằng IAP trong Cloud Shell, thử lại nếu có thời gian chờ.

gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap

Kết nối với việc triển khai MongoDB

Trong quá trình đăng nhập vào Cloud Shell, hãy thực hiện các bước sau.

mongosh

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

Ví dụ bên dưới:

d262800a557b41a3.png

Thực thi các lệnh đối với cơ sở dữ liệu

Trong quá trình đăng nhập vào Cloud Shell, hãy thực hiện các bước sau.

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

exit

20c2571d84c0661d.png

Thành công: Bạn đã xác thực rằng quyền truy cập toàn cầu vào PSC cho phép kết nối liền mạch với điểm cuối của người tiêu dùng trên các khu vực để hỗ trợ tính sẵn sàng cao hoặc do sự cố ngừng hoạt động theo khu vực. Trong lớp học lập trình, quá trình chuyển đổi dự phòng theo khu vực của MongoDB diễn ra ở nút chính nằm ở us-west1, do đó, khu vực phụ us-west2 đã tiếp quản một nút chính. Mặc dù cụm này gây ra sự cố ngừng hoạt động theo khu vực, nhưng vm1 của người tiêu dùng nằm ở us-west1 đã truy cập thành công vào cụm chính mới ở us-west2.

12. Dọn dẹp

Xoá các điểm cuối của người tiêu dùng khỏi Cloud Console

Chuyển đến mục Dịch vụ mạng → Private Service Connect → ĐIỂM CUỐI ĐƯỢC KẾT NỐI

Sử dụng bộ lọc psc-endpoint để loại bỏ khả năng xoá các điểm cuối không phải là điểm cuối của người tiêu dùng trong phòng thí nghiệm. Chọn tất cả điểm cuối → XOÁ

192548e374b444a1.png

Xoá các địa chỉ IP nội bộ tĩnh được liên kết với các điểm cuối của người tiêu dùng

Chuyển đến Mạng VPC → consumer-vpc → ĐỊA CHỈ IP NỘI BỘ TĨNH

Sử dụng bộ lọc psc-endpoint để loại bỏ khả năng xoá các điểm cuối không phải của người tiêu dùng trong phòng thí nghiệm và tăng số hàng trên mỗi trang lên 100. Chọn tất cả điểm cuối → PHÁT HÀNH

4cebf164c4fecd83.png

Từ Cloud Shell, hãy xoá các thành phần của lớp học lập trình.

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

Từ giao diện người dùng Atlas, hãy xác định cụm psc-mongodb-uswest1-uswest2 → kết thúc mô phỏng

f82e28ac984d9e20.png

Chọn Kết thúc mô phỏng sự cố mất điện —> Thoát

38feaf055abdceea.png

Cụm hiện đang chuyển us-west1 thành cụm chính, quá trình này sẽ mất 3 đến 4 phút. Sau khi hoàn tất, hãy chấm dứt cụm, lưu ý đường viền màu xám cho biết trạng thái đã thay đổi.

f249a61bcc966d41.png

9427a9349daa1fea.png

Chèn tên cụm → Chấm dứt

9ef6d3a6387c5b4b.png

Xoá điểm cuối riêng tư được liên kết với us-west1 và us-west2

Trên giao diện người dùng Atlas, hãy chuyển đến phần Bảo mật → Quyền truy cập vào mạng → Điểm cuối riêng tư → Chọn Chấm dứt

56415ea954b2fec9.png

13. Xin chúc mừng

Xin chúc mừng! Bạn đã định cấu hình và xác thực thành công một điểm cuối Private Service Connect có quyền truy cập toàn cầu vào MongoDB trên các khu vực. Bạn đã tạo thành công một VPC người dùng, MongoDB nhiều khu vực và các điểm cuối của người dùng. Một VM nằm ở us-west1 đã kết nối thành công với MongoDB ở cả us-west1 và us-west2 khi xảy ra lỗi chuyển đổi dự phòng theo khu vực.

Cosmopup cho rằng các lớp học lập trình rất tuyệt!!

8c2a10eb841f7b01.jpeg

Tiếp theo là gì?

Hãy xem một số lớp học lập trình này...

Tài liệu đọc thêm và video

Tài liệu tham khảo