1. Giới thiệu
VPC Peering là một phương thức phổ biến để nhà sản xuất cung cấp dịch vụ tiêu thụ cho người dùng. Tuy nhiên, việc sử dụng tính năng kết nối VPC ngang hàng sẽ đi kèm với nhiều điểm phức tạp về định tuyến, chẳng hạn như kết nối VPC ngang hàng không bắc cầu, mức tiêu thụ địa chỉ IP lớn và việc phơi bày quá mức các tài nguyên trong một VPC được kết nối ngang hàng.
Private Service Connect (PSC) là một phương thức kết nối cho phép nhà sản xuất cung cấp dịch vụ thông qua một điểm cuối duy nhất mà người tiêu dùng cung cấp trong VPC của khối lượng công việc. Điều này giúp loại bỏ nhiều vấn đề mà người dùng gặp phải khi sử dụng tính năng kết nối ngang hàng VPC. Mặc dù nhiều dịch vụ mới đang được tạo bằng PSC, nhưng vẫn có nhiều dịch vụ tồn tại dưới dạng dịch vụ VPC Peering.
Google Cloud rất vui mừng giới thiệu lộ trình di chuyển cho các dịch vụ mà bạn đã tạo thông qua VPC Peering để chuyển sang một cấu trúc dựa trên PSC. Khi sử dụng phương thức di chuyển này, địa chỉ IP cho dịch vụ nhà sản xuất được hiển thị thông qua tính năng kết nối ngang hàng VPC sẽ được giữ nguyên cho đến khi có cấu trúc dựa trên PSC, do đó, người dùng chỉ cần thực hiện một số thay đổi tối thiểu. Hãy làm theo lớp học lập trình này để tìm hiểu các bước kỹ thuật cần thực hiện để di chuyển.
LƯU Ý: Đường dẫn di chuyển này chỉ dành cho những dịch vụ mà nhà sản xuất và người tiêu dùng nằm trong cùng một tổ chức Google Cloud. Đối với mọi dịch vụ của Google Cloud hoặc dịch vụ của bên thứ ba sử dụng tính năng kết nối ngang VPC, các dịch vụ này sẽ tận dụng một phương thức di chuyển tương tự, nhưng phương thức này sẽ được tuỳ chỉnh cho chính dịch vụ đó. Vui lòng liên hệ với các bên liên quan để hỏi về phương thức di chuyển cho các loại dịch vụ này.
Kiến thức bạn sẽ học được
- Cách thiết lập dịch vụ dựa trên tính năng kết nối ngang hàng VPC
- Cách thiết lập dịch vụ dựa trên PSC
- Sử dụng Internal-Ranges API để thực hiện quá trình di chuyển mạng con qua VPC Peering nhằm đạt được quá trình di chuyển dịch vụ VPC Peering sang PSC.
- Tìm hiểu thời điểm cần có thời gian ngừng hoạt động để di chuyển dịch vụ
- Các bước dọn dẹp sau khi di chuyển
Bạn cần có
- Dự án trên Google Cloud có quyền của chủ sở hữu
2. Cấu trúc liên kết lớp học lập trình
Để đơn giản hoá, lớp học lập trình này tập trung tất cả tài nguyên vào một dự án duy nhất. Trong codelab, bạn sẽ thấy những thao tác cần thực hiện ở phía nhà sản xuất và những thao tác cần thực hiện ở phía người dùng trong trường hợp nhà sản xuất và người dùng nằm trong các dự án khác nhau.
Lớp học lập trình này sẽ có 4 trạng thái.

Trạng thái 1 là trạng thái VPC Peering. Sẽ có 2 VPC, consumer-vpc và producer-vpc được kết nối với nhau. Producer-vpc sẽ có một dịch vụ Apache đơn giản được hiển thị thông qua một Trình cân bằng tải chuyển tiếp mạng nội bộ. Consumer-vpc sẽ có một consumer-vm duy nhất cho mục đích kiểm thử.

Trạng thái 2 là trạng thái kiểm thử PSC. Chúng ta sẽ tạo một quy tắc chuyển tiếp mới và sử dụng quy tắc này để liên kết với Service Attachment. Sau đó, chúng ta sẽ tạo một điểm cuối PSC thử nghiệm trong consumer-vpc để kiểm thử xem dịch vụ PSC của chúng ta có hoạt động như dự kiến hay không.

