1. परिचय
Private Service Connect (PSC) की मदद से, सेवाओं को सुरक्षित और निजी तौर पर इस्तेमाल करना आसान हो जाता है. इस मॉडल से नेटवर्क आर्किटेक्चर को मैनेज करना बहुत आसान हो जाता है. इसकी मदद से, सेवा का इस्तेमाल करने वाले लोग या कंपनियां, सेवा देने वाले लोगों या कंपनियों से निजी तौर पर कनेक्ट हो सकती हैं. साथ ही, इससे वर्चुअल प्राइवेट क्लाउड पीयरिंग की ज़रूरत भी खत्म हो जाती है. पहली इमेज में वीपीसी पियरिंग और पीएससी एट्रिब्यूट के बारे में बताया गया है.
पहली इमेज. 
सेवा का इस्तेमाल करने वाले के तौर पर, आपके पास यह तय करने का विकल्प होता है कि सेवाओं के लिए अपने निजी आईपी कैसे असाइन किए जाएं. साथ ही, इससे आपको प्रोड्यूसर वीपीसी के लिए सबनेट रेंज मैनेज करने की ज़रूरत नहीं पड़ती. अब आपके पास, सेवा कनेक्ट करने की सुविधा का इस्तेमाल करके, अपनी वीपीसी से किसी सेवा को चुना गया वर्चुअल आईपी असाइन करने का विकल्प है.
इस कोडलैब में, आपको Private Service Connect का एक ऐसा आर्किटेक्चर बनाना है जो MongoDB Atlas के साथ पीएससी के ग्लोबल ऐक्सेस के इस्तेमाल के बारे में बताता हो.
ग्लोबल ऐक्सेस की मदद से, क्लाइंट अलग-अलग क्षेत्रों में Private Service Connect (PSC) से कनेक्ट हो सकते हैं. यह सुविधा, मैनेज की गई सेवाओं को कई क्षेत्रों में होस्ट करके, उन्हें ज़्यादा से ज़्यादा उपलब्ध कराने के लिए काम आती है. इसके अलावा, इससे क्लाइंट को ऐसी सेवा ऐक्सेस करने की अनुमति दी जा सकती है जो क्लाइंट के क्षेत्र में उपलब्ध नहीं है.
2. ग्लोबल ऐक्सेस की सुविधा चालू करना
ग्लोबल ऐक्सेस एक वैकल्पिक सुविधा है. इसे उपभोक्ता के लिए फ़ॉरवर्ड करने के नियम के तहत कॉन्फ़िगर किया जाता है. नीचे दिए गए कमांड से पता चलता है कि इसे कैसे कॉन्फ़िगर किया जाता है:
gcloud beta compute forwarding-rules create psc-west \
--region=us-west1 \
--network=consumer-vpc \
--address=psc-west-address \
--target-service-attachment=projects/.../serviceAttachments/sa-west \
--allow-psc-global-access
--allow-psc-global-accessफ़्लैग, Private Service Connect एंडपॉइंट पर ग्लोबल ऐक्सेस चालू करता है- ग्लोबल ऐक्सेस की सुविधा की मदद से, क्लाइंट को Private Service Connect फ़ॉरवर्डिंग के नियम से अलग इलाके में रखा जा सकता है. हालांकि, फ़ॉरवर्डिंग का नियम अब भी उसी इलाके में होना चाहिए जहां सेवा अटैचमेंट कनेक्ट किया गया है.
- ग्लोबल ऐक्सेस चालू करने के लिए, प्रोड्यूसर के सेवा अटैचमेंट पर किसी कॉन्फ़िगरेशन की ज़रूरत नहीं होती. यह सिर्फ़ उपभोक्ता के लिए उपलब्ध विकल्प है.
मौजूदा एंडपॉइंट के लिए, ग्लोबल ऐक्सेस को किसी भी समय चालू या बंद किया जा सकता है. किसी मौजूदा एंडपॉइंट पर ग्लोबल ऐक्सेस चालू करने पर, चालू कनेक्शन के लिए ट्रैफ़िक में कोई रुकावट नहीं आती.. ग्लोबल ऐक्सेस की सुविधा, फ़ॉरवर्ड करने से जुड़े मौजूदा नियम पर इस कमांड की मदद से चालू की जाती है:
gcloud beta compute forwarding-rules update psc-west --allow-psc-global-access
ग्लोबल ऐक्सेस बंद करना
--no-allow-psc-global-access फ़्लैग का इस्तेमाल करके, ईमेल फ़ॉरवर्ड करने के मौजूदा नियमों के लिए भी ग्लोबल ऐक्सेस बंद किया जा सकता है. ध्यान दें कि इस कमांड को चलाने के बाद, एक से दूसरे इलाके के बीच होने वाले सभी ऐक्टिव ट्रैफ़िक को बंद कर दिया जाएगा.
gcloud beta compute forwarding-rules update psc-west --no-allow-psc-global-access
3. आपको क्या बनाना है
- एक से ज़्यादा क्षेत्रों वाला MongoDB Atlas क्लस्टर बनाया जाएगा. इसकी टोपोलॉजी, इमेज 2 में दिखाई गई है. इसमें us-west1 क्षेत्र में एक नोड और us-west2 क्षेत्र में दो नोड होंगे.
- us-west1 और us-west2 में MongoDB क्लस्टर को ऐक्सेस करने के लिए, उपभोक्ता वीपीसी और उससे जुड़ा वीएम.
- us-west1 और us-west2 क्षेत्रों में एक वीपीसी और दो सबनेट. हर सबनेट में कम से कम 64 मुफ़्त आईपी पते होने चाहिए. सबनेट /26 और उससे कम के साथ बनाएं.
MongoDB क्लाइंट को उपभोक्ता वीपीसी में मौजूद vm1 पर इंस्टॉल किया जाएगा. us-west1 में प्राइमरी नोड के काम न करने पर, क्लाइंट us-west2 में मौजूद नए प्राइमरी नोड के ज़रिए डेटा को पढ़/लिख सकेगा.
दूसरी इमेज. 
आपको क्या सीखने को मिलेगा
- दो क्षेत्रों में डिप्लॉय किए गए वीपीसी और सबनेट बनाने का तरीका
- एक से ज़्यादा रीजन वाले MongoDB Atlas क्लस्टर को डिप्लॉय करने का तरीका
- प्राइवेट एंडपॉइंट बनाने का तरीका
- MongoDB से कनेक्ट करने का तरीका
- MongoDB के एक से ज़्यादा रीजन में फ़ेलओवर की प्रोसेस को पूरा करने और उसकी पुष्टि करने का तरीका
आपको इन चीज़ों की ज़रूरत होगी
- Google Cloud प्रोजेक्ट
- हर क्षेत्र के लिए /26 सबनेट उपलब्ध कराएं
- प्रोजेक्ट के मालिक या संगठन के मालिक के पास MongoDB Atlas का ऐक्सेस होना चाहिए, ताकि वह M10 या इससे ऊपर के क्लस्टर टियर वाला MongoDB क्लस्टर बना सके. (कृपया PoV चलाने के लिए, GETATLAS का इस्तेमाल करें. इससे आपको मुफ़्त क्रेडिट मिलेंगे)
4. शुरू करने से पहले
कोडलैब के साथ काम करने के लिए प्रोजेक्ट को अपडेट करना
इस कोडलैब में, Cloud Shell में gcloud कॉन्फ़िगरेशन लागू करने में मदद करने के लिए, $variables का इस्तेमाल किया गया है.
Cloud Shell में, यह तरीका अपनाएं:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
5. उपयोगकर्ता का सेटअप
उपयोगकर्ता वीपीसी बनाना
Cloud Shell में, यह तरीका अपनाएं:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
उपयोगकर्ता के सबनेट बनाना
Cloud Shell में, यह तरीका अपनाएं:
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
Cloud Shell में, us-west1 के लिए उपभोक्ता एंडपॉइंट बनाएं:
gcloud compute networks subnets create psc-endpoint-us-west1 --project=$projectname --range=192.168.10.0/26 --network=consumer-vpc --region=us-west1
Cloud Shell में, us-west2 के लिए उपभोक्ता एंडपॉइंट बनाएं:
gcloud compute networks subnets create psc-endpoint-us-west2 --project=$projectname --range=172.16.10.0/26 --network=consumer-vpc --region=us-west2
क्लाउड राऊटर और एनएटी कॉन्फ़िगरेशन
सॉफ़्टवेयर पैकेज इंस्टॉल करने के लिए, कोडलैब में Cloud NAT का इस्तेमाल किया जाता है. ऐसा इसलिए, क्योंकि वीएम इंस्टेंस के पास बाहरी आईपी पता नहीं होता है.
Cloud Shell में, क्लाउड राउटर बनाएं.
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
Cloud Shell में, NAT गेटवे बनाएं.
gcloud compute routers nats create consumer-nat --router=consumer-cr --auto-allocate-nat-external-ips --nat-all-subnet-ip-ranges --region us-west1
इंस्टेंस vm1 का कॉन्फ़िगरेशन
इस सेक्शन में, Compute Engine इंस्टेंस vm1 बनाया जाएगा.
Cloud Shell में, vm1 इंस्टेंस बनाएं.
gcloud compute instances create vm1 \
--project=$projectname \
--zone=us-west1-a \
--machine-type=e2-micro \
--network-interface=subnet=vm-subnet,no-address \
--maintenance-policy=MIGRATE \
--provisioning-model=STANDARD \
--create-disk=auto-delete=yes,boot=yes,device-name=vm1,image=projects/ubuntu-os-cloud/global/images/ubuntu-2004-focal-v20230213,mode=rw,size=10,type=projects/$projectname/zones/us-west1-a/diskTypes/pd-balanced
--metadata startup-script="#! /bin/bash
sudo apt-get update
sudo apt-get install tcpdump -y
sudo apt-get install dnsutils -y"
आईएपी को अपने वीएम इंस्टेंस से कनेक्ट करने की अनुमति देने के लिए, फ़ायरवॉल का ऐसा नियम बनाएं जो:
- यह उन सभी वीएम इंस्टेंस पर लागू होता है जिन्हें आपको आईएपी का इस्तेमाल करके ऐक्सेस करना है.
- इसकी मदद से, 35.235.240.0/20 आईपी रेंज से इन्ग्रेस ट्रैफ़िक को आने की अनुमति मिलती है. इस रेंज में वे सभी आईपी पते शामिल हैं जिनका इस्तेमाल IAP, टीसीपी फ़ॉरवर्डिंग के लिए करता है.
Cloud Shell में, IAP फ़ायरवॉल नियम बनाएं.
gcloud compute firewall-rules create ssh-iap-consumer-vpc \
--network consumer-vpc \
--allow tcp:22 \
--source-ranges=35.235.240.0/20
6. एक से ज़्यादा रीजन वाला MongoDB Atlas क्लस्टर बनाना
- पीएसएसी सेटअप करने से पहले, हमें एक एटलस क्लस्टर सेट अप करना होगा. MongoDB Atlas की सदस्यता लेने के लिए, यहां दिए गए दो तरीकों में से किसी एक का इस्तेमाल किया जा सकता है:
- अगर आपके पास Google Cloud खाता है, तो Google Cloud Marketplace से. सदस्यता सेट अप करने के लिए, दस्तावेज़ देखें.
- Atlas के रजिस्ट्रेशन पेज पर जाकर.
- Atlas की सदस्यता लेने के बाद, नीचे दिखाए गए 'डेटाबेस बनाएं' बटन पर क्लिक करें.

