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

1. परिचय

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

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

सेवा का इस्तेमाल करने वाले के तौर पर, आपके पास यह तय करने का विकल्प होता है कि सेवाओं के लिए अपने निजी आईपी कैसे असाइन किए जाएं. साथ ही, इससे आपको प्रोड्यूसर वीपीसी के लिए सबनेट रेंज मैनेज करने की ज़रूरत नहीं पड़ती. अब आपके पास, सेवा कनेक्ट करने की सुविधा का इस्तेमाल करके, अपनी वीपीसी से किसी सेवा को चुना गया वर्चुअल आईपी असाइन करने का विकल्प है.

इस कोडलैब में, आपको 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. आपको क्या बनाना है

  1. एक से ज़्यादा क्षेत्रों वाला MongoDB Atlas क्लस्टर बनाया जाएगा. इसकी टोपोलॉजी, इमेज 2 में दिखाई गई है. इसमें 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

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

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

796f5bda844bf400.png

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

56c340661d86962c.png

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

6c10293ffd9814ae.png

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

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • 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 को स्थानीय तौर पर डाउनलोड करें.

2856802dd6497f51.png b0059dc8e1558891.png

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

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

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

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

MongoDB के यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, Security → Network access → Private endpoint पर जाएं. टैब, खास तौर पर बनाए गए क्लस्टर, और उपलब्ध एंडपॉइंट पर जाने में 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 प्रोजेक्ट आईडी: ज़्यादा जानकारी के लिए, ‘निर्देश दिखाएं' चुनें
  • VPC का नाम: consumer-vpc
  • सबनेट का नाम: psc-endpoint-us-west2
  • Private Service Connect एंडपॉइंट प्रीफ़िक्स: psc-endpoint-us-west2

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • 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 को स्थानीय तौर पर डाउनलोड करें.

2856802dd6497f51.png 6e3d944944718f13.png

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

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

3a74e8d9952d793a.png

4938fd8256eb81b4.png

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

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

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

उपलब्ध स्टेटस:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

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

Private Service Connections स्वीकार किए जाने के बाद, 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. us-west1 में MongoDB का फ़ेलओवर ऐक्टिव है

फ़ेलओवर करने से पहले, आइए पुष्टि कर लें कि 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 → Test Outage.

3a50da4381817975.png

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

b8dfff376477bcbb.png

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

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

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

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

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

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

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

192548e374b444a1.png

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

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 UI में, क्लस्टर psc-mongodb-uswest1-uswest2 → सिम्युलेशन खत्म करें

f82e28ac984d9e20.png

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

38feaf055abdceea.png

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

f249a61bcc966d41.png

9427a9349daa1fea.png

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

9ef6d3a6387c5b4b.png

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

Atlas के यूज़र इंटरफ़ेस (यूआई) में, Security → Network Access → Private Endpoint पर जाएं → Terminate चुनें

56415ea954b2fec9.png

13. बधाई हो

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

Cosmopup को कोडलैब बहुत पसंद हैं!!

8c2a10eb841f7b01.jpeg

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

यहां दिए गए कुछ कोडलैब आज़माएं...

ज़्यादा जानकारी और वीडियो

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