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 Router और NAT कॉन्फ़िगरेशन
इस कोडलैब में, सॉफ़्टवेयर पैकेज इंस्टॉल करने के लिए 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 में की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण. आपके आउटपुट में अलग-अलग वैल्यू होंगी

- MongoBD कंसोल से शेल स्क्रिप्ट कॉपी करें और 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 में की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण. आपके आउटपुट में अलग-अलग वैल्यू होंगी

- MongoBD कंसोल से शेल स्क्रिप्ट कॉपी करें और 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 Connect कनेक्शन स्वीकार होने के बाद, 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 को ऐक्सेस करें. इससे Private Service Connect के ग्लोबल ऐक्सेस की पुष्टि होगी.
अगर आपका 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

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

उपयोगकर्ता के एंडपॉइंट से जुड़े स्टैटिक इंटरनल आईपी पतों को मिटाएं
VPC नेटवर्क → consumer-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 यूज़र इंटरफ़ेस (यूआई) में, क्लस्टर psc-mongodb-uswest1-uswest2 की पहचान करें → सिम्युलेशन खत्म करें

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

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


क्लस्टर का नाम डालें → बंद करें

us-west1 और us-west2 से जुड़े प्राइवेट एंडपॉइंट को मिटाएं
Atlas UI में, 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 और इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर का इस्तेमाल करके, हाइब्रिड नेटवर्किंग के ज़रिए कंपनी की इमारत में मौजूद सेवाओं से कनेक्ट करना
- अपने-आप DNS कॉन्फ़िगरेशन के साथ Private Service Connect का इस्तेमाल करना
ज़्यादा जानकारी और वीडियो
- Private Service Connect के बारे में खास जानकारी
- Private Service Connect क्या है?
- इन लोड बैलेंसर टाइप का इस्तेमाल किया जा सकता है