1. परिचय
Private Service Connect (PSC) की मदद से, सेवाओं को सुरक्षित और निजी तौर पर इस्तेमाल करना आसान हो जाता है. इस मॉडल की मदद से, सेवाओं के उपभोक्ता अलग-अलग संगठनों के सेवा देने वालों से निजी तौर पर कनेक्ट कर सकते हैं. इससे नेटवर्क आर्किटेक्चर को आसानी से मैनेज किया जा सकता है. साथ ही, वर्चुअल प्राइवेट क्लाउड पीयरिंग की ज़रूरत भी नहीं पड़ती. पहली इमेज में, VPC पीयरिंग और पीएससी एट्रिब्यूट दिखाए गए हैं.
पहली इमेज.
सेवा का इस्तेमाल करने वाले के तौर पर, आपको यह चुनने की सुविधा मिलती है कि सेवाओं को निजी आईपी कैसे असाइन किए जाएं. साथ ही, आपको प्रोड्यूसर VPC के लिए सबनेट रेंज मैनेज करने की ज़रूरत नहीं पड़ती. अब सेवा कनेक्ट का इस्तेमाल करके, अपने VPC से चुनी गई वर्चुअल आईपी को ऐसी सेवा को आसानी से असाइन किया जा सकता है.
इस कोडलैब में, आपको Private Service Connect का पूरा आर्किटेक्चर बनाना है. इसमें MongoDB atlas के साथ PSC के ग्लोबल ऐक्सेस के इस्तेमाल के बारे में बताया गया है.
ग्लोबल ऐक्सेस की मदद से, क्लाइंट क्षेत्रीय सीमाओं के पार Private Service Connect (पीएससी) से कनेक्ट कर सकते हैं. यह कई इलाकों में होस्ट की गई मैनेज की जा रही सेवाओं के लिए, बेहतर उपलब्धता बनाने के लिए काम आता है. इसके अलावा, यह क्लाइंट को ऐसी सेवा को ऐक्सेस करने की अनुमति देता है जो क्लाइंट के इलाके में उपलब्ध नहीं है.
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 एंडपॉइंट पर ग्लोबल ऐक्सेस की सुविधा चालू करता है- ग्लोबल ऐक्सेस की मदद से, क्लाइंट को निजी 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 क्लस्टर (दूसरी इमेज में दिखाया गया टॉपोलॉजी) बनाया जाएगा. इसमें us-west1 क्षेत्र में एक और us-west2 क्षेत्र में दो नोड होंगे.
- us-west1 और us-west2 में MongoDB क्लस्टर को ऐक्सेस करने के लिए, उपभोक्ता वीपीएन और उससे जुड़ा वीएम.
- us-west1 और us-west2 क्षेत्रों में एक वीपीसी और दो सबनेट, जिनमें हर सबनेट में कम से कम 64 मुफ़्त आईपी पते हों. /26 और उससे पहले के सबनेट बनाएं.
MongoDB क्लाइंट, उपभोक्ता वीपीसी में vm1 पर इंस्टॉल किया जाएगा. जब us-west1 में प्राइमरी नोड काम नहीं करेगा, तब क्लाइंट us-west2 में नए प्राइमरी नोड से पढ़/लिख सकेगा.
दूसरी इमेज.
आपको क्या सीखने को मिलेगा
- दो इलाकों में डिप्लॉय किया गया VPC और सबनेट बनाने का तरीका
- एक से ज़्यादा क्षेत्रों में 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. कंज्यूमर सेटअप
उपभोक्ता VPC बनाना
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 क्लस्टर बनाना
- पीएससी सेटअप करने से पहले, हमें Atlas क्लस्टर सेट अप करना होगा. MongoDB Atlas की सदस्यता लेने के लिए, इनमें से कोई एक तरीका अपनाएं:
- अगर आपके पास Google Cloud खाता है, तो Google Cloud Marketplace से. सदस्यता सेट अप करने के लिए, दस्तावेज़ देखें.
- Atlas के रजिस्ट्रेशन पेज पर.
- Atlas की सदस्यता लेने के बाद, नीचे दिखाए गए तरीके से 'डेटाबेस बनाएं' बटन पर क्लिक करें.
- नया क्लस्टर बनाएं → खास तौर पर
- क्लाउड की सेवा देने वाली कंपनी और क्षेत्र → Google Cloud
- एक से ज़्यादा क्लाउड, एक से ज़्यादा क्षेत्र, और वर्कलोड अलग करना → चुना गया (नीले रंग का सही का निशान)
- चुने जा सकने वाले नोड → us-west1 (एक नोड), us-west2 (दो नोड)
- क्लस्टर टीयर → M10, बाकी सभी सेटिंग को डिफ़ॉल्ट पर रहने दें
- क्लस्टर का नाम → psc-mongodb-uswest1-uswest2
- चुनें → क्लस्टर बनाएं
- डेटाबेस बनाने में 7 से 10 मिनट लगते हैं
डिप्लॉय होने के बाद क्लस्टर का व्यू
7. us-west1 के लिए निजी एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
किसी भी डेटाबेस को पढ़ने/लिखने का ऐक्सेस देने के लिए नया उपयोगकर्ता बनाना
सुरक्षा → डेटाबेस ऐक्सेस में जाकर, डेटाबेस का नया उपयोगकर्ता जोड़ें को चुनें. यहां एक उदाहरण दिया गया है, जिसमें उपयोगकर्ता नाम और पासवर्ड को codelab के तौर पर कॉन्फ़िगर किया गया है. पक्का करें कि आपने किसी भी डेटाबेस में, पहले से मौजूद 'रोल' के लिए, 'रीड' और 'राइट' ऐक्सेस चुना हो.
- सुरक्षा → नेटवर्क ऐक्सेस में जाकर, आईपी ऐक्सेस सूची में कोई एंट्री डालने की ज़रूरत नहीं है
MongoDB Atlas में निजी एंडपॉइंट तैयार करना
- नेटवर्क ऐक्सेस → निजी एंडपॉइंट → खास क्लस्टर → निजी एंडपॉइंट जोड़ें को चुनें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें
सेवा अटैचमेंट
- क्षेत्र, us-west1 चुनें. इसके बाद, आगे बढ़ें
एंडपॉइंट
- Private Service Connect एंडपॉइंट बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: ज़्यादा जानकारी के लिए, 'निर्देश दिखाएं' चुनें
- वीपीसी का नाम: consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west1
- Private Service Connect एंडपॉइंट का प्रीफ़िक्स: psc-endpoint-us-west1
एंडपॉइंट सेट अप करना
नीचे दिए गए सेक्शन में एक शेल स्क्रिप्ट जनरेट की जाती है. इसे setup_psc.sh नाम से सेव किया जाना चाहिए. सेव होने के बाद, psc के लिए ग्लोबल ऐक्सेस देने के लिए शेल स्क्रिप्ट में बदलाव करें. 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 फ़ाइल में आईपी पतों और निजी Service Connect एंडपॉइंट के नामों की सूची होती है. ये नाम, डिप्लॉयमेंट के अगले चरण के लिए ज़रूरी होते हैं.
Cloud Shell में ये काम करें:
sh setup_psc.sh
स्क्रिप्ट पूरी होने के बाद, atlasEndpoints-psc-endpoint-us-west1.json को लोकल तौर पर डाउनलोड करने के लिए, Cloud Shell एडिटर का इस्तेमाल करें.
JSON फ़ाइल अपलोड करना
पहले से सेव की गई json फ़ाइल atlasEndpoints-psc-endpoint-us-west1.json अपलोड करें
बनाएं को चुनें
Private Service Connect के एंडपॉइंट की पुष्टि करना
MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं. टैब, खास क्लस्टर चुनने के बाद, एंडपॉइंट को 'उपलब्ध है' पर ट्रांज़िशन होने में 10 मिनट लगेंगे.
उपलब्धता की स्थिति
Google Cloud Console में, नेटवर्क सेवाएं → Private Services Connect पर जाएं. इसके बाद, कनेक्ट किया गया एंडपॉइंट टैब चुनें. इसमें, वे उपभोक्ता एंडपॉइंट दिखेंगे जिनकी स्थिति 'मंज़ूरी बाकी है' से 'स्वीकार किया गया' में बदल रही है. इसका उदाहरण यहां दिया गया है:
8. us-west2 के लिए निजी एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
MongoDB Atlas में निजी एंडपॉइंट तैयार करना
- नेटवर्क ऐक्सेस → निजी एंडपॉइंट → खास क्लस्टर → निजी एंडपॉइंट जोड़ें को चुनें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें
सेवा अटैचमेंट
- क्षेत्र, us-west2 चुनें. इसके बाद, आगे बढ़ें
एंडपॉइंट
- Private Service Connect एंडपॉइंट बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: ज़्यादा जानकारी के लिए, 'निर्देश दिखाएं' चुनें
- वीपीसी का नाम: consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west2
- Private Service Connect एंडपॉइंट का प्रीफ़िक्स: psc-endpoint-us-west2
एंडपॉइंट सेट अप करना
नीचे दिए गए सेक्शन में एक शेल स्क्रिप्ट जनरेट की जाती है. इसे setup_psc.sh नाम से सेव किया जाना चाहिए. सेव करने के बाद, psc के लिए ग्लोबल ऐक्सेस देने के लिए शेल स्क्रिप्ट में बदलाव करें. 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 फ़ाइल में आईपी पतों और निजी Service Connect एंडपॉइंट के नामों की सूची होती है. ये नाम, डिप्लॉयमेंट के अगले चरण के लिए ज़रूरी होते हैं.
Cloud Shell में ये काम करें:
sh setup_psc.sh
स्क्रिप्ट पूरी होने के बाद, atlasEndpoints-psc-endpoint-us-west2.json को लोकल तौर पर डाउनलोड करने के लिए, Cloud Shell एडिटर का इस्तेमाल करें.
JSON फ़ाइल अपलोड करना
पहले से सेव की गई json फ़ाइल atlasEndpoints-psc-endpoint-us-west2.json अपलोड करें
बनाएं को चुनें
Private Service Connect के एंडपॉइंट की पुष्टि करना
MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं. टैब, खास क्लस्टर, और एंडपॉइंट को 10 मिनट के बाद उपलब्ध के तौर पर ट्रांज़िशन करने का विकल्प चुनना.
उपलब्धता का स्टेटस:
Google Cloud Console में, नेटवर्क सेवाएं → Private Services Connect पर जाएं. इसके बाद, कनेक्ट किया गया एंडपॉइंट टैब चुनें. इसमें, वे उपभोक्ता एंडपॉइंट दिखेंगे जिनकी स्थिति 'मंज़ूरी बाकी है' से 'स्वीकार किया गया' में बदल रही है. इसका उदाहरण यहां दिया गया है. कंज्यूमर एंडपॉइंट में कुल 100 एंडपॉइंट डिप्लॉय किए गए हैं. अगले चरण पर जाने से पहले, उन्हें 'स्वीकार किया गया' पर ट्रांज़िशन करना होगा.
9. निजी एंडपॉइंट से MongoDB atlas से कनेक्ट करना
निजी सेवा कनेक्शन स्वीकार होने के बाद, 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. फ़ॉलओवर के लिए इस्तेमाल किया जाने वाला MongoDB का ऐक्टिव क्षेत्र, us-west1
फ़ॉलओवर करने से पहले, यह पुष्टि कर लें कि us-west1 प्राइमरी है और us-west2 में दो सेकंडरी नोड हैं.
डेटाबेस → psc-mongodb-uswest1-uswest2 → खास जानकारी पर जाएं
नीचे दिए गए सेक्शन में, us-west1 में मौजूद vm1 में लॉग इन करें. इसके बाद, us-west1 में मौजूद प्राइमरी MongoDB क्लस्टर क्षेत्र को फ़ेलओवर करें और पुष्टि करें कि us-west2 में मौजूद MongoDB क्लस्टर से अब भी डेटाबेस को ऐक्सेस किया जा सकता है.
Atlas के यूज़र इंटरफ़ेस (यूआई) से, प्राइमरी और रीजनल फ़ॉलओवर, दोनों की जांच की जा सकती है.
- Atlas के यूज़र इंटरफ़ेस (यूआई) में लॉग इन करें.
- अपने क्लस्टर के नाम, psc-mongodb-uswest1-uswest2 के बगल में मौजूद [...] पर क्लिक करें → रुकावट की जांच करें.
- क्षेत्र के हिसाब से सेवा बंद होने की जानकारी चुनें → क्षेत्र चुनें.
- मुख्य क्षेत्र, us-west1 चुनें→ क्षेत्र के हिसाब से रुकावट का अनुकरण करें.
क्लस्टर चुनने के तीन से चार मिनट बाद, आपको रुकावट का सिम्युलेशन दिखेगा
विंडो बंद करें
पुष्टि करें कि 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
पुष्टि हो गई: आपने पुष्टि कर ली है कि पीएससी के ग्लोबल ऐक्सेस की मदद से, सभी इलाकों में उपभोक्ता के एंडपॉइंट को आसानी से कनेक्ट किया जा सकता है. इससे, ज़्यादा अपटाइम या क्षेत्र के हिसाब से होने वाली रुकावटों से मदद मिलती है. कोडलैब में, us-west1 में मौजूद प्राइमरी नोड में MongoDB रीजनल फ़ॉलओवर हुआ. इसलिए, सेकंडरी क्षेत्र us-west2 ने प्राइमरी की जगह ले ली. क्लस्टर की वजह से क्षेत्रीय स्तर पर रुकावट आई, लेकिन us-west1 में मौजूद उपभोक्ता वीएम1, 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 के यूज़र इंटरफ़ेस (यूआई) से, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं → 'बंद करें' चुनें
13. बधाई हो
बधाई हो, आपने Private Service Connect एंडपॉइंट को कॉन्फ़िगर कर लिया है और उसकी पुष्टि कर ली है. साथ ही, आपने सभी इलाकों में MongoDB का ग्लोबल ऐक्सेस भी हासिल कर लिया है. आपने उपभोक्ता VPC, एक से ज़्यादा क्षेत्रों वाला MongoDB, और उपभोक्ता एंडपॉइंट बना लिया है. क्षेत्रीय फ़ॉलओवर के बाद, us-west1 में मौजूद एक वर्चुअल मशीन (VM), 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 क्या है?
- इस्तेमाल किए जा सकने वाले लोड बैलेंसर टाइप