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

1. परिचय

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

पहली इमेज. 4f9551fc32ed83f5.png अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है

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

इस कोडलैब में, एक बेहतर Private Service Connect आर्किटेक्चर बनाया जा रहा है. इसमें, MongoDB एटलस के साथ PSC ग्लोबल ऐक्सेस के इस्तेमाल के बारे में बताया गया है.

ग्लोबल ऐक्सेस की मदद से, क्लाइंट हर इलाके के लिए 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 क्लस्टर ऐक्सेस करने के लिए उपभोक्ता VPC और उससे जुड़ा वीएम.
  3. एक VPC और us-west2 वाले क्षेत्र में दो सबनेट हों, जिनके हर सबनेट में कम से कम 64 मुफ़्त आईपी पते हों (/26 और उससे पहले के सबनेट बनाएं).

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

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

आप इन चीज़ों के बारे में जानेंगे

  • दो क्षेत्रों में डिप्लॉय किए गए VPC और सबनेट को बनाने का तरीका
  • एक से ज़्यादा इलाकों वाले MongoDB एटलस क्लस्टर को डिप्लॉय करने का तरीका
  • निजी एंडपॉइंट बनाने का तरीका
  • MongoDB से कनेक्ट करने का तरीका
  • एक से ज़्यादा क्षेत्रों के MongoDB फ़ेलओवर को लागू और उसकी पुष्टि करने का तरीका

आपको इन चीज़ों की ज़रूरत होगी

  • Google Cloud प्रोजेक्ट
  • हर क्षेत्र के लिए /26 सबनेट दें
  • प्रोजेक्ट के मालिक या संगठन के मालिक को MongoDB Atlas का ऐक्सेस मिलता है, ताकि क्लस्टर टीयर M10 या उसके बाद के वर्शन वाला MongoDB क्लस्टर बनाया जा सके. (पीओवी चलाने के लिए मुफ़्त क्रेडिट पाने के लिए, कृपया 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 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 बनाना होगा.

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

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 क्लस्टर बनाएं

  • PSC का सेटअप शुरू करने से पहले, हमें Atlas क्लस्टर सेट अप करना होगा. आप नीचे दिए गए दो तरीकों में से किसी एक का इस्तेमाल करके MongoDB Atlas की सदस्यता ले सकते हैं:
  • अगर आपके पास Google Cloud खाता है, तो Google Cloud Marketplace के ज़रिए. सदस्यता सेट अप करने के लिए दस्तावेज़ देखें.
  • Atlas के रजिस्ट्रेशन पेज से.
  • Atlas Click on a Database बटन की सदस्यता लेने के बाद, नीचे दिया गया तरीका अपनाएं.

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 खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.

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

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

f622ab14ddc96fc7.png

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

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

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

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

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

5503248bf4019a35.png

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

  • क्षेत्र चुनें, us-west1 और फिर आगे का विकल्प चुनें

cb31aea7cad182f9.png

एंडपॉइंट

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

21d76af5367832f4.png

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

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

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

5c80cf7315a05c25.png

  • MongoBD कंसोल से शेल स्क्रिप्ट कॉपी करें और Google 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

ग्लोबल ऐक्सेस की सुविधा देने के लिए शेल स्क्रिप्ट अपडेट करना

शेल स्क्रिप्ट की पहचान करने और उसे नीचे दिए गए सिंटैक्स के साथ अपडेट करने के लिए नैनो या 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 यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → प्राइवेट एंडपॉइंट पर जाएं. टैब यानी खास क्लस्टर को चुनने से, एंडपॉइंट के उपलब्ध होने तक ट्रांज़िशन में 10 मिनट लगेंगे.

उपलब्ध स्थिति

972aff09d180d9de.png

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

5472dd938604b3.png

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

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

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

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

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

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

5503248bf4019a35.png

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

  • क्षेत्र चुनें, us-west2 और फिर अगला

fc0b7a8e4274be3b.png

एंडपॉइंट

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

17b5a056587ede8a.png

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

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

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

b021821e7d59f450.png

  • MongoBD कंसोल से शेल स्क्रिप्ट कॉपी करें और Google 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

ग्लोबल ऐक्सेस की सुविधा देने के लिए शेल स्क्रिप्ट अपडेट करना

शेल स्क्रिप्ट की पहचान करने और उसे नीचे दिए गए सिंटैक्स के साथ अपडेट करने के लिए नैनो या 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

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

उपलब्ध स्थिति:

8801df4f6b39d20a.png

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

6131abcdef5c1f49.png

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

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

c1524d2c0c5765d1.png

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

3eea96af20bfad20.png

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

16a9090e495640c7.png

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

35e422af16cb5ce0.png

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

51be47403c00बाबा4.png

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

इंस्टॉलेशन से पहले, आपको चरण 1 और 3 में मिली पहले से कॉपी की गई वैल्यू के आधार पर एक कमांड स्ट्रिंग बनानी होगी. इसके बाद, Cloud Shell का इस्तेमाल करके vm1 में साइन इन किया जाएगा. इसके बाद, mongosh ऐप्लिकेशन को इंस्टॉल किया जाएगा और प्राइमरी (us-west1) डेटाबेस की पुष्टि की जाएगी. उपभोक्ता-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 os लॉगिन से इंस्टॉल करें, ज़्यादा जानकारी उपलब्ध है, और अपनी कस्टम स्ट्रिंग के साथ नीचे सिंटैक्स अपडेट करें

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 ओएस लॉगिन के अंदर, यह तरीका अपनाएं. कॉन्फ़िगर किया गया उपयोगकर्ता नाम और पासवर्ड, कोडलैब है.

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 में लॉग इन करें. प्राइमरी MongoDB क्लस्टर हमें-west1 पर फ़ेलओवर किया गया. साथ ही, पुष्टि की गई कि डेटाबेस को 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

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

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

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

नेटवर्क की सेवाओं पर जाएं → Private Service Connect → कनेक्ट किया गया ENDPOINTS

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

192548e374b444a1.png

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

VPC नेटवर्क पर जाएं → उपभोक्ता-वीपीसी→ इंटरनल आईपी पतों के आंकड़े

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

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. बधाई हो

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

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

8c2a10eb841f7b01.jpeg

आगे क्या होगा?

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

आगे पढ़ें और वीडियो

पहचान फ़ाइलें