- नया क्लस्टर बनाएं → डेडीकेटेड

- क्लाउड की सेवा देने वाली कंपनी और क्षेत्र → Google Cloud
- मल्टी-क्लाउड, मल्टी-रीजन, और वर्कलोड आइसोलेशन → चुना गया (नीले रंग का सही का निशान)

- चुने जा सकने वाले नोड → us-west1 (1 नोड), us-west2 (2 नोड)

- क्लस्टर टियर → M10, अन्य सभी सेटिंग को डिफ़ॉल्ट के तौर पर छोड़ दें

- क्लस्टर का नाम → psc-mongodb-uswest1-uswest2

- → क्लस्टर बनाएं चुनें

- डेटाबेस बनाने में 7 से 10 मिनट लगते हैं

डप्लॉय होने के बाद क्लस्टर का व्यू

7. us-west1 के लिए प्राइवेट एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
किसी भी डेटाबेस को पढ़ने/लिखने का ऐक्सेस देने के लिए, नया उपयोगकर्ता बनाएं
सुरक्षा → डेटाबेस ऐक्सेस में जाकर, नया डेटाबेस उपयोगकर्ता जोड़ें को चुनें. यहां एक उदाहरण दिया गया है. इसमें उपयोगकर्ता नाम और पासवर्ड को codelab के तौर पर कॉन्फ़िगर किया गया है. पक्का करें कि आपने किसी भी डेटाबेस में पढ़ने और लिखने की सुविधा वाली, पहले से मौजूद भूमिका चुनी हो.

