1. Giới thiệu
Kết nối VPC ngang hàng là một phương thức phổ biến để nhà sản xuất cung cấp dịch vụ sử dụng cho người dùng. Tuy nhiên, việc sử dụng kết nối ngang hàng VPC gặp phải nhiều vấn đề phức tạp về việc định tuyến như kết nối ngang hàng VPC không mang tính chất bắc cầu, tiêu thụ địa chỉ IP lớn và phơi bày quá nhiều tài nguyên trong VPC ngang hàng.
Kết nối dịch vụ riêng tư (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ụ qua một điểm cuối duy nhất mà người tiêu dùng cung cấp trong VPC tải công việc. Việc này giúp loại bỏ rất nhiều vấn đề mà người dùng gặp phải khi kết nối ngang hàng VPC. Tuy có nhiều dịch vụ mới được tạo ra bằng PSC, nhưng vẫn còn nhiều dịch vụ tồn tại dưới dạng dịch vụ Kết nối ngang hàng đám mây riêng ảo (VPC).
Google Cloud rất vui mừng được giới thiệu một lộ trình di chuyển cho các dịch vụ mà bạn đã tạo thông qua tính năng Kết nối ngang hàng đám mây riêng ảo (VPC) để chuyển sang kiến trúc dựa trên PSC. Khi sử dụng phương pháp di chuyển này, địa chỉ IP của dịch vụ nhà sản xuất hiển thị thông qua kết nối ngang hàng VPC được duy trì thông qua kiến trúc dựa trên PSC để người tiêu dùng không phải thay đổi gì nhiều. Hãy tham gia lớp học lập trình này để tìm hiểu các bước kỹ thuật để thực hiện quá trình di chuyển này.
LƯU Ý: Lộ trình di chuyển này chỉ dành cho các dịch vụ mà nhà sản xuất và người tiêu dùng tồn tại trong cùng một tổ chức Google Cloud. Đối với những dịch vụ của Google Cloud hoặc dịch vụ của bên thứ ba sử dụng kết nối ngang hàng VPC, các dịch vụ đó sẽ sử dụng phương thức di chuyển tương tự, nhưng phương thức này sẽ được tuỳ chỉnh cho riêng dịch vụ đó. Vui lòng liên hệ với các bên thích hợp để hỏi về lộ trình 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ụ 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 API Phạm vi nội bộ để di chuyển mạng con qua tính năng Kết nối ngang hàng VPC nhằm di chuyển dịch vụ Kết nối ngang hàng VPC sang PSC.
- Tìm hiểu thời điểm cần phải ngừng hoạt động để di chuyển dịch vụ
- Các bước dọn dẹp quá trình di chuyển
Bạn cần có
- Dự án trên Google Cloud có quyền Chủ sở hữu
2. Cấu trúc liên kết của 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 lớp học lập trình này, chúng tôi sẽ lưu ý những hành động cần thực hiện ở phía nhà sản xuất và những hành động cần thực hiện về phía người tiêu dùng trong trường hợp nhà sản xuất và người tiêu dùng đang tham gia 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 Kết nối ngang hàng VPC. Sẽ có hai VPC là Consumer-vpc và production-vpc sẽ được kết nối ngang hàng với nhau. Producer-vpc sẽ hiển thị một dịch vụ Apache đơn giản thông qua Trình cân bằng tải truyền qua mạng nội bộ. Consumer-vpc sẽ có một user-vm duy nhất cho mục đích thử nghiệm.
Trạng thái 2 là trạng thái kiểm thử PSC. Chúng tôi 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 Tệp đính kèm dịch vụ của chúng tôi. Sau đó, chúng ta sẽ tạo một điểm cuối PSC kiểm thử trongConsumer-vpc để kiểm tra xem dịch vụ PSC của chúng tôi có đang hoạt động như mong đợi không.
Trạng thái 3 là trạng thái di chuyển. Chúng tôi sẽ dành riêng phạm vi mạng con theo mô-đun nhà sản xuất-vpc nơi dịch vụ dựa trên Kết nối ngang hàng VPC được triển khai để dùng trong phiên bản tiêu dùng-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ó sẵn trong production-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 kiểm thử và xoá kết nối ngang hàng VPC giữa user-vpc và production-vpc.
3. Cách thiết lập và các 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ị cho người tham gia dự án này. Đây là một chuỗi ký tự không được API của Google sử dụng. Bạn luôn có thể cập nhật thông tin này.
- Mã dự án là duy nhất trên tất cả các dự án Google Cloud và không thể thay đổi (không thể thay đổi 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ã được tạo, bạn có thể tạo một mã ngẫu nhiên khác. Ngoài ra, bạn có thể thử dùng email của riêng mình để xem có thể sử dụng hay không. Bạn không thể thay đổi thông tin này sau bước này và thông tin này sẽ được giữ nguyên trong suốt thời gian của dự án. - Xin lưu ý rằng có một giá trị thứ ba là Mã dự án mà một số API sử dụng. Tìm hiểu thêm về cả ba 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 Cloud. Việc tham gia lớp học lập trình này sẽ không tốn kém nhiều chi phí, nếu có. Để tắt các tài nguyên nhằm tránh bị tính phí sau khi hoàn tất 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í 300 USD.
Khởi động Cloud Shell
Mặc dù có thể điều khiển 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 đám mây.
Trong 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 cấp phép và kết nối với môi trường chỉ mất vài phút. Khi hoàn tất, bạn sẽ thấy như sau:
Máy ảo này được tải sẵn tất cả các công cụ phát triển mà bạn cần. Ứng dụng này cung cấp một thư mục gốc 5 GB ổn định và chạy trên Google Cloud, giúp nâng cao đáng kể hiệu suất mạng và 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 một trình duyệt. Bạn không cần cài đặt gì cả.
4. Trước khi bắt đầu
Bật API
Bên trong Cloud Shell, hãy đảm bảo rằng bạn đã thiết lập dự án 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ả 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
Của Cloud Shell
gcloud compute networks create producer-vpc \ --subnet-mode=custom
Tạo mạng con
Của 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
Của 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 cho mạng của Producer và quy tắc về tường lửa
Của 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 của bạn, hãy tạo một quy tắc tường lửa:
- Áp dụng cho tất cả các thực thể máy ảo mà bạn muốn truy cập được bằng cách sử dụ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.
Của 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 tôi cũng sẽ tạo thêm 2 quy tắc khác để cho phép dịch vụ kiểm tra tình trạng của Trình cân bằng tải cũng như cho phép lưu lượng truy cập mạng từ các máy ảo được kết nối từ máy chủ ảo-vpc.
Của 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ụ dành cho 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 có một máy ảo duy nhất chạy máy chủ web Apache. Dịch vụ này sẽ được thêm vào Nhóm thực thể không được quản lý phía trước với Trình cân bằng tải truyền qua mạng nội bộ theo khu vực.
Tạo nhóm thực thể máy ảo và nhóm thực thể không được quản lý
Của 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'
Của 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 truyền qua mạng nội bộ theo khu vực
Của 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
Của Cloud Shell
gcloud compute networks create consumer-vpc \ --subnet-mode=custom
Tạo mạng con
Của 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 về tường lửa và quy tắc về tường lửa cho mạng người dùng
Chúng tôi sẽ tạo một Chính sách tường lửa mạng khác cho consumer-vpc.
Của 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
Của 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
Của Cloud Shell
gcloud compute networks peerings create consumer-vpc-peering \ --network=consumer-vpc \ --peer-project=$projectid \ --peer-network=producer-vpc
Xác nhận kết nối ngang hàng đã được thiết lập bằng cách kiểm tra danh sách các tuyến trong Consumer-vpc. Bạn sẽ thấy các tuyến cho cả user-vpc và production-vpc.
Hoạt động của người tiêu dùng
Của Cloud Shell
gcloud compute routes list --filter="network=consumer-vpc"
Kết quả 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 tôi sẽ tạo một Vùng riêng tư Cloud DNS để gọi dịch vụ của nhà sản xuất thông qua DNS thay vì qua địa chỉ IP riêng tư để trình bày một ví dụ thực tế hơn.
Chúng ta sẽ thêm bản ghi A vào miền example.com trỏ tới service.example.com vào địa chỉ IP của Quy tắc chuyển tiếp cân bằng tải 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.
Của 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. Dịch vụ thử nghiệm cho nhà sản xuất qua VPC ngang hàng (Hoạt động của người tiêu dùng)
Tại thời điểm này, kiến trúc Trạng thái 1 đã được tạo.
Tạo máy ảo – khách hàng của người tiêu dùng
Của Cloud Shell
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
Kiểm tra khả năng kết nối
Của Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Từ máy ảo cho khách hàng – người tiêu dùng
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ máy ảo cho khách hàng – người tiêu dùng
exit
11. Chuẩn bị dịch vụ cho Kết nối dịch vụ riêng tư (Hoạt động của nhà sản xuất)
Giờ đây, khi đã hoàn tất các bước thiết lập ban đầu, chúng ta sẽ bắt đầu chuẩn bị dịch vụ VPC-ngang hàng để di chuyển sang Private Service Connect. Trong phần này, chúng ta sẽ thực hiện các thay đổi đối với production-vpc bằng cách định cấu hình dịch vụ để hiển thị thông qua một Tệp đính kèm dịch vụ. Chúng ta sẽ cần tạo một mạng con mới và quy tắc chuyển tiếp mới trong mạng con đó để có thể di chuyển mạng con hiện tại sang mạng con-vpc của người dùng nhằm giữ nguyên địa chỉ IP hiện tại của dịch vụ.
Tạo mạng con để lưu trữ IP quy tắc chuyển tiếp mới của trình cân bằng tải.
Của 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.
Của 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 mới cho trình cân bằng tả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à tính năng kiểm tra tình trạng mà chúng ta đã định cấu hình trước đó.
Của 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
Mạng con psc-nat-subnet sẽ được liên kết với Tệp đính kèm dịch vụ PSC nhằm mục đích Dịch địa chỉ mạng. Đối với các trường hợp sử dụng cho phiên bản chính thức, mạng con này cần phải có kích thước thích hợp để hỗ trợ số lượng điểm cuối được đính kèm. Xem tài liệu về định kích thước mạng con PSC NAT để biết thêm thông tin.
Của 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 quy tắc tường lửa bổ sung vào Chính sách tường lửa của mạng để cho phép lưu lượng truy cập từ psc-nat-subnet. Khi truy cập dịch vụ thông qua PSC, mạng psc-nat-subnet là nơi bắt nguồn lưu lượng truy cập.
Của 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 tệp đính kèm dịch vụ để định cấu hình điểm cuối PSC trong phần tiếp theo.
Của 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
Của Cloud Shell
gcloud compute service-attachments describe producer-sa --region=$region
Kết quả đầu ra 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 Điểm cuối PSC của người tiêu dùng "kiểm thử" với Dịch vụ nhà sản xuất và Kiểm thử (Hoạt động của người tiêu dùng)
Kiến trúc hiện đang ở Trạng thái 2.
Tại thời điểm này, dịch vụ nhà sản xuất hiện tại được hiển thị qua tính năng Kết nối ngang hàng VPC vẫn đang hoạt động và hoạt động bình thường trong môi trường 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 Tệp đính kèm dịch vụ bị tiết lộ đang hoạt động đúng cách trước khi bắt đầu thời gian ngừng hoạt động để di chuyển mạng con Kết nối ngang hàng VPC hiện tại sang VPC của người dùng. Kết nối ở trạng thái cuối của chúng ta 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 của dịch vụ dựa trên kết nối ngang hàng VPC.
Tạo điểm cuối PSC
Của Cloud Shell
gcloud compute addresses create test-psc-endpoint-ip \ --region=$region \ --subnet=consumer-vm-subnet \ --addresses 10.0.1.3
Dịch vụ mục tiêu bên dưới sẽ là URI đính kèm dịch vụ mà bạn đã ghi chú trong bước trước.
Của 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ử"
Của Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Từ người tiêu dùng – khách hàng
curl 10.0.1.3
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ người tiêu dùng – khách hàng
exit
13. Di chuyển mạng con của quy tắc chuyển tiếp cho nhà sản xuất hiện tại
Việc thực hiện các bước này sẽ khiến dịch vụ Nhà cung cấp kết nối ngang hàng của VPC đang hoạt động ngừng hoạt động. Bây giờ, chúng ta sẽ di chuyển mạng con của quy tắc chuyển tiếp từ production-vpc sang Consumer-vpc bằng cách sử dụng internal Ranges API. Thao tác này sẽ khoá không cho sử dụng mạng con trong khoảng thời gian tạm thời khi chúng ta xoá mạng con trong production-vpc và chỉ chỉ định mạng con đó 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ó (nhà sản xuất-fr-subnet, 192.168.0.0/28) và chỉ định tên mạng con mục tiêu trong mạng con người tiêu dùng-vpc (consumer-psc-subnet). Chúng tôi sẽ tạo một mạng con mới trong Consumer-vpc với tên này trong vài bước.
Đặt trước production-fr-subnet để di chuyển
Hoạt động của nhà sản xuất
Của 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 mô tả trên dải ô nội bộ 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
Của Cloud Shell
gcloud network-connectivity internal-ranges describe producer-peering-internal-range
Kết quả đầu ra 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 dựa trên kết nối ngang hàng và Mạng con VPC
Hoạt động của nhà sản xuất
Của 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 máy chủ-vpc của người dùng bằng cách tạo một mạng con mới sử dụng dải ô nội bộ 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 tôi đã nhắm mục tiêu trước đó (consumer-psc-subnet). Mục đích cụ thể của PEER_MIGRATION 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 dành riêng và các điểm cuối PSC.
Hoạt động của người tiêu dùng
Của 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 cuối (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 đang ngừng hoạt động. Mạng con mà chúng ta vừa tạo vẫn bị khoá và chỉ có thể được sử dụng cho mục đích di chuyển cụ thể. Bạn có thể kiểm tra bằng cách tạo một máy ảo trong mạng con này. Không tạo được máy ảo.
Của 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 tôi chỉ có thể sử dụng mạng con này để tạo điểm cuối PSC. Xin lưu ý rằng địa chỉ IP mà chúng ta 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.
Của 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 tệp đính kèm dịch vụ mà bạn đã ghi chú trước đó và cũng dùng để tạo Điểm cuối PSC "kiểm thử".
Của 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 của trạng thái cuối (Hoạt động của người tiêu dùng)
Tại thời điểm này, bạn đang ở kiến trúc Trạng thái 3.
Của Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Từ máy ảo cho khách hàng – người tiêu dùng
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ máy ảo cho khách hàng – người tiêu dùng
exit
Hiện tại, 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ó. Không cần thực hiện thay đổi nào đối với ứng dụng phía người tiêu dùng. Các ứng dụng chỉ có thể tiếp tục hoạt động đối với dịch vụ đã được di chuyển.
16. Dọn dẹp quá trình di chuyển
Để hoàn tất quá trình di chuyển, chúng tôi cần thực hiện một vài bước dọn dẹp. Chúng tôi phải xoá và mở khoá các tài nguyên.
Khai thác mạng con Phạm vi nội bộ
Thao tác này sẽ mở khoá mạng con được 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
Của Cloud Shell
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
Hoạt động của người tiêu dùng
Của 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ả đầu ra 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á các ứng dụng ngang hàng VPC
Hoạt động của nhà sản xuất
Của Cloud Shell
gcloud compute networks peerings delete producer-vpc-peering \ --network=producer-vpc
Hoạt động của người tiêu dùng
Của Cloud Shell
gcloud compute networks peerings delete consumer-vpc-peering \ --network=consumer-vpc
Xoá Điểm cuối PSC "kiểm thử"
Hoạt động của người tiêu dùng
Của Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. Thử nghiệm cuối cùng sau khi di chuyển xong (Hoạt động của người tiêu dùng)
Tại thời điểm này, kiến trúc Trạng thái 4 (trạng thái cuối cùng) đã đạt được.
Kiểm tra lại kết nối Điểm cuối PSC để đảm bảo không quan sát thấy ảnh hưởng bất lợi nào trong quá trình di chuyển.
Của Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
Từ máy ảo cho khách hàng – người tiêu dùng
curl service.example.com
Kết quả đầu ra dự kiến
I am a Producer Service.
Từ máy ảo cho khách hàng – người tiêu dùng
exit
THÀNH CÔNG!
18. Các bước dọn dẹp
Của 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ụ 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 API Phạm vi nội bộ để di chuyển mạng con qua tính năng Kết nối ngang hàng VPC nhằm di chuyển dịch vụ Kết nối ngang hàng VPC sang PSC.
- Tìm hiểu thời điểm cần phải ngừng hoạt động để di chuyển dịch vụ
- Các bước dọn dẹp quá trình di chuyển