1. परिचय
VPC पीयरिंग, एक ऐसा आम तरीका है जिसका इस्तेमाल करके निर्माता अपने उपयोगकर्ताओं को सेवा इस्तेमाल करने की सुविधा देते हैं. हालांकि, VPC पीयरिंग का इस्तेमाल करने पर, अलग-अलग रूटिंग के लिए कई मुश्किलें पैदा होती हैं. जैसे, नॉन-ट्रांज़िव VPC पीयरिंग, आईपी पते का ज़्यादा इस्तेमाल, और पीयर किए गए VPC में संसाधनों का ज़्यादा एक्सपोज़र.
Private Service Connect (PSC) एक कनेक्टिविटी तरीका है. इसकी मदद से, प्रोड्यूसर एक ही एंडपॉइंट पर सेवा दिखा सकते हैं, जिसे वर्कलोड VPC में उपभोक्ता के लिए प्रावधान किया जाता है. इससे उन समस्याओं को दूर किया जा सकता है जिनका उपयोगकर्ताओं को VPC पीयरिंग के दौरान सामना करना पड़ता है. पीएससी की मदद से कई नई सेवाएं बनाई जा रही हैं, लेकिन VPC पीयरिंग सेवाओं के तौर पर अब भी कई सेवाएं मौजूद हैं.
Google Cloud को उन सेवाओं के लिए एक माइग्रेशन पाथ पेश करते हुए खुशी हो रही है जिन्हें आपने VPC पीयरिंग की मदद से बनाया है, ताकि पीएससी पर आधारित आर्किटेक्चर का इस्तेमाल किया जा सके. माइग्रेशन के इस तरीके का इस्तेमाल करके, VPC पीयरिंग की मदद से दिखाए जाने वाले प्रोड्यूसर सेवा के आईपी पते को पीएससी पर आधारित आर्किटेक्चर में सुरक्षित रखा जाता है. इससे, उपभोक्ता को कम से कम बदलाव करने पड़ते हैं. इस माइग्रेशन को करने का तकनीकी तरीका जानने के लिए, इस कोडलैब के निर्देशों का पालन करें.
ध्यान दें: माइग्रेशन का यह पाथ सिर्फ़ उन सेवाओं के लिए है जहां निर्माता और उपभोक्ता एक ही Google Cloud संगठन में मौजूद हैं. VPC पीयरिंग का इस्तेमाल करने वाली, Google Cloud की किसी भी सेवा या तीसरे पक्ष की सेवाओं के लिए, डेटा को दूसरी जगह भेजने के लिए मिलते-जुलते तरीके का इस्तेमाल किया जाएगा. हालांकि, इसे सेवा के हिसाब से कस्टमाइज़ किया जाएगा. इस तरह की सेवाओं के लिए, माइग्रेशन पाथ के बारे में पूछताछ करने के लिए, कृपया सही पक्षों से संपर्क करें.
आपको इनके बारे में जानकारी मिलेगी
- VPC पीयरिंग पर आधारित सेवा को सेट अप करने का तरीका
- पब्लिक सर्विसेज़ कार्ड (पीएससी) वाली सेवा को सेट अप करने का तरीका
- VPC पीयरिंग की मदद से सबनेट माइग्रेशन करने के लिए, Internal-Ranges API का इस्तेमाल करना, ताकि VPC पीयरिंग को पीएससी सेवा पर माइग्रेट किया जा सके.
- सेवा माइग्रेशन के लिए डाउनटाइम की ज़रूरत को समझना
- माइग्रेशन से जुड़ी समस्या ठीक करने के चरण
आपको इन चीज़ों की ज़रूरत होगी
- मालिक वाली अनुमतियों के साथ Google Cloud प्रोजेक्ट
2. कोडलैब टोपोलॉजी
आसानी से इस्तेमाल करने के लिए, यह कोडलैब सभी संसाधनों को एक ही प्रोजेक्ट में इकट्ठा करता है. कोडलैब में यह नोट किया जाएगा कि प्रोड्यूसर की ओर से कौनसी कार्रवाइयां की जानी चाहिए. साथ ही, यह भी बताया जाएगा कि अगर प्रोड्यूसर और उपभोक्ता अलग-अलग प्रोजेक्ट में हैं, तो उपभोक्ता की ओर से क्या-क्या कार्रवाइयां की जानी चाहिए.
इस कोडलैब में चार स्थितियां होंगी.
पहली स्थिति, VPC पीयरिंग की स्थिति है. इसमें दो VPC, उपभोक्ता-vpc और प्रोड्यूसर-vpc को एक साथ पीयर किया जाएगा. प्रोड्यूसर-vpc में एक आसान Apache सेवा होगी, जिसे एक अंदरूनी नेटवर्क पासथ्रू लोड बैलेंसर की मदद से दिखाया जाएगा. जांच के लिए, उपभोक्ता-वीपीसी में एक ही उपभोक्ता-वीएम होगा.
राज्य 2, PSC टेस्ट की स्थिति है. हम एक नया फ़ॉरवर्ड करने का नियम बनाएंगे और इस नियम का इस्तेमाल अपने सेवा अटैचमेंट से जोड़ने के लिए करेंगे. इसके बाद, हम कंज़्यूमर-वीपीसी में एक जांच वाला पीएससी एंडपॉइंट बनाएंगे, ताकि यह जांच की जा सके कि हमारी PSC सेवा उम्मीद के मुताबिक काम कर रही है.
तीसरी स्थिति, माइग्रेशन की स्थिति है. हम प्रोड्यूसर-वीपीसी में उस सबनेट रेंज को सुरक्षित रखेंगे जहां VPC पीयरिंग पर आधारित सेवा को उपभोक्ता-वीपीसी में इस्तेमाल करने के लिए इस्तेमाल किया गया था. इसके बाद, हम उसी आईपी पते के साथ नया PSC एंडपॉइंट बनाएंगे जो प्रोड्यूसर-vpc में पहले से मौजूद फ़ॉरवर्ड करने के नियम के मुताबिक है.
राज्य 4, PSC की आखिरी स्थिति है. हम टेस्ट पीएससी एंडपॉइंट को साफ़ करेंगे. साथ ही, Consumer-vpc और प्रोड्यूसर-vpc के बीच VPC पीयरिंग को मिटा देंगे.
3. सेटअप और ज़रूरी शर्तें
अपने हिसाब से एनवायरमेंट सेट अप करना
- Google Cloud Console में साइन इन करें और नया प्रोजेक्ट बनाएं या किसी मौजूदा प्रोजेक्ट का फिर से इस्तेमाल करें. अगर आपके पास पहले से कोई Gmail या Google Workspace खाता नहीं है, तो आपको एक खाता बनाना होगा.
- प्रोजेक्ट का नाम, इस प्रोजेक्ट में हिस्सा लेने वाले लोगों के लिए डिसप्ले नेम होता है. यह एक वर्ण स्ट्रिंग है, जिसका इस्तेमाल Google API नहीं करते. इसे कभी भी अपडेट किया जा सकता है.
- प्रोजेक्ट आईडी, Google Cloud के सभी प्रोजेक्ट के लिए यूनीक होता है. साथ ही, इसे सेट करने के बाद बदला नहीं जा सकता. Cloud Console, अपने-आप एक यूनीक स्ट्रिंग जनरेट करता है. आम तौर पर, आपको यह जानने की ज़रूरत नहीं होती कि यह स्ट्रिंग क्या है. ज़्यादातर कोडलैब में, आपको अपने प्रोजेक्ट आईडी का रेफ़रंस देना होगा. आम तौर पर, इसे
PROJECT_ID
के तौर पर पहचाना जाता है. अगर आपको जनरेट किया गया आईडी पसंद नहीं आता है, तो कोई दूसरा आईडी जनरेट किया जा सकता है. इसके अलावा, आपके पास खुद का कोई दूसरा नाम चुनने का विकल्प भी है. इस चरण के बाद, इसे बदला नहीं जा सकता. यह प्रोजेक्ट के दौरान बना रहता है. - आपकी जानकारी के लिए बता दें कि तीसरी वैल्यू, प्रोजेक्ट नंबर होती है. इसका इस्तेमाल कुछ एपीआई करते हैं. इन तीनों वैल्यू के बारे में ज़्यादा जानने के लिए, दस्तावेज़ देखें.
- इसके बाद, आपको Cloud के संसाधनों/एपीआई का इस्तेमाल करने के लिए, Cloud Console में बिलिंग की सुविधा चालू करनी होगी. इस कोडलैब को चलाने के लिए, आपसे कोई शुल्क नहीं लिया जाएगा. इस ट्यूटोरियल के बाद बिलिंग से बचने के लिए, बनाए गए संसाधनों को बंद किया जा सकता है या प्रोजेक्ट को मिटाया जा सकता है. Google Cloud के नए उपयोगकर्ता, 300 डॉलर के मुफ़्त ट्रायल वाले कार्यक्रम में शामिल हो सकते हैं.
Cloud Shell शुरू करना
Google Cloud को आपके लैपटॉप से रिमोट तौर पर इस्तेमाल किया जा सकता है. हालांकि, इस कोडलैब में आपको Google Cloud Shell का इस्तेमाल करना होगा. यह Cloud में चलने वाला कमांड-लाइन एनवायरमेंट है.
Google Cloud Console में, सबसे ऊपर दाएं टूलबार में मौजूद Cloud Shell आइकॉन पर क्लिक करें:
एनवायरमेंट से कनेक्ट होने और उसे प्रोवाइड करने में सिर्फ़ कुछ मिनट लगेंगे. इसके पूरा होने पर, आपको कुछ ऐसा दिखेगा:
इस वर्चुअल मशीन में, डेवलपमेंट के लिए ज़रूरी सभी टूल लोड होते हैं. यह 5 जीबी की होम डायरेक्ट्री उपलब्ध कराता है. यह Google Cloud पर चलता है, जिससे नेटवर्क की परफ़ॉर्मेंस और पुष्टि करने की सुविधा बेहतर होती है. इस कोडलैब में, सारा काम ब्राउज़र में किया जा सकता है. आपको कुछ भी इंस्टॉल करने की ज़रूरत नहीं है.
4. शुरू करने से पहले
एपीआई चालू करें
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
प्रोड्यूसर क्लाउड राऊटर और क्लाउड एनएटी बनाना
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
आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का नियम बनाएं:
- यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
- आईपी रेंज 35.235.240.0/20 से, इन्ग्रेस डेटा ट्रैफ़िक की अनुमति देता है. इस रेंज में वे सभी आईपी पते शामिल होते हैं जिनका इस्तेमाल आईएपी, टीसीपी फ़ॉरवर्ड करने के लिए करता है.
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
हम सेवा के लिए, लोड बैलेंसर की परफ़ॉर्मेंस की जांच करने की अनुमति देने के साथ-साथ, उपभोक्ता-वीपीसी से कनेक्ट होने वाली वीएम से नेटवर्क ट्रैफ़िक की अनुमति देने के लिए दो और नियम भी बनाएंगे.
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. निर्माता सेवा सेट अप (प्रोड्यूसर गतिविधि)
हम Apache वेब सर्वर पर चलने वाली एक ही वीएम के साथ प्रोड्यूसर सेवा बनाएंगे. इसे किसी ऐसे अनमैनेज इंस्टेंस ग्रुप में जोड़ा जाएगा जिसके सामने रीजनल इंटरनल नेटवर्क पासथ्रू लोड बैलेंसर हो.
वीएम और मैनेज नहीं किया जा रहा इंस्टेंस ग्रुप बनाना
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 पीयर बनाएं
प्रोड्यूसर की गतिविधि
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 और प्रोड्यूसर-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. डीएनएस ज़ोन (कंज़्यूमर गतिविधि) बनाएं
हम ज़्यादा असली उदाहरण दिखाने के लिए, प्रोड्यूसर सेवा को निजी आईपी पते के बजाय डीएनएस के ज़रिए कॉल करने के लिए Cloud DNS Private Zone बनाएंगे.
हम पहले बनाए गए नेटवर्क पासथ्रू लोड बैलेंसर फ़ॉरवर्ड करने के नियम के आईपी पते के लिए, example.com डोमेन पॉइंटिंग service.example.com में एक रिकॉर्ड जोड़ देंगे. फ़ॉरवर्ड करने के नियम का आईपी पता 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 पीयर (कंज़्यूमर गतिविधि) पर प्रोड्यूसर सेवा की जांच करें
इस पॉइंट पर, स्टेट 1 आर्किटेक्चर बना दिया गया है.
उपभोक्ता-क्लाइंट वीएम बनाना
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
उपभोक्ता-क्लाइंट वीएम से
curl service.example.com
अनुमानित आउटपुट
I am a Producer Service.
उपभोक्ता-क्लाइंट वीएम से
exit
11. Private Service Connect (प्रोड्यूसर गतिविधि) के लिए सेवा तैयार करना
हमने सेट अप के सभी शुरुआती चरण पूरे कर लिए हैं. इसलिए, अब हम Private Service Connect पर माइग्रेट करने के लिए, VPC-पीयर वाली सेवा बनाना शुरू करेंगे. इस सेक्शन में, हम सेवा अटैचमेंट के ज़रिए सेवा को दिखाए जाने के लिए कॉन्फ़िगर करके प्रोड्यूसर-vpc में बदलाव करेंगे. हमें उस सबनेट में एक नया सबनेट और फ़ॉरवर्ड करने का नया नियम बनाना होगा. इससे हम मौजूदा सबनेट को उपभोक्ता-वीपीसी में माइग्रेट कर पाएंगे, ताकि सेवा के मौजूदा आईपी पते को बनाए रखा जा सके.
वह सबनेट बनाएं जहां लोड बैलेंसर फ़ॉरवर्ड करने के नियम का नया आईपी होस्ट किया जाएगा.
Cloud Shell से
gcloud compute networks subnets create producer-psc-fr-subnet \ --network=producer-vpc \ --range=10.0.2.64/28 \ --region=$region
लोड बैलेंसर फ़ॉरवर्ड करने के नियम का अंदरूनी आईपी पता बनाएं.
Cloud Shell से
gcloud compute addresses create producer-psc-ip \ --region $region \ --subnet producer-psc-fr-subnet \ --addresses 10.0.2.66
लोड बैलेंसर फ़ॉरवर्ड करने का नया नियम बनाएं. इस नियम को उन ही बैकएंड सेवा और स्वास्थ्य जांच का इस्तेमाल करने के लिए कॉन्फ़िगर किया गया है जिन्हें हमने पहले कॉन्फ़िगर किया था.
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
सेवा अटैचमेंट बनाएं और अगले सेक्शन में 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. "test" उपभोक्ता PSC एंडपॉइंट को प्रोड्यूसर सेवा और टेस्ट (कंज़्यूमर गतिविधि) से कनेक्ट करता है
आर्किटेक्चर अब स्थिति 2 में है.
इस समय, VPC पीयरिंग की मदद से दिखाई गई मौजूदा प्रोड्यूसर सेवा, अब भी लाइव है और प्रोडक्शन से जुड़ी स्थिति में ठीक से काम कर रही है. हम मौजूदा VPC पीयरिंग सबनेट को उपभोक्ता VPC पर माइग्रेट करने के लिए, कुछ समय के लिए उपलब्ध न होने की अवधि शुरू करने से पहले, यह पक्का करेंगे कि बिना अनुमति के सार्वजनिक किया गया सेवा अटैचमेंट ठीक से काम कर रहा है या नहीं, यह पक्का करने के लिए हम एक "टेस्ट" पीएससी एंडपॉइंट बनाएंगे. एंडपॉइंट पीयरिंग पर आधारित सेवा के लिए, फ़ॉरवर्ड करने के मौजूदा नियम के जैसा ही हमारी एंड स्टेट कनेक्टिविटी, पीएससी एंडपॉइंट होगी.
PSC एंडपॉइंट बनाएं
Cloud Shell से
gcloud compute addresses create test-psc-endpoint-ip \ --region=$region \ --subnet=consumer-vm-subnet \ --addresses 10.0.1.3
नीचे दी गई लक्षित सेवा सेवा अटैचमेंट यूआरआई होगी, जिसे आपने पिछले चरण में नोट किया था.
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 पीयरिंग पर आधारित प्रोड्यूसर सेवा के लिए कुछ समय के लिए उपलब्ध नहीं रहेगा. अब हम मैसेज को फ़ॉरवर्ड करने के नियम के सबनेट को प्रोड्यूसर-वीपीसी से उपभोक्ता-वीपीसी में माइग्रेट करेंगे. इसके लिए, हम इंटरनल रेंज एपीआई का इस्तेमाल करेंगे. जब हम प्रोड्यूसर-वीपीसी से सबनेट मिटा देते हैं, तो इस दौरान सबनेट का इस्तेमाल नहीं किया जा सकेगा. साथ ही, इसका इस्तेमाल सिर्फ़ उपभोक्ता-वीपीसी में सबनेट बनाने के लिए किया जाता है.
इंटरनल रेंज एपीआई के लिए ज़रूरी है कि आप मौजूदा VPC पीयरिंग फ़ॉरवर्डिंग नियम सबनेट (प्रोड्यूसर-fr-subnet, 192.168.0.0/28) को सुरक्षित रखें और उपभोक्ता-vpc (consumer-psc-subnet) में टारगेट सबनेट का नाम तय करें. हम कुछ ही चरणों में इस नाम से उपभोक्ता-vpc में एक नया सबनेट बना देते हैं.
माइग्रेशन के लिए प्रोड्यूसर-fr-subnet को रिज़र्व करें
प्रोड्यूसर की गतिविधि
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 पीयरिंग पर आधारित फ़ॉरवर्ड करने से जुड़े नियम और सबनेट को मिटाना
प्रोड्यूसर की गतिविधि
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
सबनेट को माइग्रेट करना
हमने पहले जो इंटरनल रेंज इस्तेमाल की है उसका इस्तेमाल करके नया सबनेट बनाकर, सबनेट को उपभोक्ता-वीपीसी पर माइग्रेट करें. इस सबनेट का नाम वही होना चाहिए जो हमने पहले टारगेट किया था (consumer-psc-subnet). PEER_MIGRATION के लिए खास मकसद यह बताता है कि सबनेट, पीयर किए गए VPC के बीच सबनेट माइग्रेशन के लिए रिज़र्व है. इस मकसद वाले फ़्लैग के साथ, इस सबनेट में सिर्फ़ रिज़र्व किए गए स्टैटिक आईपी पते और 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 एंडपॉइंट (कंज़्यूमर गतिविधि) बनाएं
इस समय, प्रोड्यूसर की सेवा बंद है. हमने अभी जो सबनेट बनाया है वह अब भी लॉक है. इसका इस्तेमाल सिर्फ़ माइग्रेशन के खास मकसद के लिए किया जा सकता है. इस सबनेट में वीएम बनाकर इसकी जांच की जा सकती है. वीएम नहीं बनाया जा सकेगा.
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 एंडपॉइंट बनाने के लिए कर सकते हैं. ध्यान दें कि हम जो आईपी पता बनाते हैं वह उसी आईपी का इस्तेमाल करता है जिसका इस्तेमाल, फ़ॉरवर्ड करने के लिए तय किया गया नियम हमारी निर्माता सेवा ने VPC पीयर के लिए किया था.
Cloud Shell से
gcloud compute addresses create psc-endpoint-ip \ --region=$region \ --subnet=consumer-psc-subnet \ --addresses 192.168.0.2
एक बार फिर से, आपको उसी सेवा अटैचमेंट यूआरआई का इस्तेमाल करना होगा जो आपने पहले नोट किया था. साथ ही, इसका इस्तेमाल "test" 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 एंडपॉइंट (कंज़्यूमर गतिविधि) की जांच करना
इस समय, आप स्टेट 3 आर्किटेक्चर पर हैं.
Cloud Shell से
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
उपभोक्ता-क्लाइंट वीएम से
curl service.example.com
अनुमानित आउटपुट
I am a Producer Service.
उपभोक्ता-क्लाइंट वीएम से
exit
इस समय, यह सेवा बंद हो गई है और सेवा फिर से चालू हो गई है. ध्यान दें कि हमें मौजूदा डीएनएस में कोई बदलाव नहीं करना था. उपभोक्ता की ओर से क्लाइंट को कोई बदलाव करने की ज़रूरत नहीं है. ऐप्लिकेशन बस माइग्रेट की गई सेवा में कार्रवाइयां फिर से शुरू कर सकते हैं.
16. माइग्रेशन क्लीनअप
माइग्रेशन पूरा करने के लिए, हमें क्लीनअप करने के कुछ चरण पूरे करने होंगे. हमें संसाधनों को मिटाना और अनलॉक करना होगा.
इंटरनल रेंज सबनेट को अनलॉक करना
इससे माइग्रेट किया गया सबनेट अनलॉक हो जाएगा, ताकि इसके मकसद को "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 पीयर को मिटाना
प्रोड्यूसर की गतिविधि
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
"test" PSC एंडपॉइंट मिटाएं
उपभोक्ता की गतिविधि
Cloud Shell से
gcloud compute forwarding-rules delete test-psc-endpoint --region=$region gcloud compute addresses delete test-psc-endpoint-ip --region=$region
17. माइग्रेशन क्लीन अप करने के बाद फ़ाइनल टेस्ट (उपभोक्ता गतिविधि)
अब तक, स्टेट 4 आर्किटेक्चर (आखिरी स्थिति) तैयार हो गया है.
यह पक्का करने के लिए कि माइग्रेशन क्लीन अप करने से कोई बुरा असर न हो, PSC एंडपॉइंट कनेक्टिविटी की फिर से जांच करें.
Cloud Shell से
gcloud compute ssh \ --zone "$zone" "consumer-client" \ --tunnel-through-iap \ --project $projectid
उपभोक्ता-क्लाइंट वीएम से
curl service.example.com
अनुमानित आउटपुट
I am a Producer Service.
उपभोक्ता-क्लाइंट वीएम से
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 पीयरिंग पर आधारित सेवा को सेट अप करने का तरीका
- पब्लिक सर्विसेज़ कार्ड (पीएससी) वाली सेवा को सेट अप करने का तरीका
- VPC पीयरिंग की मदद से सबनेट माइग्रेशन करने के लिए, Internal-Ranges API का इस्तेमाल करना, ताकि VPC पीयरिंग को पीएससी सेवा पर माइग्रेट किया जा सके.
- सेवा माइग्रेशन के लिए डाउनटाइम की ज़रूरत को समझना
- माइग्रेशन से जुड़ी समस्या ठीक करने के चरण