- सुरक्षा → नेटवर्क ऐक्सेस में जाकर, आईपी ऐक्सेस की सूची में कोई एंट्री करने की ज़रूरत नहीं है
MongoDB Atlas में प्राइवेट एंडपॉइंट तैयार करना
- नेटवर्क ऐक्सेस → प्राइवेट एंडपॉइंट → डेडीकेटेड क्लस्टर → प्राइवेट एंडपॉइंट जोड़ें
को चुनें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud को चुनें. इसके बाद, आगे बढ़ें

सेवा अटैचमेंट
- us-west1 क्षेत्र चुनें. इसके बाद, आगे बढ़ें

एंडपॉइंट
- Private Service Connect एंडपॉइंट बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: ज़्यादा जानकारी के लिए, ‘निर्देश दिखाएं' चुनें
- VPC का नाम: consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west1
- Private Service Connect एंडपॉइंट का प्रीफ़िक्स: psc-endpoint-us-west1

एंडपॉइंट सेट अप करना
यहां दिए गए सेक्शन में, एक शेल स्क्रिप्ट जनरेट की गई है. इसे स्थानीय तौर पर setup_psc.sh नाम से सेव किया जाना चाहिए. सेव करने के बाद, शेल स्क्रिप्ट में बदलाव करके पीएससी को ग्लोबल ऐक्सेस दें. यह कार्रवाई, Google Cloud प्रोजेक्ट के Cloud Shell में की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण. आपके आउटपुट में अलग-अलग वैल्यू होंगी

