Private Service Connect की मदद से, कई इलाकों के हिसाब से MongoDB Atlas को ऐक्सेस करना

1. परिचय

Private Service Connect (PSC) की मदद से, सेवाओं को सुरक्षित और निजी तौर पर इस्तेमाल करना आसान हो जाता है. इस मॉडल की मदद से, सेवाओं के उपभोक्ता अलग-अलग संगठनों के सेवा देने वालों से निजी तौर पर कनेक्ट कर सकते हैं. इससे नेटवर्क आर्किटेक्चर को आसानी से मैनेज किया जा सकता है. साथ ही, वर्चुअल प्राइवेट क्लाउड पीयरिंग की ज़रूरत भी नहीं पड़ती. पहली इमेज में, VPC पीयरिंग और पीएससी एट्रिब्यूट दिखाए गए हैं.

पहली इमेज. 4f9551fc32ed83f5.png

सेवा का इस्तेमाल करने वाले के तौर पर, आपको यह चुनने की सुविधा मिलती है कि सेवाओं को निजी आईपी कैसे असाइन किए जाएं. साथ ही, आपको प्रोड्यूसर 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. आपको क्या बनाना है

  1. एक से ज़्यादा क्षेत्रों वाला MongoDB Atlas क्लस्टर (दूसरी इमेज में दिखाया गया टॉपोलॉजी) बनाया जाएगा. इसमें us-west1 क्षेत्र में एक और us-west2 क्षेत्र में दो नोड होंगे.
  2. us-west1 और us-west2 में MongoDB क्लस्टर को ऐक्सेस करने के लिए, उपभोक्ता वीपीएन और उससे जुड़ा वीएम.
  3. us-west1 और us-west2 क्षेत्रों में एक वीपीसी और दो सबनेट, जिनमें हर सबनेट में कम से कम 64 मुफ़्त आईपी पते हों. /26 और उससे पहले के सबनेट बनाएं.

MongoDB क्लाइंट, उपभोक्ता वीपीसी में vm1 पर इंस्टॉल किया जाएगा. जब us-west1 में प्राइमरी नोड काम नहीं करेगा, तब क्लाइंट us-west2 में नए प्राइमरी नोड से पढ़/लिख सकेगा.

दूसरी इमेज. ab6c2791514c4481.png

आपको क्या सीखने को मिलेगा

  • दो इलाकों में डिप्लॉय किया गया 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 की सदस्यता लेने के बाद, नीचे दिखाए गए तरीके से 'डेटाबेस बनाएं' बटन पर क्लिक करें.

796f5bda844bf400.png

  • नया क्लस्टर बनाएं → खास तौर पर

56c340661d86962c.png

  • क्लाउड की सेवा देने वाली कंपनी और क्षेत्र → Google Cloud
  • एक से ज़्यादा क्लाउड, एक से ज़्यादा क्षेत्र, और वर्कलोड अलग करना → चुना गया (नीले रंग का सही का निशान)

6c10293ffd9814ae.png

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

e652bd944d785871.png

  • क्लस्टर टीयर → M10, बाकी सभी सेटिंग को डिफ़ॉल्ट पर रहने दें

ffa0195b96c2c5ff.png

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

3720fb8c15ba5cc2.png

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

ec5e3e6983c02e27.png

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

d75778d5abf484aa.png

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

1f0ec6a401578650.png

7. us-west1 के लिए निजी एंडपॉइंट बनाना

  • अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.

किसी भी डेटाबेस को पढ़ने/लिखने का ऐक्सेस देने के लिए नया उपयोगकर्ता बनाना

सुरक्षा → डेटाबेस ऐक्सेस में जाकर, डेटाबेस का नया उपयोगकर्ता जोड़ें को चुनें. यहां एक उदाहरण दिया गया है, जिसमें उपयोगकर्ता नाम और पासवर्ड को codelab के तौर पर कॉन्फ़िगर किया गया है. पक्का करें कि आपने किसी भी डेटाबेस में, पहले से मौजूद 'रोल' के लिए, 'रीड' और 'राइट' ऐक्सेस चुना हो.

