1. مقدمه
VPC Peering یک روش رایج برای تولیدکنندگان برای ارائه خدمات مصرفی به کاربران خود است. با این حال، با استفاده از همتاسازی VPC، پیچیدگیهای مسیریابی زیادی مانند همتاسازی VPC غیر گذرا، مصرف آدرس IP زیاد، و قرار گرفتن بیش از حد منابع در یک VPC همتا، به وجود میآید.
Private Service Connect (PSC) یک روش اتصال است که به تولیدکنندگان اجازه میدهد تا یک سرویس را در یک نقطه پایانی واحدی که مصرفکننده در یک VPC حجم کاری ارائه میکند، در معرض دید قرار دهند. این امر بسیاری از مشکلاتی که کاربران با همتاسازی VPC با آن مواجه هستند را از بین می برد. در حالی که بسیاری از سرویسهای جدید با PSC ایجاد میشوند، هنوز سرویسهای زیادی به عنوان خدمات VPC Peering وجود دارند.
Google Cloud از معرفی یک مسیر مهاجرت برای سرویسهایی که از طریق VPC Peering ایجاد کردهاید برای انتقال به معماری مبتنی بر PSC هیجانزده است. با استفاده از این روش مهاجرت، آدرس IP سرویس تولیدکننده که از طریق همتاسازی VPC در معرض دید قرار میگیرد، تا معماری مبتنی بر PSC حفظ میشود، بنابراین حداقل تغییرات مورد نیاز برای مصرفکننده وجود دارد. با این کد لبه همراه باشید تا مراحل فنی انجام این مهاجرت را بیاموزید.
توجه: این مسیر انتقال فقط برای سرویسهایی است که تولیدکننده و مصرفکننده در یک سازمان Google Cloud وجود دارند. برای هر سرویس Google Cloud یا سرویسهای شخص ثالثی که از همتاسازی VPC استفاده میکنند، از روش مهاجرت مشابهی استفاده میکنند، اما برای خود سرویس سفارشی میشود. لطفاً برای پرس و جو در مورد مسیر مهاجرت برای این نوع خدمات با طرف های مناسب تماس بگیرید.
چیزی که یاد خواهید گرفت
- نحوه راه اندازی یک سرویس مبتنی بر همتاسازی VPC
- نحوه راه اندازی یک سرویس مبتنی بر PSC
- استفاده از Internal-Ranges API برای انجام انتقال زیر شبکه از طریق VPC Peering برای دستیابی به انتقال VPC Peering به سرویس PSC.
- درک اینکه چه زمانی برای انتقال سرویس باید زمان خرابی رخ دهد
- مراحل پاکسازی مهاجرت
آنچه شما نیاز دارید
- پروژه Google Cloud با مجوزهای مالک
2. توپولوژی Codelab
برای سادگی، این Codelab تمام منابع را در یک پروژه متمرکز می کند. در Codelab ذکر خواهد شد که در صورت حضور تولیدکنندگان و مصرف کنندگان در پروژه های مختلف، چه اقداماتی در سمت تولیدکننده و چه اقداماتی در سمت مصرف کننده باید انجام شود.
این کد لبه دارای 4 حالت خواهد بود.
حالت 1 حالت VPC Peering است. دو VPC وجود خواهد داشت، consumer-vpc و producer-vpc که با هم همتا می شوند. Producer-vpc یک سرویس ساده آپاچی خواهد داشت که از طریق یک Network Passthrough Load Balancer داخلی در معرض دید قرار می گیرد. Consumer-vpc برای مقاصد آزمایشی یک مصرف کننده-vm واحد خواهد داشت.
حالت 2 حالت تست PSC است. ما یک قانون بازارسال جدید ایجاد خواهیم کرد و از این قانون برای ارتباط با پیوست سرویس خود استفاده خواهیم کرد. سپس یک نقطه پایانی آزمایشی PSC در consumer-vpc ایجاد میکنیم تا آزمایش کنیم که سرویس PSC ما مطابق انتظار کار میکند.
ایالت 3 وضعیت مهاجرت است. ما محدوده زیرشبکه را در producer-vpc که در آن سرویس مبتنی بر VPC Peering برای استفاده در consumer-vpc مستقر شده است، رزرو می کنیم. سپس یک نقطه پایانی PSC جدید با همان آدرس IP به عنوان قانون ارسال از قبل موجود در producer-vpc ایجاد می کنیم.
حالت 4 آخرین وضعیت PSC است. ما نقطه پایانی آزمایشی PSC را پاکسازی می کنیم و همتاسازی VPC بین consumer-vpc و producer-vpc را حذف می کنیم.
3. راه اندازی و الزامات
تنظیم محیط خود به خود
- به Google Cloud Console وارد شوید و یک پروژه جدید ایجاد کنید یا از یک موجود استفاده مجدد کنید. اگر قبلاً یک حساب Gmail یا Google Workspace ندارید، باید یک حساب ایجاد کنید .
- نام پروژه نام نمایشی برای شرکت کنندگان این پروژه است. این یک رشته کاراکتری است که توسط API های Google استفاده نمی شود. همیشه می توانید آن را به روز کنید.
- شناسه پروژه در تمام پروژههای Google Cloud منحصربهفرد است و تغییرناپذیر است (پس از تنظیم نمیتوان آن را تغییر داد). Cloud Console به طور خودکار یک رشته منحصر به فرد تولید می کند. معمولاً برای شما مهم نیست که چیست. در اکثر کدها، باید شناسه پروژه خود را ارجاع دهید (معمولاً با نام
PROJECT_ID
شناخته می شود). اگر شناسه تولید شده را دوست ندارید، ممکن است یک شناسه تصادفی دیگر ایجاد کنید. از طرف دیگر، میتوانید خودتان را امتحان کنید، و ببینید آیا در دسترس است یا خیر. پس از این مرحله نمی توان آن را تغییر داد و در طول مدت پروژه باقی می ماند. - برای اطلاع شما، یک مقدار سوم وجود دارد، یک شماره پروژه ، که برخی از API ها از آن استفاده می کنند. در مورد هر سه این مقادیر در مستندات بیشتر بیاموزید.
- در مرحله بعد، برای استفاده از منابع Cloud/APIها باید صورتحساب را در کنسول Cloud فعال کنید . اجرا کردن از طریق این کد لبه هزینه زیادی نخواهد داشت. برای خاموش کردن منابع برای جلوگیری از تحمیل صورتحساب فراتر از این آموزش، میتوانید منابعی را که ایجاد کردهاید حذف کنید یا پروژه را حذف کنید. کاربران جدید Google Cloud واجد شرایط برنامه آزمایشی رایگان 300 دلاری هستند.
Cloud Shell را راه اندازی کنید
در حالی که Google Cloud را می توان از راه دور از لپ تاپ شما کار کرد، در این کد لبه از Google Cloud Shell استفاده خواهید کرد، یک محیط خط فرمان که در Cloud اجرا می شود.
از Google Cloud Console ، روی نماد Cloud Shell در نوار ابزار بالا سمت راست کلیک کنید:
تهیه و اتصال به محیط فقط چند لحظه طول می کشد. وقتی تمام شد، باید چیزی شبیه به این را ببینید:
این ماشین مجازی با تمام ابزارهای توسعه که شما نیاز دارید بارگذاری شده است. این یک فهرست اصلی 5 گیگابایتی دائمی را ارائه می دهد و در Google Cloud اجرا می شود و عملکرد و احراز هویت شبکه را تا حد زیادی افزایش می دهد. تمام کارهای شما در این کد لبه را می توان در یک مرورگر انجام داد. شما نیازی به نصب چیزی ندارید.
4. قبل از شروع
API ها را فعال کنید
در داخل Cloud Shell، مطمئن شوید که پروژه شما تنظیم شده است و متغیرها را پیکربندی کنید.
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
تمام خدمات لازم را فعال کنید
gcloud services enable compute.googleapis.com gcloud services enable networkconnectivity.googleapis.com gcloud services enable dns.googleapis.com
5. ایجاد شبکه VPC تولید کننده (فعالیت تولید کننده)
شبکه VPC
از Cloud Shell
gcloud compute networks create producer-vpc \ --subnet-mode=custom
ایجاد زیرشبکه
از 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
Producer Cloud Router و Cloud NAT را ایجاد کنید
از 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
خطمشی و قوانین فایروال شبکه تولیدکننده را ایجاد کنید
از 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
برای اینکه به IAP اجازه دهید به نمونه های VM شما متصل شود، یک قانون فایروال ایجاد کنید که:
- برای تمام نمونه های VM که می خواهید با استفاده از IAP در دسترس باشند، اعمال می شود.
- به ترافیک ورودی از محدوده IP 35.235.240.0/20 اجازه می دهد. این محدوده شامل تمام آدرس های IP است که IAP برای ارسال TCP استفاده می کند.
از 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
ما همچنین دو قانون دیگر ایجاد خواهیم کرد که امکان بررسی سلامت Load Balancer را برای سرویس و همچنین اجازه ترافیک شبکه از VMهایی را که از consumer-vpc متصل می شوند، ایجاد خواهیم کرد.
از 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. راه اندازی سرویس تولید کننده (فعالیت تولید کننده)
ما یک سرویس تولید کننده با یک ماشین مجازی که یک وب سرور آپاچی را اجرا می کند ایجاد خواهیم کرد که به یک گروه نمونه مدیریت نشده اضافه می شود که با یک بار متعادل کننده گذر شبکه داخلی منطقه ای اضافه می شود.
VM و Unmanaged Instance Group را ایجاد کنید
از 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'
از 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
ایجاد تعادل بار شبکه داخلی منطقه ای
از 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. ایجاد شبکه VPC مصرف کننده (فعالیت مصرف کننده)
شبکه VPC
از Cloud Shell
gcloud compute networks create consumer-vpc \ --subnet-mode=custom
ایجاد زیر شبکه
از Cloud Shell
gcloud compute networks subnets create consumer-vm-subnet \ --network=consumer-vpc \ --range=10.0.1.0/28 \ --region=$region
خط مشی فایروال شبکه مصرف کننده و قوانین فایروال را ایجاد کنید
ما خط مشی فایروال شبکه دیگری را برای مصرف کننده-vpc ایجاد خواهیم کرد.
از 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. VPC Peer ایجاد کنید
فعالیت تولید کننده
از Cloud Shell
gcloud compute networks peerings create producer-vpc-peering \ --network=producer-vpc \ --peer-project=$projectid \ --peer-network=consumer-vpc
فعالیت مصرف کننده
از Cloud Shell
gcloud compute networks peerings create consumer-vpc-peering \ --network=consumer-vpc \ --peer-project=$projectid \ --peer-network=producer-vpc
با بررسی لیست مسیرها در consumer-vpc تأیید کنید که همتاسازی برقرار است. شما باید مسیرهایی را برای consumer-vpc و producer-vpc ببینید.
فعالیت مصرف کننده
از Cloud Shell
gcloud compute routes list --filter="network=consumer-vpc"
خروجی مورد انتظار
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. ایجاد منطقه DNS (فعالیت مصرف کننده)
ما یک Cloud DNS Private Zone برای فراخوانی سرویس تولیدکننده از طریق DNS به جای یک آدرس IP خصوصی ایجاد خواهیم کرد تا نمونه واقعی تر را به نمایش بگذاریم.
یک رکورد A به domain pointing service.example.com به آدرس IP Network Passthrough Load Balancer Forwarding Rule که قبلا ایجاد کردیم اضافه می کنیم. آن آدرس IP قانون بازارسال 192.168.0.2 است.
از 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. آزمایش سرویس تولیدکننده از طریق VPC Peer (فعالیت مصرف کننده)
در این مرحله، معماری State 1 ایجاد شده است.
VM مصرف کننده-مشتری ایجاد کنید
از Cloud Shell
gcloud compute instances create consumer-client \ --zone=$zone \ --subnet=consumer-vm-subnet \ --no-address
تست اتصال
از Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
از VM مشتری-مشتری
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از VM مشتری-مشتری
exit
11. آماده کردن سرویس برای Private Service Connect (فعالیت تولید کننده)
اکنون که تمام مراحل اولیه راه اندازی را به پایان رساندیم، اکنون شروع به آماده سازی سرویس VPC-Peered برای انتقال به Private Service Connect می کنیم. در این بخش، با پیکربندی سرویس به گونه ای که از طریق یک Service Attachment در معرض نمایش قرار گیرد، تغییراتی در producer-vpc ایجاد می کنیم. ما باید یک زیرشبکه جدید و یک قانون حمل و نقل جدید در آن زیر شبکه ایجاد کنیم تا بتوانیم زیرشبکه موجود را به consumer-vpc منتقل کنیم تا آدرس IP موجود سرویس دست نخورده بماند.
زیرشبکه ای را ایجاد کنید که در آن IP قانون حمل و نقل بار متعادل کننده جدید میزبانی می شود.
از Cloud Shell
gcloud compute networks subnets create producer-psc-fr-subnet \ --network=producer-vpc \ --range=10.0.2.64/28 \ --region=$region
آدرس IP داخلی قانون حمل و نقل بار متعادل کننده را ایجاد کنید.
از Cloud Shell
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
قانون حمل و نقل بار متعادل کننده جدید را ایجاد کنید. این قانون برای استفاده از همان سرویس backend و بررسی های سلامتی پیکربندی شده است که قبلاً پیکربندی کردیم.
از 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 به منظور ترجمه آدرس شبکه با پیوست سرویس PSC مرتبط خواهد شد. برای موارد استفاده تولید، این زیرشبکه باید اندازه مناسبی داشته باشد تا از تعداد نقاط پایانی متصل شده پشتیبانی کند. برای اطلاعات بیشتر به اسناد اندازهگیری زیرشبکه PSC NAT مراجعه کنید.
از 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
ما باید یک قانون فایروال اضافی را به خط مشی فایروال شبکه اضافه کنیم تا اکنون ترافیک از psc-nat-subnet مجاز شود. هنگام دسترسی به سرویس از طریق PSC، psc-nat-subnet جایی است که منبع ترافیک است.
از 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
پیوست سرویس را ایجاد کنید و URI پیوست سرویس را برای پیکربندی نقطه پایانی PSC در بخش بعدی یادداشت کنید.
از 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
از Cloud Shell
gcloud compute service-attachments describe producer-sa --region=$region
خروجی نمونه
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. «آزمایش» نقطه پایانی PSC مصرف کننده را به خدمات تولیدکننده و آزمایش (فعالیت مصرف کننده) وصل کنید.
معماری اکنون در حالت 2 است.
در این مرحله، سرویس تولیدکننده موجود که از طریق VPC Peering در معرض دید قرار میگیرد، هنوز در سناریوی تولید به درستی فعال است و کار میکند. ما یک نقطه پایانی PSC "آزمایشی" ایجاد خواهیم کرد تا اطمینان حاصل کنیم که پیوست سرویس در معرض به درستی کار می کند قبل از اینکه دوره قطعی را برای انتقال زیرشبکه همتا VPC فعلی به VPC مصرف کننده آغاز کنیم. اتصال حالت پایانی ما یک نقطه پایانی PSC با همان آدرس IP قانون انتقال فعلی برای سرویس مبتنی بر VPC Peering خواهد بود.
نقطه پایانی PSC را ایجاد کنید
از Cloud Shell
gcloud compute addresses create test-psc-endpoint-ip \ --region=$region \ --subnet=consumer-vm-subnet \ --addresses 10.0.1.3
سرویس هدف زیر، URI پیوست سرویس است که در مرحله آخر به آن اشاره کردید.
از 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
نقطه پایانی PSC "تست" را آزمایش کنید
از Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
از مصرف کننده-مشتری
curl 10.0.1.3
خروجی مورد انتظار
I am a Producer Service.
از مصرف کننده-مشتری
exit
13. زیرشبکه قانون حمل و نقل تولیدکننده موجود را مهاجرت کنید
انجام این مراحل باعث قطع شدن سرویس تولیدکننده مبتنی بر VPC Peering زنده می شود. اکنون زیرشبکه قانون حمل و نقل را با استفاده از Internal Ranges API از producer-vpc به customer-vpc منتقل می کنیم. این کار باعث میشود که زیرشبکه در دوره میانی زمانی که ما زیرشبکه را در producer-vpc حذف میکنیم و آن را فقط برای اهداف مهاجرت برای ایجاد در consumer-vpc تعیین میکنیم، استفاده نشود.
API محدوده داخلی مستلزم این است که زیرشبکه قانون ارسال همتا VPC موجود (producer-fr-subnet, 192.168.0.0/28) را رزرو کنید و یک نام زیرشبکه هدف در consumer-vpc (consumer-psc-subnet) تعیین کنید. ما در چند مرحله یک زیر شبکه جدید با این نام در consumer-vpc ایجاد می کنیم.
برای مهاجرت، زیرشبکه تولیدکننده fr را رزرو کنید
فعالیت تولید کننده
از 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
شرحی را در محدوده داخلی که برای مشاهده وضعیت زیرشبکه ایجاد کردیم، اجرا کنید.
فعالیت تولید کننده
از Cloud Shell
gcloud network-connectivity internal-ranges describe producer-peering-internal-range
خروجی نمونه
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
قانون ارسال و زیرشبکه مبتنی بر VPC Peering را حذف کنید
فعالیت تولید کننده
از 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
Subnet را مهاجرت کنید
با ایجاد یک زیرشبکه جدید با استفاده از محدوده داخلی که قبلا ایجاد کردیم، زیرشبکه را به مصرف کننده-vpc منتقل کنید. نام این زیرشبکه باید همان نامی باشد که قبلاً هدف آن قرار گرفتیم (consumer-psc-subnet). هدف خاص PEER_MIGRATION اشاره می کند که زیرشبکه برای انتقال زیرشبکه بین VPC های همتا رزرو شده است. با این هدف، این زیرشبکه فقط میتواند حاوی آدرسهای IP ثابت و نقاط پایانی PSC باشد.
فعالیت مصرف کننده
از 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. نقطه پایانی PSC State State (فعالیت مصرف کننده) را ایجاد کنید
در این مرحله، سرویس Producer هنوز قطع است. زیرشبکهای که به تازگی ایجاد کردیم هنوز قفل است و فقط برای هدف خاصی از مهاجرت قابل استفاده است. شما می توانید این را با تلاش برای ایجاد یک VM در این زیر شبکه آزمایش کنید. ایجاد VM با شکست مواجه خواهد شد.
از Cloud Shell
gcloud compute instances create test-consumer-vm \ --zone=$zone \ --subnet=consumer-psc-subnet \ --no-address
خروجی مورد انتظار
ERROR: (gcloud.compute.instances.create) Could not fetch resource: - Subnetwork must have purpose=PRIVATE.
ما فقط می توانیم از این زیر شبکه برای ایجاد یک نقطه پایانی PSC استفاده کنیم. توجه داشته باشید که آدرس IP که ایجاد می کنیم از همان IP قانون ارسال استفاده می کند که سرویس تولید کننده ما از طریق VPC Peer استفاده می کند.
از Cloud Shell
gcloud compute addresses create psc-endpoint-ip \ --region=$region \ --subnet=consumer-psc-subnet \ --addresses 192.168.0.2
یک بار دیگر، باید از همان URI پیوست سرویس استفاده کنید که قبلاً ذکر کردید و همچنین برای ایجاد نقطه پایانی PSC "تست" استفاده شد.
از 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. نقطه پایانی PSC حالت پایانی (فعالیت مصرف کننده) را آزمایش کنید
در این مرحله، شما در معماری State 3 هستید.
از Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
از VM مشتری-مشتری
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از VM مشتری-مشتری
exit
در این مرحله قطعی به پایان رسیده است و سرویس دوباره فعال است. توجه داشته باشید که ما مجبور نیستیم هیچ تغییری در DNS موجود ایجاد کنیم. نیازی به تغییر مشتری سمت مصرف کننده نیست. برنامهها فقط میتوانند عملیات را به سرویس منتقل شده از سر بگیرند.
16. پاکسازی مهاجرت
برای نهایی کردن انتقال، چند مرحله پاکسازی وجود دارد که باید انجام دهیم. ما باید منابع را حذف و قفل کنیم.
زیرشبکه Internal Range را باز کنید
با این کار، زیرشبکه انتقال یافته باز می شود تا هدف آن از "PEER_MIGRATION" به "PRIVATE" تغییر یابد.
فعالیت تولید کننده
از Cloud Shell
gcloud network-connectivity internal-ranges delete producer-peering-internal-range
فعالیت مصرف کننده
از Cloud Shell
gcloud compute networks subnets update consumer-psc-subnet \ --region=$region \ --purpose=PRIVATE gcloud compute networks subnets describe consumer-psc-subnet --region=$region
خروجی نمونه
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
VPC Peers را حذف کنید
فعالیت تولید کننده
از Cloud Shell
gcloud compute networks peerings delete producer-vpc-peering \ --network=producer-vpc
فعالیت مصرف کننده
از Cloud Shell
gcloud compute networks peerings delete consumer-vpc-peering \ --network=consumer-vpc
نقطه پایانی PSC "تست" را حذف کنید
مصرف کننده-فعالیت
از Cloud Shell
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. تست نهایی پس از پاکسازی مهاجرت (فعالیت مصرف کننده)
در این مرحله، معماری State 4 (وضعیت نهایی) به دست آمده است.
اتصال PSC Endpoint را دوباره تست کنید تا مطمئن شوید که هیچ اثر نامطلوبی از پاکسازی مهاجرت مشاهده نمی شود.
از Cloud Shell
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
از VM مشتری-مشتری
curl service.example.com
خروجی مورد انتظار
I am a Producer Service.
از VM مشتری-مشتری
exit
موفقیت!
18. مراحل پاکسازی
از 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. تبریک می گویم!
برای تکمیل کد لبه تبریک می گویم.
آنچه را پوشش داده ایم
- نحوه راه اندازی یک سرویس مبتنی بر همتاسازی VPC
- نحوه راه اندازی یک سرویس مبتنی بر PSC
- استفاده از Internal-Ranges API برای انجام انتقال زیر شبکه از طریق VPC Peering برای دستیابی به انتقال VPC Peering به سرویس PSC.
- درک اینکه چه زمانی برای انتقال سرویس باید زمان خرابی رخ دهد
- مراحل پاکسازی مهاجرت