- MongoDB कंसोल से शेल स्क्रिप्ट कॉपी करें और Google Cloud Cloud Shell टर्मिनल में कॉन्टेंट सेव करें. स्क्रिप्ट को setup_psc.sh के तौर पर सेव करना न भूलें
अपडेट से पहले का उदाहरण:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
ग्लोबल ऐक्सेस की सुविधा के लिए, शेल स्क्रिप्ट को अपडेट करना
नीचे दिए गए सिंटैक्स का इस्तेमाल करके, शेल स्क्रिप्ट का पता लगाने और उसे अपडेट करने के लिए, nano या vi एडिटर का इस्तेमाल करें:
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
अपडेट के बाद का उदाहरण:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west1-ip-$i --region=us-west1 --subnet=psc-endpoint-us-west1
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west1-ip-$i --region=us-west1 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west1-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west1-$i --region=us-west1 --network=consumer-vpc --address=psc-endpoint-us-west1-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west1/serviceAttachments/sa-us-west1-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west1 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west1*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west1. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west1 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west1*)" > atlasEndpoints-psc-endpoint-us-west1.json
शेल स्क्रिप्ट चलाना
setup_psc.sh स्क्रिप्ट पर जाएं और इसे चलाएं. इसके पूरा होने पर, atlasEndpoints-psc-endpoint-us-west1.json नाम की फ़ाइल बन जाएगी. इस JSON फ़ाइल में, आईपी पतों और Private Service Connect एंडपॉइंट के नामों की सूची होती है. इनकी ज़रूरत डिप्लॉयमेंट के अगले चरण के लिए होती है.
Cloud Shell में, यह तरीका अपनाएं:
sh setup_psc.sh
स्क्रिप्ट पूरी होने के बाद, Cloud Shell एडिटर का इस्तेमाल करके atlasEndpoints-psc-endpoint-us-west1.json को स्थानीय तौर पर डाउनलोड करें.

JSON फ़ाइल अपलोड करना
पहले से सेव की गई json फ़ाइल atlasEndpoints-psc-endpoint-us-west1.json अपलोड करें


बनाएं को चुनें
Private Service Connect एंडपॉइंट की पुष्टि करना
MongoDB के यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, Security → Network access → Private endpoint पर जाएं. टैब, खास तौर पर बनाए गए क्लस्टर, और उपलब्ध एंडपॉइंट पर जाने में 10 मिनट लगेंगे.
उपलब्धता की स्थिति

Google Cloud Console में, नेटवर्क सेवाएं → Private Services Connect पर जाएं. इसके बाद, कनेक्ट किया गया एंडपॉइंट टैब चुनें. इसमें, उपभोक्ता एंडपॉइंट की स्थिति 'लंबित है' से बदलकर 'स्वीकार किया गया' दिखती है. इसका उदाहरण यहां दिया गया है:

8. us-west2 के लिए प्राइवेट एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
MongoDB Atlas में प्राइवेट एंडपॉइंट तैयार करना
- नेटवर्क ऐक्सेस → प्राइवेट एंडपॉइंट → डेडीकेटेड क्लस्टर → प्राइवेट एंडपॉइंट जोड़ें
को चुनें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud को चुनें. इसके बाद, आगे बढ़ें

सेवा अटैचमेंट
- क्षेत्र us-west2 को चुनें. इसके बाद, आगे बढ़ें

एंडपॉइंट
- Private Service Connect एंडपॉइंट बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: ज़्यादा जानकारी के लिए, ‘निर्देश दिखाएं' चुनें
- VPC का नाम: consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west2
- Private Service Connect एंडपॉइंट प्रीफ़िक्स: psc-endpoint-us-west2

एंडपॉइंट सेट अप करना
यहां दिए गए सेक्शन में, एक शेल स्क्रिप्ट जनरेट की गई है. इसे स्थानीय तौर पर setup_psc.sh नाम से सेव किया जाना चाहिए. सेव करने के बाद, शेल स्क्रिप्ट में बदलाव करके पीएससी को ग्लोबल ऐक्सेस दें. यह कार्रवाई, Google Cloud प्रोजेक्ट के Cloud Shell में की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण. आपके आउटपुट में अलग-अलग वैल्यू होंगी

- MongoDB कंसोल से शेल स्क्रिप्ट कॉपी करें और Google Cloud Cloud Shell टर्मिनल में कॉन्टेंट सेव करें. स्क्रिप्ट को setup_psc.sh के तौर पर सेव करना न भूलें
अपडेट से पहले का उदाहरण:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2vn1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
ग्लोबल ऐक्सेस की सुविधा के लिए, शेल स्क्रिप्ट को अपडेट करना
नीचे दिए गए सिंटैक्स का इस्तेमाल करके, शेल स्क्रिप्ट का पता लगाने और उसे अपडेट करने के लिए, nano या vi एडिटर का इस्तेमाल करें:
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
अपडेट के बाद का उदाहरण:
#!/bin/bash
gcloud config set project yourprojectname
for i in {0..49}
do
gcloud compute addresses create psc-endpoint-us-west2-ip-$i --region=us-west2 --subnet=psc-endpoint-us-west2
done
for i in {0..49}
do
if [ $(gcloud compute addresses describe psc-endpoint-us-west2-ip-$i --region=us-west2 --format="value(status)") != "RESERVED" ]; then
echo "psc-endpoint-us-west2-ip-$i is not RESERVED";
exit 1;
fi
done
for i in {0..49}
do
gcloud beta compute forwarding-rules create psc-endpoint-us-west2-$i --region=us-west2 --network=consumer-vpc --address=psc-endpoint-us-west2-ip-$i --target-service-attachment=projects/p-npwsmzelxznmaejhj2v
n1q0q/regions/us-west2/serviceAttachments/sa-us-west2-61485ec2ae9d2e48568bf84f-$i --allow-psc-global-access
done
if [ $(gcloud compute forwarding-rules list --regions=us-west2 --format="csv[no-heading](name)" --filter="(name:psc-endpoint-us-west2*)" | wc -l) -gt 50 ]; then
echo "Project has too many forwarding rules that match prefix psc-endpoint-us-west2. Either delete the competing resources or choose another endpoint prefix."
exit 2;
fi
gcloud compute forwarding-rules list --regions=us-west2 --format="json(IPAddress,name)" --filter="name:(psc-endpoint-us-west2*)" > atlasEndpoints-psc-endpoint-us-west2.json
शेल स्क्रिप्ट चलाना
setup_psc.sh स्क्रिप्ट पर जाएं और इसे चलाएं. इसके पूरा होने पर, atlasEndpoints-psc-endpoint-us-west2.json नाम की फ़ाइल बन जाएगी. इस JSON फ़ाइल में, आईपी पतों और Private Service Connect एंडपॉइंट के नामों की सूची होती है. इनकी ज़रूरत डिप्लॉयमेंट के अगले चरण के लिए होती है.
Cloud Shell में, यह तरीका अपनाएं:
sh setup_psc.sh
स्क्रिप्ट पूरी होने के बाद, Cloud Shell एडिटर का इस्तेमाल करके atlasEndpoints-psc-endpoint-us-west2.json को स्थानीय तौर पर डाउनलोड करें.