f622ab14ddc96fc7.png

  • सुरक्षा → नेटवर्क ऐक्सेस में जाकर, आईपी ऐक्सेस सूची में कोई एंट्री डालने की ज़रूरत नहीं है

MongoDB Atlas में निजी एंडपॉइंट तैयार करना

  • नेटवर्क ऐक्सेस → निजी एंडपॉइंट → खास क्लस्टर → निजी एंडपॉइंट जोड़ें 88f5c1d9ae7e46d9.png को चुनें

क्लाउड की सेवा देने वाली कंपनी

  • Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें

5503248bf4019a35.png

सेवा अटैचमेंट

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

cb31aea7cad182f9.png

एंडपॉइंट

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

21d76af5367832f4.png

एंडपॉइंट सेट अप करना

नीचे दिए गए सेक्शन में एक शेल स्क्रिप्ट जनरेट की जाती है. इसे setup_psc.sh नाम से सेव किया जाना चाहिए. सेव होने के बाद, psc के लिए ग्लोबल ऐक्सेस देने के लिए शेल स्क्रिप्ट में बदलाव करें. Google Cloud प्रोजेक्ट के Cloud Shell में जाकर, यह कार्रवाई की जा सकती है.

  • शेल स्क्रिप्ट का उदाहरण, आपके आउटपुट में अलग-अलग वैल्यू होंगी

5c80cf7315a05c25.png

  • 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 एडिटर का इस्तेमाल करें.

2856802dd6497f51.png b0059dc8e1558891.png

JSON फ़ाइल अपलोड करना

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

बनाएं को चुनें

Private Service Connect के एंडपॉइंट की पुष्टि करना

MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं. टैब, खास क्लस्टर चुनने के बाद, एंडपॉइंट को 'उपलब्ध है' पर ट्रांज़िशन होने में 10 मिनट लगेंगे.

उपलब्धता की स्थिति

972aff09d180d9de.png

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

5472dd938604b3.png

8. us-west2 के लिए निजी एंडपॉइंट बनाना

  • अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.

MongoDB Atlas में निजी एंडपॉइंट तैयार करना

  • नेटवर्क ऐक्सेस → निजी एंडपॉइंट → खास क्लस्टर → निजी एंडपॉइंट जोड़ें 88f5c1d9ae7e46d9.png को चुनें

क्लाउड की सेवा देने वाली कंपनी

  • Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें

5503248bf4019a35.png

सेवा अटैचमेंट

  • क्षेत्र, us-west2 चुनें. इसके बाद, आगे बढ़ें

fc0b7a8e4274be3b.png

एंडपॉइंट

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

17b5a056587ede8a.png

एंडपॉइंट सेट अप करना

नीचे दिए गए सेक्शन में एक शेल स्क्रिप्ट जनरेट की जाती है. इसे setup_psc.sh नाम से सेव किया जाना चाहिए. सेव करने के बाद, psc के लिए ग्लोबल ऐक्सेस देने के लिए शेल स्क्रिप्ट में बदलाव करें. Google Cloud प्रोजेक्ट के Cloud Shell में जाकर, यह कार्रवाई की जा सकती है.

  • शेल स्क्रिप्ट का उदाहरण, आपके आउटपुट में अलग-अलग वैल्यू होंगी

b021821e7d59f450.png

  • 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 एडिटर का इस्तेमाल करें.

2856802dd6497f51.png 6e3d944944718f13.png

JSON फ़ाइल अपलोड करना

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

बनाएं को चुनें

Private Service Connect के एंडपॉइंट की पुष्टि करना

MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं. टैब, खास क्लस्टर, और एंडपॉइंट को 10 मिनट के बाद उपलब्ध के तौर पर ट्रांज़िशन करने का विकल्प चुनना.

उपलब्धता का स्टेटस:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

9. निजी एंडपॉइंट से MongoDB atlas से कनेक्ट करना

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

कनेक्शन का टाइप चुनें → निजी एंडपॉइंट, कनेक्शन का तरीका चुनें

16a9090e495640c7.png

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

35e422af16cb5ce0.png

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

51be47403c00bab4.png

10. mongosh ऐप्लिकेशन इंस्टॉल करना

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

कनेक्ट करने का तरीका चुनें: पहला चरण, डाउनलोड करने का यूआरएल कॉपी करना

