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) đơ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 cấu trúc mạng trở nên dễ dàng hơn rất nhiều 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 các tổ chức và không cần phải kết nối ngang hàng đám mây riêng ảo. Hình 1 minh hoạ các thuộc tính liên kết VPC và PSC.

Hình 1. 4f9551fc32ed83f5.png

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

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ạ cách sử dụng quyền truy cập toàn cầu của PSC bằng MongoDB atlas.

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

2. Bật quyền truy cập toàn cầu

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

Bạn cũng có thể bật hoặc tắt quyền truy cập chung bất cứ lúc nào đối với các điểm cuối hiện có. Không có sự gián đoạn lưu lượng truy cập cho các kết nối đang hoạt động khi bật quyền truy cập toàn cầu trên một điểm cuối hiện có. Quyền truy cập toàn cục được bật 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 toàn cầu

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 liên khu vực đang hoạt động sẽ bị chấm dứt sau khi chạy lệnh nà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 đa 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 ở us-west1 và hai nút ở us-west2 tương ứng.
  2. VPC của 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à hai mạng con tương ứng ở khu vực us-west1 và us-west2, mỗi mạng con có ít nhất 64 địa chỉ IP trống (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, ứng dụng 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 VPC và các mạng con được triển khai ở hai khu vực
  • Cách triển khai cụm MongoDB atlas đa 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 tính năng 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 cụm MongoDB có cấp cụm M10 trở lên. (Vui lòng sử dụng GETATLAS để nhận tín dụng miễn phí cho việc 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ợ triển khai cấu hình gcloud trong Cloud Shell.

Trong Cloud Shell, hãy thực hiện như 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 dùng

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

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

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

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

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

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

Bên 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

Bên 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 phiên bản máy ảo không có địa chỉ IP bên ngoài.

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

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

Bên 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 của thực thể vm1

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

Bên 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:

  • Áp dụng cho tất cả các phiên bản máy ảo mà bạn muốn 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. Phạm vi này chứa tất cả địa chỉ IP mà IAP sử dụng để chuyển tiếp TCP.

Bên 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. Hãy 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 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 khu vực và 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ể 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 cụm

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

Chế độ xem 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 rồi chuyển đến dự án của bạn.

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

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

f622ab14ddc96fc7.png

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

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

  • Chọn Quyền truy cập mạng → Điểm cuối riêng tư → Cụm chuyên dụng → 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

Tệp đí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 đ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 thị 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 kết nối dịch vụ riêng tư: 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à lưu cục bộ có tên setup_psc.sh. Sau khi lưu, hãy chỉnh sửa tập lệnh shell để cho phép psc truy cập toàn cầu. Bạn có thể thực hiện thao tác này trong Cloud Shell của dự án Google Cloud.

  • Ví dụ về tập lệnh shell, kết quả 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ục

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 địa chỉ IP và Tên điểm cuối Private Service Connect cần thiết cho bước triển khai tiếp theo.

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

sh setup_psc.sh

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

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 đó chuyển đến Bảo mật → Quyền truy cập mạng → Điểm cuối riêng tư. Sau khi 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 Google Cloud Console, hãy chuyển đến Dịch vụ mạng → Private Service Connect, chọn thẻ Điểm cuối đã 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 Đang chờ xử lý → Đã chấp nhận, ví dụ bên dưới:

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 rồi chuyển đến dự án của bạn.

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

  • Chọn Quyền truy cập mạng → Điểm cuối riêng tư → Cụm chuyên dụng → 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

Tệp đí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 đ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 thị 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 kết nối dịch vụ riêng tư: 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à lưu cục bộ có tên setup_psc.sh. Sau khi lưu, hãy chỉnh sửa tập lệnh shell để cho phép psc truy cập toàn cầu. Bạn có thể thực hiện thao tác này trong Cloud Shell của dự án Google Cloud.

  • Ví dụ về tập lệnh shell, kết quả 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ục

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 địa chỉ IP và Tên điểm cuối Private Service Connect cần thiết cho bước triển khai tiếp theo.

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

sh setup_psc.sh

Sau khi tập lệnh hoàn tất, hãy sử 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 đó chuyển đến Bảo mật → Quyền truy cập mạng → Điểm cuối riêng tư. Chọn thẻ, cụm chuyên dụng, điểm cuối chuyển sang trạng thái có sẵn sau 10 phút.

Trạng thái có sẵn:

8801df4f6b39d20a.png

Trong Google Cloud Console, hãy chuyển đến Dịch vụ mạng → Private Service Connect, chọn thẻ Điểm cuối đã 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 Đ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 dùng và cần chuyển sang trạng thái đã 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 Kết nối dịch vụ riêng tư đượ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 thể hiện 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 lượt triển khai rồi chọn Kết nối (lưu ý rằng hộp màu xám không còn xuất hiện nữa)

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 Kết nối bằng MongoDB Shell

35e422af16cb5ce0.png

Chọn I do not have the MongoDB Shell installed (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 tệp ghi chú.

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 đó trong bước 1 và 3. Sau đó, bạn sẽ ssh vào vm1 bằng Cloud Shell, sau đó cài đặt và xác thực ứng dụng mongosh vào 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 một 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, 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, 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 như 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 hết thời gian chờ.

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

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

Thực hiện cài đặt từ thông tin đăng nhập hệ điều hành Cloud Shell, có thêm thông tin chi tiết, 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 bản triển khai MongoDB

Trong phần đăng nhập vào hệ điều hành 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 phần đăng nhập vào hệ điều hành 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. Khu vực 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 sang dự phòng khu vực cụm MongoDB chính us-west1 và xác minh rằng bạn vẫn có thể truy cập vào cơ sở dữ liệu từ cụm MongoDB ở us-west2.

Bạn có thể kiểm thử cả chế độ dự phòng chính và dự phòng theo khu vực từ 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, psc-mongodb-uswest1-uswest2 → Sự cố kiểm thử.

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→ Mô phỏng sự cố ngừng hoạt động theo khu vực.

76494a750a040bc5.png

Sau khi bạn chọn, cụm sẽ hiển thị mô phỏng sự cố ngừng hoạt động 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 sang làm vùng 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 vùng chính mới, us-west2

Đăng nhập vào vm1 ở 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 dịch vụ kết nối riêng tư.

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

Trong Cloud Shell, hãy thực hiện như 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 hết thời gian chờ.

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

Kết nối với bản triển khai MongoDB

Trong phần đăng nhập vào hệ điều hành 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 phần đăng nhập vào hệ điều hành 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 của PSC cho phép kết nối liền mạch của điểm cuối của người tiêu dùng trên các khu vực để hỗ trợ khả năng đáp ứ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 dự phòng theo khu vực của MongoDB đã xảy ra trong nút chính nằm ở us-west1, do đó, khu vực phụ us-west2 đã tiếp quản nút chính. Mặc dù cụm này đã gây ra sự cố ngừng hoạt động ở khu vực, nhưng vm1 của người dùng ở us-west1 đã kết nối thành công với cụm chính mới ở us-west2.

12. Dọn dẹp

Xoá các điểm cuối của người dùng trong Cloud Console

Chuyển đến Dịch vụ mạng → Kết nối dịch vụ riêng tư → Đ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 của người dùng không phải 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 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 của người dùng không phải 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

Trong 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

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

f82e28ac984d9e20.png

Chọn Kết thúc mô phỏng sự cố ngừng hoạt động —> Thoát

38feaf055abdceea.png

Cụm này hiện đang chuyển về us-west1 làm 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 Bảo mật → Quyền truy cập mạng → Điểm cuối riêng tư → Chọn Huỷ

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 Kết nối dịch vụ riêng tư 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 VPC của người dùng, MongoDB nhiều vùng và các điểm cuối của người dùng. Một máy ảo ở 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 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 vời!!

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