JSON फ़ाइल अपलोड करना
पहले से सेव की गई json फ़ाइल atlasEndpoints-psc-endpoint-us-west2.json अपलोड करें


बनाएं को चुनें
Private Service Connect एंडपॉइंट की पुष्टि करना
MongoDB के यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, Security → Network access → Private endpoint पर जाएं. टैब और डेडीकेटेड क्लस्टर चुनने के बाद, एंडपॉइंट 10 मिनट में उपलब्ध हो जाता है.
उपलब्ध स्टेटस:

Google Cloud Console में, नेटवर्क सेवाएं → Private Services Connect पर जाएं. इसके बाद, कनेक्ट किया गया एंडपॉइंट टैब चुनें. इसमें, उपभोक्ता एंडपॉइंट की स्थिति 'लंबित है' से 'स्वीकार किया गया' में बदलती हुई दिखती है. इसका उदाहरण यहां दिया गया है. उपयोगकर्ता के एंडपॉइंट में कुल 100 एंडपॉइंट डिप्लॉय किए गए हैं. अगले चरण पर जाने से पहले, इन्हें स्वीकार किया जाना ज़रूरी है.

9. निजी एंडपॉइंट से MongoDB Atlas से कनेक्ट करना
Private Service Connections स्वीकार किए जाने के बाद, MongoDB क्लस्टर को अपडेट करने के लिए 10 से 15 मिनट का अतिरिक्त समय लगता है. MongoDB के यूज़र इंटरफ़ेस (यूआई) में, ग्रे रंग की आउटलाइन से क्लस्टर अपडेट के बारे में पता चलता है. इसलिए, प्राइवेट एंडपॉइंट से कनेक्ट करने की सुविधा उपलब्ध नहीं है.

डिप्लॉयमेंट की पहचान करें और कनेक्ट करें को चुनें (ध्यान दें कि अब ग्रे बॉक्स मौजूद नहीं है)

कनेक्शन का टाइप → प्राइवेट एंडपॉइंट चुनें. इसके बाद, कनेक्शन का तरीका चुनें

MongoDB Shell से कनेक्ट करें को चुनें

'मेरे पास MongoDB Shell इंस्टॉल नहीं है' और Ubuntu 20.4 को चुनें. साथ ही, यह पक्का करें कि आपने पहले और तीसरे चरण के कॉन्टेंट को नोटपैड में कॉपी कर लिया हो.

10. mongosh ऐप्लिकेशन इंस्टॉल करना
इंस्टॉल करने से पहले, आपको पहले कॉपी की गई वैल्यू के आधार पर एक कमांड स्ट्रिंग बनानी होगी. ये वैल्यू, आपको पहले और तीसरे चरण में मिली थीं. इसके बाद, Cloud Shell का इस्तेमाल करके vm1 में ssh करें. इसके बाद, mongosh ऐप्लिकेशन इंस्टॉल करें और प्राइमरी (us-west1) डेटाबेस की पुष्टि करें. consumer-vpc में vm1 बनाते समय, Ubuntu 20.4 इमेज इंस्टॉल की गई थी.
कनेक्ट करने का तरीका चुनें: पहला चरण, डाउनलोड करने का यूआरएल कॉपी करें

कमांड स्ट्रिंग का उदाहरण. इसे अपनी कस्टम वैल्यू से बदलें:
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
कनेक्शन का तरीका चुनें, तीसरा चरण.

कमांड स्ट्रिंग का उदाहरण. इसे अपनी कस्टम वैल्यू से बदलें:
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
vm1 में लॉग इन करें
Cloud Shell में, यह तरीका अपनाएं:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell में IAP का इस्तेमाल करके vm1 में लॉग इन करें. अगर टाइम आउट हो जाता है, तो फिर से कोशिश करें.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
ओएस से इंस्टॉल करना
Cloud Shell ओएस लॉगिन से इंस्टॉलेशन करें. ज़्यादा जानकारी यहां उपलब्ध है. नीचे दिए गए सिंटैक्स को अपनी पसंद के मुताबिक स्ट्रिंग से अपडेट करें
wget -qO - https://www.mongodb.org/static/pgp/server-6.0.asc | sudo apt-key add -
कार्रवाई को इस तरह जवाब देना चाहिए
OK
.
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu focal/mongodb-org/6.0 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-6.0.list
sudo apt-get update -y
wget https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
sudo dpkg -i mongodb-mongosh_1.7.1_amd64.deb
MongoDB डिप्लॉयमेंट से कनेक्ट करना
Cloud Shell ओएस लॉगिन में, यह तरीका अपनाएं. कॉन्फ़िगर किया गया उपयोगकर्ता नाम और पासवर्ड, codelab है.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
यहां दिया गया उदाहरण देखें:

डेटाबेस के ख़िलाफ़ कमांड लागू करना
Cloud Shell ओएस लॉगिन में, यह तरीका अपनाएं.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne({"Name":"cosmo"})
11. us-west1 में MongoDB का फ़ेलओवर ऐक्टिव है
फ़ेलओवर करने से पहले, आइए पुष्टि कर लें कि us-west1 प्राइमरी है और us-west2 में दो सेकंडरी नोड हैं.
डेटाबेस → psc-mongodb-uswest1-uswest2 → खास जानकारी पर जाएं

नीचे दिए गए सेक्शन में, us-west1 में मौजूद vm1 में लॉग इन करें. इसके बाद, us-west1 में मौजूद प्राइमरी MongoDB क्लस्टर क्षेत्र को फ़ेलओवर करें. साथ ही, पुष्टि करें कि डेटाबेस अब भी us-west2 में मौजूद MongoDB क्लस्टर से ऐक्सेस किया जा सकता है.
Atlas यूज़र इंटरफ़ेस (यूआई) से, प्राइमरी और रीजनल फ़ेलओवर, दोनों की जांच की जा सकती है.
- Atlas के यूज़र इंटरफ़ेस (यूआई) में लॉग इन करें.
- अपने क्लस्टर के नाम के बगल में मौजूद [...] पर क्लिक करें, psc-mongodb-uswest1-uswest2 → Test Outage.

- रीजनल आउटेज → क्षेत्र चुनें को चुनें.

- प्राइमरी क्षेत्र चुनें, us-west1→ Simulate Regional Outage.

क्लस्टर चुनने के बाद, तीन से चार मिनट में आउटेज सिमुलेशन दिखेगा
विंडो बंद करें


पुष्टि करें कि us-west1 बंद है और us-west2 को अब प्राइमरी के तौर पर इस्तेमाल किया जा रहा है
डेटाबेस → psc-mongodb-uswest1-uswest2 → खास जानकारी पर जाएं

नए प्राइमरी क्लस्टर, us-west2 से कनेक्टिविटी की पुष्टि करें
us-west1 में मौजूद vm1 में लॉग इन करें और us-west2 में मौजूद mongodb को ऐक्सेस करें. इससे, प्राइवेट सर्विस कनेक्ट के ग्लोबल ऐक्सेस की पुष्टि होगी.
अगर आपका Cloud Shell सेशन खत्म हो गया है, तो यह तरीका अपनाएं:
Cloud Shell में, यह तरीका अपनाएं:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
Cloud Shell में IAP का इस्तेमाल करके vm1 में लॉग इन करें. अगर टाइम आउट हो जाता है, तो फिर से कोशिश करें.
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
MongoDB डिप्लॉयमेंट से कनेक्ट करना
Cloud Shell ओएस लॉगिन में, यह तरीका अपनाएं.
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
यहां दिया गया उदाहरण देखें:

डेटाबेस के ख़िलाफ़ कमांड लागू करना
Cloud Shell ओएस लॉगिन में, यह तरीका अपनाएं.
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit

सफल: आपने पुष्टि कर ली है कि पीएससी के ग्लोबल ऐक्सेस की मदद से, उपभोक्ता एंडपॉइंट को सभी क्षेत्रों में बिना किसी रुकावट के कनेक्ट किया जा सकता है. इससे, ज़्यादा उपलब्धता बनाए रखने में मदद मिलती है या क्षेत्र के हिसाब से होने वाली रुकावटों को कम किया जा सकता है. कोड लैब में, MongoDB के us-west1 में मौजूद प्राइमरी नोड में रीजनल फ़ेलओवर हुआ. इसलिए, us-west2 में मौजूद सेकंडरी नोड ने प्राइमरी नोड की भूमिका निभाना शुरू कर दिया. हालांकि, क्लस्टर की वजह से क्षेत्र में सेवा बंद हो गई थी, लेकिन us-west1 में मौजूद उपभोक्ता vm1, us-west2 में मौजूद नए प्राइमरी क्लस्टर तक पहुंचने में सफल रहा.
12. साफ़-सफ़ाई सेवा
Cloud Console से उपभोक्ता एंडपॉइंट मिटाएं
नेटवर्क सेवाएं → Private Service Connect → कनेक्ट किए गए एंडपॉइंट पर जाएं
लैब के बाहर के उपभोक्ताओं के एंडपॉइंट को मिटाने की संभावना को खत्म करने के लिए, psc-endpoint फ़िल्टर का इस्तेमाल करें. सभी एंडपॉइंट → मिटाएं चुनें