5da980ff86265dd8.png

निर्देश स्ट्रिंग का उदाहरण, अपनी कस्टम वैल्यू से बदलें:

https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb

तीसरा चरण: कनेक्शन का तरीका चुनना.

698286bdf3dee3c7.png

निर्देश स्ट्रिंग का उदाहरण, अपनी कस्टम वैल्यू से बदलें:

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

उदाहरण के लिए:

d5d0324a273b4d5e.png

डेटाबेस के लिए निर्देशों को लागू करना

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 → खास जानकारी पर जाएं

64ca0395807bb3ac.png

नीचे दिए गए सेक्शन में, us-west1 में मौजूद vm1 में लॉग इन करें. इसके बाद, us-west1 में मौजूद प्राइमरी MongoDB क्लस्टर क्षेत्र को फ़ेलओवर करें और पुष्टि करें कि us-west2 में मौजूद MongoDB क्लस्टर से अब भी डेटाबेस को ऐक्सेस किया जा सकता है.

Atlas के यूज़र इंटरफ़ेस (यूआई) से, प्राइमरी और रीजनल फ़ॉलओवर, दोनों की जांच की जा सकती है.

  • Atlas के यूज़र इंटरफ़ेस (यूआई) में लॉग इन करें.
  • अपने क्लस्टर के नाम, psc-mongodb-uswest1-uswest2 के बगल में मौजूद [...] पर क्लिक करें → रुकावट की जांच करें.

3a50da4381817975.png

  • क्षेत्र के हिसाब से सेवा बंद होने की जानकारी चुनें → क्षेत्र चुनें.

b8dfff376477bcbb.png

  • मुख्य क्षेत्र, us-west1 चुनें→ क्षेत्र के हिसाब से रुकावट का अनुकरण करें.

76494a750a040bc5.png

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

विंडो बंद करें

3a9f0359bd4e288f.png

bac1b2db0d754bbf.png

पुष्टि करें कि us-west1 बंद है और us-west2 को अब प्राइमरी के तौर पर इस्तेमाल किया जा रहा है

डेटाबेस → psc-mongodb-uswest1-uswest2 → खास जानकारी पर जाएं

86fd7d5230715645.png

नए प्राइमरी, 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

उदाहरण के लिए:

d262800a557b41a3.png

डेटाबेस के लिए निर्देशों को लागू करना

Cloud Shell में लॉग इन करने के बाद, ये काम करें.

show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()

exit

20c2571d84c0661d.png

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

12. साफ़-सफ़ाई सेवा

Cloud Console से, उपभोक्ता एंडपॉइंट मिटाएं

नेटवर्क सेवाएं → Private Service Connect → कनेक्ट किए गए एंडपॉइंट पर जाएं

psc-endpoint फ़िल्टर का इस्तेमाल करके, ऐसे उपभोक्ता एंडपॉइंट को मिटाने से रोकें जो लैब में नहीं हैं. सभी एंडपॉइंट चुनें → मिटाएं

192548e374b444a1.png

कंज्यूमर एंडपॉइंट से जुड़े स्टैटिक इंटरनल आईपी पते मिटाना

VPC नेटवर्क → consumer-vpc → स्टैटिक इंटरनल आईपी पते पर जाएं

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

4cebf164c4fecd83.png

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 की पहचान करें → सिम्युलेशन खत्म करें

f82e28ac984d9e20.png

'डाउनटाइम का सिम्युलेशन खत्म करें' —> 'बाहर निकलें' चुनें

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

us-west1 और us-west2 से जुड़े निजी एंडपॉइंट को मिटाना

Atlas के यूज़र इंटरफ़ेस (यूआई) से, सुरक्षा → नेटवर्क ऐक्सेस → निजी एंडपॉइंट पर जाएं → 'बंद करें' चुनें

56415ea954b2fec9.png

13. बधाई हो

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

Cosmopup को लगता है कि कोडलैब शानदार हैं!!

8c2a10eb841f7b01.jpeg

आगे क्या करना है?

इनमें से कुछ कोडलैब देखें...

ज़्यादा पढ़ने के लिए लेख और वीडियो

रेफ़रंस दस्तावेज़