Kết nối dịch vụ riêng tư: Di chuyển kết nối VPC ngang hàng sang kết nối dịch vụ riêng tư

Thông tin về lớp học lập trình này
schedule74 phút
subjectLần cập nhật gần đây nhất: 28 tháng 4, 2025
account_circleTác giả: Lorin Price

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.

7dbf27cf215f9703.pngs

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.

7f64427c0e59d417.pngS

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.

98c324c59c1fbf68.pngs

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.

a64ab7b69132c722.png

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

  1. Đă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.

fbef9caa1602edd0.png

a99b7ace416376c4.png

5e3ff691252acf41.png

  • 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.
  1. 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:

55efc1aaa7a4d3ad.png

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:

7ffe5cbb04455448.png

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