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. 
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-accesscho 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
- 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.
- 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.
- 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. 
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.

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

- 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)

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

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

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

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

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

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

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.

- 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ư)

Nhà cung cấp dịch vụ đám mây
- Chọn Google Cloud, rồi chọn tiếp theo

Đính kèm dịch vụ
- Chọn khu vực us-west1, rồi chọn tiếp theo

Đ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

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

- 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ộ.

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


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

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ụ:

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ư)

Nhà cung cấp dịch vụ đám mây
- Chọn Google Cloud, rồi chọn tiếp theo

Đính kèm dịch vụ
- Chọn khu vực us-west2, rồi chọn tiếp theo

Đ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

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

- 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ộ.

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


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ó:

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.

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ư.

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)

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

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

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.

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

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.

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:

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)

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).

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

- 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).

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ổ


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)

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:

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

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Á

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

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

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

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.


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

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

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

Tiếp theo là gì?
Hãy xem một số lớp học lập trình này...
- Sử dụng Private Service Connect để xuất bản và sử dụng các dịch vụ bằng GKE
- Sử dụng Private Service Connect để xuất bản và sử dụng các dịch vụ
- Kết nối với các dịch vụ tại chỗ qua Mạng kết hợp bằng Private Service Connect và bộ cân bằng tải TCP Proxy nội bộ
- Sử dụng Private Service Connect có cấu hình DNS tự động
Tài liệu đọc thêm và video
- Tổng quan về Private Service Connect
- Private Service Connect là gì?
- Các loại bộ cân bằng tải được hỗ trợ