उपयोगकर्ता के एंडपॉइंट से जुड़े स्टैटिक इंटरनल आईपी पतों को मिटाएं
VPC नेटवर्क → उपभोक्ता-वीपी→ स्टैटिक इंटरनल आईपी पते पर जाएं
गैर-लैब उपभोक्ता एंडपॉइंट के संभावित तौर पर मिटने की समस्या को हल करने के लिए, psc-endpoint फ़िल्टर का इस्तेमाल करें. साथ ही, हर पेज पर पंक्तियों की संख्या बढ़ाकर 100 करें. सभी एंडपॉइंट → रिलीज़ करें चुनें

Cloud Shell से, कोडलैब कॉम्पोनेंट मिटाएं.
gcloud compute instances delete vm1 --zone=us-west1-a --quiet
gcloud compute networks subnets delete psc-endpoint-us-west1 vm-subnet --region=us-west1 --quiet
gcloud compute networks subnets delete psc-endpoint-us-west2 --region=us-west2 --quiet
gcloud compute firewall-rules delete ssh-iap-consumer --quiet
gcloud compute routers delete consumer-cr --region=us-west1 --quiet
gcloud compute networks delete consumer-vpc --quiet
Atlas UI में, क्लस्टर psc-mongodb-uswest1-uswest2 → सिम्युलेशन खत्म करें

'बिजली जाने की स्थिति का सिम्युलेशन बंद करें' —> 'बाहर निकलें' को चुनें

क्लस्टर अब us-west1 को प्राइमरी के तौर पर वापस ला रहा है. इस प्रोसेस में तीन से चार मिनट लगेंगे. प्रोसेस पूरी होने के बाद, क्लस्टर को बंद करें. स्टेटस में बदलाव दिखाने वाली ग्रे आउटलाइन पर ध्यान दें.


क्लस्टर का नाम डालें → खत्म करें

us-west1 और us-west2 से जुड़े प्राइवेट एंडपॉइंट को मिटाएं
Atlas के यूज़र इंटरफ़ेस (यूआई) में, Security → Network Access → Private Endpoint पर जाएं → Terminate चुनें

13. बधाई हो
बधाई हो, आपने Private Service Connect एंडपॉइंट को कॉन्फ़िगर और पुष्टि कर ली है. इससे सभी क्षेत्रों में MongoDB को ऐक्सेस किया जा सकता है. आपने उपभोक्ता वीपीसी, एक से ज़्यादा क्षेत्रों में MongoDB, और उपभोक्ता एंडपॉइंट बना लिए हैं. क्षेत्रीय फ़ेलओवर होने पर, us-west1 में मौजूद वीएम, us-west1 और us-west2, दोनों में MongoDB से कनेक्ट हो गया.
Cosmopup को कोडलैब बहुत पसंद हैं!!

आगे क्या करना है?
यहां दिए गए कुछ कोडलैब आज़माएं...
- GKE के साथ Private Service Connect का इस्तेमाल करके, सेवाओं को पब्लिश और इस्तेमाल करना
- सेवाओं को पब्लिश करने और उनका इस्तेमाल करने के लिए Private Service Connect का इस्तेमाल करना
- Private Service Connect और इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर का इस्तेमाल करके, हाइब्रिड नेटवर्किंग के ज़रिए ऑन-प्रेम सेवाओं से कनेक्ट करना
- ऑटोमैटिक डीएनएस कॉन्फ़िगरेशन के साथ Private Service Connect का इस्तेमाल करना
ज़्यादा जानकारी और वीडियो
- Private Service Connect के बारे में खास जानकारी
- Private Service Connect क्या है?
- इन लोड बैलेंसर टाइप का इस्तेमाल किया जा सकता है