Trạng thái 3 là trạng thái di chuyển. Chúng tôi sẽ dành riêng dải mạng con trong producer-vpc nơi dịch vụ dựa trên VPC Peering được triển khai để sử dụng trong consumer-vpc. Sau đó, chúng ta sẽ tạo một điểm cuối PSC mới có cùng địa chỉ IP với quy tắc chuyển tiếp đã có trong producer-vpc.

Trạng thái 4 là trạng thái PSC cuối cùng. Chúng tôi sẽ dọn dẹp điểm cuối PSC thử nghiệm và xoá VPC kết nối ngang hàng giữa consumer-vpc và producer-vpc.
3. Thiết lập và yêu cầu
Thiết lập môi trường theo tốc độ của riêng bạn
- Đăng nhập vào Google Cloud Console rồi tạo một dự án mới hoặc sử dụng lại một dự án hiện có. Nếu chưa có tài khoản Gmail hoặc Google Workspace, bạn phải tạo một tài khoản.



- Tên dự án là tên hiển thị của những người tham gia dự án này. Đây là một chuỗi ký tự mà các API của Google không sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là mã duy nhất trên tất cả các dự án trên Google Cloud và không thể thay đổi (bạn không thể thay đổi mã này sau khi đã đặt). Cloud Console sẽ tự động tạo một chuỗi duy nhất; thường thì bạn không cần quan tâm đến chuỗi này. Trong hầu hết các lớp học lập trình, bạn sẽ cần tham chiếu đến Mã dự án (thường được xác định là
PROJECT_ID). Nếu không thích mã nhận dạng được tạo, bạn có thể tạo một mã nhận dạng ngẫu nhiên khác. Hoặc bạn có thể thử tên người dùng của riêng mình để xem tên đó có được chấp nhận hay không. Bạn không thể thay đổi tên này sau bước này và tên này sẽ tồn tại trong suốt thời gian của dự án. - Để bạn nắm được thông tin, có một giá trị thứ ba là Số dự án mà một số API sử dụng. Tìm hiểu thêm về cả 3 giá trị này trong tài liệu.
- Tiếp theo, bạn cần bật tính năng thanh toán trong Cloud Console để sử dụng các tài nguyên/API trên đám mây. Việc thực hiện lớp học lập trình này sẽ không tốn nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí ngoài phạm vi hướng dẫn này, bạn có thể xoá các tài nguyên đã tạo hoặc xoá dự án. Người dùng mới của Google Cloud đủ điều kiện tham gia chương trình Dùng thử miễn phí trị giá 300 USD.
Khởi động Cloud Shell
Mặc dù có thể vận hành Google Cloud từ xa trên máy tính xách tay, nhưng trong lớp học lập trình này, bạn sẽ sử dụng Google Cloud Shell, một môi trường dòng lệnh chạy trên Cloud.
Trên Bảng điều khiển Google Cloud, hãy nhấp vào biểu tượng Cloud Shell trên thanh công cụ ở trên cùng bên phải:

Quá trình này chỉ mất vài phút để cung cấp và kết nối với môi trường. Khi quá trình này kết thúc, bạn sẽ thấy như sau:

Máy ảo này được trang bị tất cả các công cụ phát triển mà bạn cần. Nó cung cấp một thư mục chính có dung lượng 5 GB và chạy trên Google Cloud, giúp tăng cường đáng kể hiệu suất mạng và hoạt động xác thực. Bạn có thể thực hiện mọi thao tác trong lớp học lập trình này trong trình duyệt. Bạn không cần cài đặt bất cứ thứ gì.
4. Trước khi bắt đầu
Bật API
Trong Cloud Shell, hãy đảm bảo rằng dự án của bạn đã được thiết lập và định cấu hình các biến.
gcloud auth login gcloud config list project gcloud config set project [YOUR-PROJECT-ID] export projectid=[YOUR-PROJECT-ID] export region=us-central1 export zone=$region-a echo $projectid echo $region echo $zone
Bật tất cả các dịch vụ cần thiết
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com
5. Tạo mạng VPC của nhà sản xuất (Hoạt động của nhà sản xuất)
Mạng VPC
Từ Cloud Shell
gcloud compute networks create producer-vpc \
--subnet-mode=custom
Tạo mạng con
Từ Cloud Shell
gcloud compute networks subnets create producer-service-subnet \
--network=producer-vpc \
--range=10.0.0.0/28 \
--region=$region
gcloud compute networks subnets create producer-fr-subnet \
--network=producer-vpc \
--range=192.168.0.0/28 \
--region=$region
Tạo Cloud Router và Cloud NAT cho nhà sản xuất
Từ Cloud Shell
gcloud compute routers create $region-cr \
--network=producer-vpc \
--region=$region
gcloud compute routers nats create $region-nat \
--router=$region-cr \
--region=$region \
--nat-all-subnet-ip-ranges \
--auto-allocate-nat-external-ips
Tạo Chính sách tường lửa mạng của nhà sản xuất và Quy tắc tường lửa
Từ Cloud Shell
gcloud compute network-firewall-policies create producer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy producer-vpc-policy \
--network producer-vpc \
--name network-producer-vpc \
--global-firewall-policy
Để 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.
Từ Cloud Shell
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
Chúng ta cũng sẽ tạo thêm 2 quy tắc cho phép các quy trình kiểm tra tình trạng của Bộ cân bằng tải đối với dịch vụ, cũng như cho phép lưu lượng truy cập mạng từ các máy ảo sẽ kết nối từ consumer-vpc.
Từ Cloud Shell
gcloud compute network-firewall-policies rules create 2000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "LB healthchecks" \
--direction INGRESS \
--src-ip-ranges 130.211.0.0/22,35.191.0.0/16 \
--layer4-configs tcp:80 \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 3000 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow access from consumer-vpc" \
--direction INGRESS \
--src-ip-ranges 10.0.1.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
6. Thiết lập dịch vụ nhà sản xuất (Hoạt động của nhà sản xuất)
Chúng ta sẽ tạo một dịch vụ nhà sản xuất với một máy ảo duy nhất chạy máy chủ web Apache. Máy ảo này sẽ được thêm vào một Nhóm thực thể không được quản lý có một Trình cân bằng tải truyền qua mạng nội bộ theo khu vực ở phía trước.
Tạo VM và Nhóm phiên bản không được quản lý
Từ Cloud Shell
gcloud compute instances create producer-service-vm \
--network producer-vpc \
--subnet producer-service-subnet \
--zone $zone \
--no-address \
--metadata startup-script='#! /bin/bash
sudo apt-get update
sudo apt-get install apache2 -y
a2enmod ssl
sudo a2ensite default-ssl
echo "I am a Producer Service." | \
tee /var/www/html/index.html
systemctl restart apache2'
Từ Cloud Shell
gcloud compute instance-groups unmanaged create prod-uig \ --zone=$zone gcloud compute instance-groups unmanaged add-instances prod-uig \ --zone=$zone \ --instances=producer-service-vm
Tạo Trình cân bằng tải chuyển tiếp mạng nội bộ theo khu vực
Từ Cloud Shell
gcloud compute health-checks create http producer-hc \
--region=$region
gcloud compute backend-services create producer-bes \
--load-balancing-scheme=internal \
--protocol=tcp \
--region=$region \
--health-checks=producer-hc \
--health-checks-region=$region
gcloud compute backend-services add-backend producer-bes \
--region=$region \
--instance-group=prod-uig \
--instance-group-zone=$zone
gcloud compute addresses create producer-fr-ip\
--region $region \
--subnet producer-fr-subnet \
--addresses 192.168.0.2
gcloud compute forwarding-rules create producer-fr \
--region=$region \
--load-balancing-scheme=internal \
--network=producer-vpc \
--subnet=producer-fr-subnet \
--address=producer-fr-ip \
--ip-protocol=TCP \
--ports=80 \
--backend-service=producer-bes \
--backend-service-region=$region
7. Tạo mạng VPC của người tiêu dùng (Hoạt động của người tiêu dùng)
Mạng VPC
Từ Cloud Shell
gcloud compute networks create consumer-vpc \
--subnet-mode=custom
Tạo mạng con
Từ Cloud Shell
gcloud compute networks subnets create consumer-vm-subnet \
--network=consumer-vpc \
--range=10.0.1.0/28 \
--region=$region
Tạo Chính sách tường lửa mạng người tiêu dùng và Quy tắc tường lửa
Chúng ta sẽ tạo một Chính sách tường lửa mạng khác cho consumer-vpc.
Từ Cloud Shell
gcloud compute network-firewall-policies create consumer-vpc-policy --global
gcloud compute network-firewall-policies associations create \
--firewall-policy consumer-vpc-policy \
--network consumer-vpc \
--name network-consumer-vpc \
--global-firewall-policy
gcloud compute network-firewall-policies rules create 1000 \
--action ALLOW \
--firewall-policy consumer-vpc-policy \
--description "SSH with IAP" \
--direction INGRESS \
--src-ip-ranges 35.235.240.0/20 \
--layer4-configs tcp:22 \
--global-firewall-policy
8. Tạo VPC ngang hàng
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud compute networks peerings create producer-vpc-peering \
--network=producer-vpc \
--peer-project=$projectid \
--peer-network=consumer-vpc
Hoạt động của người tiêu dùng
Từ Cloud Shell
gcloud compute networks peerings create consumer-vpc-peering \
--network=consumer-vpc \
--peer-project=$projectid \
--peer-network=producer-vpc
Xác nhận rằng quá trình thiết lập kết nối ngang hàng đã hoàn tất bằng cách kiểm tra danh sách các tuyến đường trong consumer-vpc. Bạn sẽ thấy các tuyến cho cả consumer-vpc và producer-vpc.
Hoạt động của người tiêu dùng
Từ Cloud Shell
gcloud compute routes list --filter="network=consumer-vpc"
Kết quả đầu ra dự kiến
NAME: default-route-49dda7094977e231 NETWORK: consumer-vpc DEST_RANGE: 0.0.0.0/0 NEXT_HOP: default-internet-gateway PRIORITY: 1000 NAME: default-route-r-10d65e16cc6278b2 NETWORK: consumer-vpc DEST_RANGE: 10.0.1.0/28 NEXT_HOP: consumer-vpc PRIORITY: 0 NAME: peering-route-496d0732b4f11cea NETWORK: consumer-vpc DEST_RANGE: 192.168.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0 NAME: peering-route-b4f9d3acc4c08d55 NETWORK: consumer-vpc DEST_RANGE: 10.0.0.0/28 NEXT_HOP: consumer-vpc-peering PRIORITY: 0
9. Tạo vùng DNS (Hoạt động của người tiêu dùng)
Chúng ta sẽ tạo một Vùng DNS riêng của Cloud DNS để gọi dịch vụ nhà sản xuất thông qua DNS thay vì thông qua địa chỉ IP riêng để minh hoạ một ví dụ thực tế hơn.
Chúng ta sẽ thêm một bản ghi A vào dịch vụ trỏ miền example.com. service.example.com đến địa chỉ IP của Quy tắc chuyển tiếp Bộ cân bằng tải truyền qua mạng mà chúng ta đã tạo trước đó. Địa chỉ IP của Quy tắc chuyển tiếp đó là 192.168.0.2.
Từ Cloud Shell
gcloud dns managed-zones create "producer-service" \ --dns-name=example.com \ --description="producer service dns" \ --visibility=private \ --networks=consumer-vpc gcloud dns record-sets transaction start \ --zone="producer-service" gcloud dns record-sets transaction add 192.168.0.2 \ --name=service.example.com \ --ttl=300 \ --type=A \ --zone="producer-service" gcloud dns record-sets transaction execute \ --zone="producer-service"
10. Kiểm thử dịch vụ nhà sản xuất qua VPC ngang hàng (Hoạt động của người tiêu dùng)
Đến đây, cấu trúc Trạng thái 1 đã được tạo.
Tạo máy ảo ứng dụng khách
Từ Cloud Shell
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
Kiểm thử khả năng kết nối
Từ Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Từ VM của ứng dụng khách
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ VM của ứng dụng khách
exit
11. Chuẩn bị dịch vụ cho Private Service Connect (Hoạt động của nhà sản xuất)
Giờ đây, sau khi hoàn tất tất cả các bước thiết lập ban đầu, chúng ta sẽ bắt đầu chuẩn bị dịch vụ được kết nối VPC để di chuyển sang Private Service Connect. Trong phần này, chúng ta sẽ thay đổi producer-vpc bằng cách định cấu hình dịch vụ để được hiển thị thông qua một Tệp đính kèm dịch vụ. Chúng ta cần tạo một mạng con mới và một quy tắc chuyển tiếp mới trong mạng con đó để có thể di chuyển mạng con hiện có sang consumer-vpc nhằm giữ nguyên địa chỉ IP hiện có của dịch vụ.
Tạo mạng con nơi sẽ lưu trữ IP quy tắc chuyển tiếp của bộ cân bằng tải mới.
Từ Cloud Shell
gcloud compute networks subnets create producer-psc-fr-subnet \
--network=producer-vpc \
--range=10.0.2.64/28 \
--region=$region
Tạo địa chỉ IP nội bộ cho quy tắc chuyển tiếp của trình cân bằng tải.
Từ Cloud Shell
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
Tạo quy tắc chuyển tiếp của bộ cân bằng tải mới. Quy tắc này được định cấu hình để sử dụng cùng một dịch vụ phụ trợ và các quy trình kiểm tra tình trạng mà chúng ta đã định cấu hình trước đó.
Từ Cloud Shell
gcloud compute forwarding-rules create psc-service-fr \ --region=$region \ --load-balancing-scheme=internal \ --network=producer-vpc \ --subnet=producer-psc-fr-subnet \ --address=producer-psc-ip \ --ip-protocol=TCP \ --ports=80 \ --backend-service=producer-bes \ --backend-service-region=$region
psc-nat-subnet sẽ được liên kết với PSC Service Attachment cho mục đích Network Address Translation. Đối với các trường hợp sử dụng trong thực tế, bạn cần điều chỉnh kích thước của mạng con này cho phù hợp để hỗ trợ số lượng điểm cuối được đính kèm. Hãy xem tài liệu về việc định cỡ mạng con NAT PSC để biết thêm thông tin.
Từ Cloud Shell
gcloud compute networks subnets create psc-nat-subnet \
--network=producer-vpc \
--range=10.100.100.0/28 \
--region=$region \
--purpose=PRIVATE_SERVICE_CONNECT
Chúng ta phải thêm một quy tắc tường lửa khác vào Chính sách tường lửa mạng để cho phép lưu lượng truy cập từ psc-nat-subnet. Khi truy cập vào dịch vụ thông qua PSC, psc-nat-subnet là nơi lưu lượng truy cập sẽ được lấy nguồn.
Từ Cloud Shell
gcloud compute network-firewall-policies rules create 2001 \
--action ALLOW \
--firewall-policy producer-vpc-policy \
--description "allow PSC NAT subnet" \
--direction INGRESS \
--src-ip-ranges 10.100.100.0/28 \
--layer4-configs tcp:80 \
--global-firewall-policy
Tạo tệp đính kèm dịch vụ và ghi lại URI của tệp đính kèm dịch vụ để định cấu hình điểm cuối PSC trong phần tiếp theo.
Từ Cloud Shell
gcloud compute service-attachments create producer-sa \
--region=$region \
--producer-forwarding-rule=psc-service-fr \
--connection-preference=ACCEPT_MANUAL \
--consumer-accept-list=$projectid=5 \
--nat-subnets=psc-nat-subnet
Từ Cloud Shell
gcloud compute service-attachments describe producer-sa --region=$region
Kết quả mẫu
connectionPreference: ACCEPT_MANUAL consumerAcceptLists: - connectionLimit: 5 projectIdOrNum: $projectid creationTimestamp: '2025-04-24T11:23:09.886-07:00' description: '' enableProxyProtocol: false fingerprint: xxx id: 'xxx' kind: compute#serviceAttachment name: producer-sa natSubnets: - https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/psc-nat-subnet pscServiceAttachmentId: high: 'xxx' low: 'xxx' reconcileConnections: false region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/serviceAttachments/producer-sa targetService: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/forwardingRules/psc-service-fr
12. Kết nối "thử nghiệm" Điểm cuối PSC của người tiêu dùng với Dịch vụ nhà sản xuất và Thử nghiệm (Hoạt động của người tiêu dùng)
Giờ đây, cấu trúc này ở Trạng thái 2.
Tại thời điểm này, dịch vụ nhà sản xuất hiện có được hiển thị qua VPC Peering vẫn đang hoạt động và hoạt động bình thường trong trường hợp Sản xuất. Chúng tôi sẽ tạo một điểm cuối PSC "thử nghiệm" để đảm bảo rằng Service Attachment được hiển thị đang hoạt động đúng cách trước khi chúng tôi bắt đầu khoảng thời gian ngừng hoạt động để di chuyển mạng con VPC Peering hiện tại sang VPC của người dùng. Khả năng kết nối ở trạng thái cuối cùng sẽ là một điểm cuối PSC có cùng địa chỉ IP với quy tắc chuyển tiếp hiện tại cho dịch vụ dựa trên VPC Peering.
Tạo điểm cuối PSC
Từ Cloud Shell
gcloud compute addresses create test-psc-endpoint-ip \
--region=$region \
--subnet=consumer-vm-subnet \
--addresses 10.0.1.3
Dịch vụ đích bên dưới sẽ là URI của Service Attachment mà bạn đã ghi lại ở bước cuối cùng.
Từ Cloud Shell
gcloud compute forwarding-rules create test-psc-endpoint \ --region=$region \ --network=consumer-vpc \ --address=test-psc-endpoint-ip \ --target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
Kiểm thử Điểm cuối PSC "kiểm thử"
Từ Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Từ consumer-client
curl 10.0.1.3
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ consumer-client
exit
13. Di chuyển mạng con của quy tắc chuyển tiếp hiện có của nhà sản xuất
Việc thực hiện các bước này sẽ khiến dịch vụ Producer dựa trên VPC Peering trực tiếp bị ngừng hoạt động. Giờ đây, chúng ta sẽ di chuyển mạng con của quy tắc chuyển tiếp từ producer-vpc sang consumer-vpc bằng Internal Ranges API. Thao tác này sẽ khoá mạng con để không được sử dụng trong khoảng thời gian tạm thời khi chúng tôi xoá mạng con trong producer-vpc và chỉ định mạng con đó chỉ cho mục đích di chuyển để tạo trong consumer-vpc.
API phạm vi nội bộ yêu cầu bạn đặt trước mạng con quy tắc chuyển tiếp kết nối ngang hàng VPC hiện có (producer-fr-subnet, 192.168.0.0/28) và chỉ định tên mạng con mục tiêu trong consumer-vpc (consumer-psc-subnet). Chúng ta sẽ tạo một mạng con mới trong consumer-vpc có tên này qua vài bước.
Dành riêng mạng con producer-fr cho quá trình di chuyển
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud network-connectivity internal-ranges create producer-peering-internal-range \
--ip-cidr-range=192.168.0.0/28 \
--network=producer-vpc \
--usage=FOR_MIGRATION \
--migration-source=projects/$projectid/regions/$region/subnetworks/producer-fr-subnet \
--migration-target=projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
Chạy lệnh mô tả trên internal-range mà chúng ta đã tạo để xem trạng thái của mạng con.
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud network-connectivity internal-ranges describe producer-peering-internal-range
Kết quả mẫu
createTime: '2025-04-24T19:26:10.589343291Z' ipCidrRange: 192.168.0.0/28 migration: source: projects/$projectid/regions/$region/subnetworks/producer-fr-subnet target: projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet name: projects/$projectid/locations/global/internalRanges/producer-peering-internal-range network: https://www.googleapis.com/compute/v1/projects/$project/global/networks/producer-vpc peering: FOR_SELF updateTime: '2025-04-24T19:26:11.521960016Z' usage: FOR_MIGRATION
Xoá Quy tắc chuyển tiếp và Mạng con dựa trên VPC Peering
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud compute forwarding-rules delete producer-fr --region=$region gcloud compute addresses delete producer-fr-ip --region=$region gcloud compute networks subnets delete producer-fr-subnet --region=$region
Di chuyển mạng con
Di chuyển mạng con sang consumer-vpc bằng cách tạo một mạng con mới bằng internal-range mà chúng ta đã tạo trước đó. Tên của mạng con này phải giống với tên mà chúng ta đã nhắm đến trước đó (consumer-psc-subnet). Mục đích cụ thể của PEER_MIGRATION là ghi chú rằng mạng con được dành riêng cho việc di chuyển mạng con giữa các VPC ngang hàng. Với cờ mục đích này, mạng con này chỉ có thể chứa các địa chỉ IP tĩnh được đặt trước và các điểm cuối PSC.
Hoạt động của người tiêu dùng
Từ Cloud Shell
gcloud compute networks subnets create consumer-psc-subnet \ --purpose=PEER_MIGRATION \ --network=consumer-vpc \ --range=192.168.0.0/28 \ --region=$region
14. Tạo điểm cuối PSC trạng thái kết thúc (Hoạt động của người tiêu dùng)
Tại thời điểm này, dịch vụ Producer vẫn ngừng hoạt động. Mạng con mà chúng ta vừa tạo vẫn bị khoá và chỉ có thể dùng cho mục đích di chuyển cụ thể. Bạn có thể kiểm thử bằng cách cố gắng tạo một VM trong mạng con này. Không tạo được máy ảo.
Từ Cloud Shell
gcloud compute instances create test-consumer-vm \
--zone=$zone \
--subnet=consumer-psc-subnet \
--no-address
Kết quả đầu ra dự kiến
ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Subnetwork must have purpose=PRIVATE.
Chúng ta chỉ có thể sử dụng mạng con này để tạo một điểm cuối PSC. Xin lưu ý rằng địa chỉ IP mà chúng tôi tạo sử dụng cùng một IP với quy tắc chuyển tiếp mà dịch vụ nhà sản xuất của chúng tôi đã sử dụng qua VPC Peer.
Từ Cloud Shell
gcloud compute addresses create psc-endpoint-ip \
--region=$region \
--subnet=consumer-psc-subnet \
--addresses 192.168.0.2
Một lần nữa, bạn phải sử dụng cùng một URI Đính kèm dịch vụ mà bạn đã ghi chú trước đó và cũng được dùng để tạo Điểm cuối PSC "test".
Từ Cloud Shell
gcloud compute forwarding-rules create psc-endpoint \
--region=$region \
--network=consumer-vpc \
--address=psc-endpoint-ip \
--target-service-attachment=projects/$projectid/regions/$region/serviceAttachments/producer-sa
15. Kiểm thử Điểm cuối PSC trạng thái kết thúc (Hoạt động của người tiêu dùng)
Tại thời điểm này, bạn đang ở cấu trúc State 3.
Từ Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Từ VM của ứng dụng khách
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ VM của ứng dụng khách
exit
Tại thời điểm này, sự cố ngừng dịch vụ đã kết thúc và dịch vụ đã hoạt động trở lại. Xin lưu ý rằng chúng tôi không phải thực hiện bất kỳ thay đổi nào đối với DNS hiện có. Bạn không cần thực hiện thay đổi nào đối với ứng dụng phía người dùng. Các ứng dụng chỉ cần tiếp tục hoạt động đối với dịch vụ đã di chuyển.
16. Dọn dẹp sau khi di chuyển
Để hoàn tất quá trình di chuyển, chúng ta cần thực hiện một số bước dọn dẹp. Chúng ta phải xoá và mở khoá các tài nguyên.
Mở khoá mạng con Internal Range
Thao tác này sẽ mở khoá mạng con đã di chuyển để bạn có thể thay đổi mục đích của mạng con đó từ "PEER_MIGRATION" thành "PRIVATE".
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
Hoạt động của người tiêu dùng
Từ Cloud Shell
gcloud compute networks subnets update consumer-psc-subnet \
--region=$region \
--purpose=PRIVATE
gcloud compute networks subnets describe consumer-psc-subnet --region=$region
Kết quả mẫu
creationTimestamp: '2025-04-24T12:29:33.883-07:00' fingerprint: xxx gatewayAddress: 192.168.0.1 id: 'xxx' ipCidrRange: 192.168.0.0/28 kind: compute#subnetwork name: consumer-psc-subnet network: https://www.googleapis.com/compute/v1/projects/$projectid/global/networks/consumer-vpc privateIpGoogleAccess: false privateIpv6GoogleAccess: DISABLE_GOOGLE_ACCESS purpose: PRIVATE region: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region selfLink: https://www.googleapis.com/compute/v1/projects/$projectid/regions/$region/subnetworks/consumer-psc-subnet
Xoá VPC ngang hàng
Hoạt động của nhà sản xuất
Từ Cloud Shell
gcloud compute networks peerings delete producer-vpc-peering \
--network=producer-vpc
Hoạt động của người tiêu dùng
Từ Cloud Shell
gcloud compute networks peerings delete consumer-vpc-peering \
--network=consumer-vpc
Xoá Điểm cuối PSC "thử nghiệm"
Consumer-Activity
Từ Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. Kiểm thử cuối cùng sau khi dọn dẹp quá trình di chuyển (Hoạt động của người tiêu dùng)
Tại thời điểm này, bạn đã đạt được cấu trúc Trạng thái 4 (trạng thái cuối cùng).
Kiểm tra lại khả năng kết nối của Điểm cuối PSC để đảm bảo không có tác động tiêu cực nào từ việc dọn dẹp sau khi di chuyển.
Từ Cloud Shell
gcloud compute ssh \
--zone "$zone" "consumer-client" \
--tunnel-through-iap \
--project $projectid
Từ VM của ứng dụng khách
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ VM của ứng dụng khách
exit
THÀNH CÔNG!
18. Các bước dọn dẹp
Từ Cloud Shell
gcloud compute forwarding-rules delete psc-endpoint --region=$region -q gcloud compute addresses delete psc-endpoint-ip --region=$region -q gcloud compute instances delete consumer-client --zone=$zone --project=$projectid -q gcloud dns record-sets delete service.example.com --zone="producer-service" --type=A -q gcloud dns managed-zones delete "producer-service" -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy consumer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=consumer-vpc-policy --name=network-consumer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete consumer-vpc-policy --global -q gcloud compute networks subnets delete consumer-psc-subnet --region=$region -q gcloud compute networks subnets delete consumer-vm-subnet --region=$region -q gcloud compute networks delete consumer-vpc -q gcloud compute service-attachments delete producer-sa --region=$region -q gcloud compute forwarding-rules delete psc-service-fr --region=$region -q gcloud compute addresses delete producer-psc-ip --region=$region -q gcloud compute backend-services delete producer-bes --region=$region -q gcloud compute health-checks delete producer-hc --region=$region -q gcloud compute instance-groups unmanaged delete prod-uig --zone=$zone -q gcloud compute instances delete producer-service-vm --zone=$zone --project=$projectid -q gcloud compute network-firewall-policies rules delete 3000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2001 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 2000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies rules delete 1000 --firewall-policy producer-vpc-policy --global-firewall-policy -q gcloud compute network-firewall-policies associations delete --firewall-policy=producer-vpc-policy --name=network-producer-vpc --global-firewall-policy -q gcloud compute network-firewall-policies delete producer-vpc-policy --global -q gcloud compute routers nats delete $region-nat --router=$region-cr --region=$region -q gcloud compute routers delete $region-cr --region=$region -q gcloud compute networks subnets delete psc-nat-subnet --region=$region -q gcloud compute networks subnets delete producer-psc-fr-subnet --region=$region -q gcloud compute networks subnets delete producer-service-subnet --region=$region -q gcloud compute networks delete producer-vpc -q
19. Xin chúc mừng!
Chúc mừng bạn đã hoàn thành lớp học lập trình này.
Nội dung đã đề cập
- Cách thiết lập dịch vụ dựa trên tính năng kết nối ngang hàng VPC
- Cách thiết lập dịch vụ dựa trên PSC
- Sử dụng Internal-Ranges API để thực hiện quá trình di chuyển mạng con qua VPC Peering nhằm đạt được quá trình di chuyển dịch vụ VPC Peering sang PSC.
- Tìm hiểu thời điểm cần có thời gian ngừng hoạt động để di chuyển dịch vụ
- Các bước dọn dẹp sau khi di chuyển