1. परिचय
Private Service Connect (PSC) की मदद से, यह आसानी से समझा जा सकता है कि सेवाओं को सुरक्षित और निजी तौर पर कैसे इस्तेमाल किया जाए. इस मॉडल की मदद से, सेवा इस्तेमाल करने वाले लोगों को अलग-अलग संगठनों के सेवा प्रोड्यूसर से निजी तौर पर कनेक्ट करने में मदद मिलती है. साथ ही, वर्चुअल प्राइवेट क्लाउड पीयरिंग की ज़रूरत नहीं पड़ती. इमेज 1 में, VPC पीयरिंग और पीएससी एट्रिब्यूट की जानकारी दी गई है.
पहली इमेज. अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
सेवा उपभोक्ता के तौर पर, इससे आपको यह चुनने की सुविधा मिलती है कि सेवाओं के लिए अपने निजी आईपी कैसे असाइन किए जाएं. साथ ही, प्रोड्यूसर 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. आपको क्या बनाना होगा
- एक से ज़्यादा क्षेत्रों वाला MongoDB Atlas क्लस्टर (इमेज2 में बताया गया टोपोलॉजी), us-west1 में एक नोड के साथ और us-west2 वाले क्षेत्रों में दो नोड के साथ बनाया जाएगा.
- us-west1 और us-west2 में MongoDB क्लस्टर ऐक्सेस करने के लिए उपभोक्ता VPC और उससे जुड़ा वीएम.
- एक VPC और us-west2 वाले क्षेत्र में दो सबनेट हों, जिनके हर सबनेट में कम से कम 64 मुफ़्त आईपी पते हों (/26 और उससे पहले के सबनेट बनाएं).
MongoDB क्लाइंट को उपभोक्ता vpc में vm1 पर इंस्टॉल किया जाएगा. जब us-west1 में प्राथमिक नोड काम नहीं करता है, तो क्लाइंट us-west2 के नए प्राथमिक नोड को पढ़/लिख पाएगा.
दूसरी इमेज.
आप इन चीज़ों के बारे में जानेंगे
- दो क्षेत्रों में डिप्लॉय किए गए 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 बटन की सदस्यता लेने के बाद, नीचे दिया गया तरीका अपनाएं.
- नया क्लस्टर बनाएं → खास तौर पर
- क्लाउड सेवा देने वाली कंपनी और क्षेत्र → Google Cloud
- मल्टी-क्लाउड, मल्टी-रीजनल और वर्कलोड आइसोलेशन → चुना गया (ब्लू चेक)
- चुने जा सकने वाले नोड → us-west1 (1 नोड), us-west2 (2 नोड)
- क्लस्टर टियर → M10, अन्य सभी सेटिंग को डिफ़ॉल्ट के तौर पर रहने दें
- क्लस्टर का नाम → psc-mongodb-uswest1-uswest2
- चुनें → क्लस्टर बनाएं
- डेटाबेस बनाने में 7 से 10 मिनट लगते हैं
डिप्लॉय किए जाने के बाद क्लस्टर का व्यू
7. us-west1 के लिए निजी एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
किसी भी डेटाबेस को पढ़ने/लिखने का ऐक्सेस देने के लिए, नया उपयोगकर्ता बनाना
सुरक्षा → डेटाबेस ऐक्सेस चुनें नया डेटाबेस उपयोगकर्ता जोड़ें. यहां कोडलैब के तौर पर कॉन्फ़िगर किया गया उपयोगकर्ता नाम और पासवर्ड का उदाहरण दिया गया है. पहले से मौजूद, किसी भी डेटाबेस में भूमिका पढ़ने और लिखने का विकल्प चुनना न भूलें.
- सुरक्षा → नेटवर्क ऐक्सेस में जाकर, आईपी ऐक्सेस सूची के लिए एंट्री की ज़रूरत नहीं होती
MongoDB Atlas में निजी एंडपॉइंट तैयार करना
- चुनें, नेटवर्क का ऐक्सेस → निजी एंडपॉइंट → डेडिकेटेड क्लस्टर → निजी एंडपॉइंट जोड़ें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें
सेवा अटैचमेंट
- क्षेत्र चुनें, us-west1 और फिर आगे का विकल्प चुनें
एंडपॉइंट
- निजी सेवा से कनेक्ट करने वाले एंडपॉइंट को बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: 'निर्देश दिखाएं' चुनें जानकारी के लिए
- VPC का नाम: Consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west1
- निजी सेवा कनेक्ट एंडपॉइंट प्रीफ़िक्स: psc-endpoint-us-west1
एंडपॉइंट सेट अप करना
नीचे दिए गए सेक्शन में, एक शेल स्क्रिप्ट जनरेट की गई है. इसे सेटअप_psc.sh नाम से डिफ़ॉल्ट तौर पर सेव किया जाना चाहिए. सेव हो जाने पर, पीएससी ग्लोबल ऐक्सेस की अनुमति देने के लिए शेल स्क्रिप्ट में बदलाव करें. Google Cloud प्रोजेक्ट Cloud Shell में यह कार्रवाई की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण, आपके आउटपुट में अलग-अलग वैल्यू होंगी
- 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 को स्थानीय तौर पर डाउनलोड करें.
JSON फ़ाइल अपलोड करना
पहले से सेव की गई JSON फ़ाइल atlasEndpoints-psc-endpoint-us-west1.json अपलोड करें
'बनाएं' को चुनें
Private Service Connect के एंडपॉइंट की पुष्टि करना
MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → प्राइवेट एंडपॉइंट पर जाएं. टैब यानी खास क्लस्टर को चुनने से, एंडपॉइंट के उपलब्ध होने तक ट्रांज़िशन में 10 मिनट लगेंगे.
उपलब्ध स्थिति
Google Cloud Console में, Network services → Private Services Connect पर जाएं. इसके बाद, 'कनेक्टेड एंडपॉइंट' टैब को चुनें. इस टैब में, उपभोक्ता के एंडपॉइंट को ट्रांज़िशन करते हुए दिखाने की मंज़ूरी मिलनी बाकी है → स्वीकार किया गया दिखाया गया है. इसका उदाहरण नीचे दिया गया है:
8. us-west2 के लिए निजी एंडपॉइंट बनाना
- अपने Atlas खाते में लॉग-ऑन करें और अपने प्रोजेक्ट पर जाएं.
MongoDB Atlas में निजी एंडपॉइंट तैयार करना
- चुनें, नेटवर्क का ऐक्सेस → निजी एंडपॉइंट → डेडिकेटेड क्लस्टर → निजी एंडपॉइंट जोड़ें
क्लाउड की सेवा देने वाली कंपनी
- Google Cloud चुनें. इसके बाद, 'आगे बढ़ें' को चुनें
सेवा अटैचमेंट
- क्षेत्र चुनें, us-west2 और फिर अगला
एंडपॉइंट
- निजी सेवा से कनेक्ट करने वाले एंडपॉइंट को बनाने के लिए, यह जानकारी दें:
- Google Cloud प्रोजेक्ट आईडी: 'निर्देश दिखाएं' चुनें जानकारी के लिए
- VPC का नाम: Consumer-vpc
- सबनेट का नाम: psc-endpoint-us-west2
- निजी सेवा कनेक्ट एंडपॉइंट प्रीफ़िक्स: psc-endpoint-us-west2
एंडपॉइंट सेट अप करना
नीचे दिए गए सेक्शन में, एक शेल स्क्रिप्ट जनरेट की गई है. इसे सेटअप_psc.sh नाम से डिफ़ॉल्ट तौर पर सेव किया जाना चाहिए. सेव हो जाने पर, पीएससी ग्लोबल ऐक्सेस की अनुमति देने के लिए शेल स्क्रिप्ट में बदलाव करें. Google Cloud प्रोजेक्ट Cloud Shell में यह कार्रवाई की जा सकती है.
- शेल स्क्रिप्ट का उदाहरण, आपके आउटपुट में अलग-अलग वैल्यू होंगी
- 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 को स्थानीय तौर पर डाउनलोड करने के लिए क्लाउड शेल एडिटर का इस्तेमाल करें.
JSON फ़ाइल अपलोड करना
पहले से सेव की गई JSON फ़ाइल atlasEndpoints-psc-endpoint-us-west2.json अपलोड करें
'बनाएं' को चुनें
Private Service Connect के एंडपॉइंट की पुष्टि करें
MongoDB यूज़र इंटरफ़ेस (यूआई) में, अपने प्रोजेक्ट पर जाएं. इसके बाद, सुरक्षा → नेटवर्क ऐक्सेस → प्राइवेट एंडपॉइंट पर जाएं. टैब यानी कि खास क्लस्टर को चुना जा रहा है और 10 मिनट के बाद एंडपॉइंट ट्रांज़िशन उपलब्ध हो जाएगा.
उपलब्ध स्थिति:
Google Cloud Console में, Network services → Private Services Connect पर जाएं. इसके बाद, 'कनेक्ट किए गए एंडपॉइंट' टैब को चुनें. इसमें उपभोक्ता के एंडपॉइंट को ट्रांज़िशन करते हुए दिखाया गया है → स्वीकार किया गया है, जिसका उदाहरण नीचे दिया गया है. उपभोक्ता एंडपॉइंट में कुल 100 एंडपॉइंट डिप्लॉय किए जाते हैं और अगले चरण पर जाने से पहले, 'स्वीकार की गई' पर स्विच करना ज़रूरी है.
9. निजी एंडपॉइंट से MongoDB एटलस से कनेक्ट करें
निजी सेवा कनेक्शन स्वीकार किए जाने के बाद, MongoDB क्लस्टर को अपडेट करने के लिए, अतिरिक्त समय (10-15 मिनट) की ज़रूरत होती है. MongoDB यूज़र इंटरफ़ेस (यूआई) में, स्लेटी रंग की आउटलाइन, क्लस्टर के अपडेट को दिखाती है. इसलिए, निजी एंडपॉइंट से कनेक्ट करने की सुविधा उपलब्ध नहीं होती.
डिप्लॉयमेंट की पहचान करें और 'कनेक्ट करें' को चुनें (ध्यान दें कि स्लेटी रंग का बॉक्स अब मौजूद नहीं है)
कनेक्शन का टाइप चुनें → प्राइवेट एंडपॉइंट, कनेक्शन का तरीका चुनें को चुनें
MongoDB Shell के साथ कनेक्ट करें को चुनें
चुनें, मेरे पास MongoDB Shell इंस्टॉल नहीं है, Ubuntu 20.4 इंस्टॉल है, और चरण 1 और चरण 3 की सामग्री को नोटपैड पर कॉपी करना पक्का करना न भूलें.
10. mongosh ऐप्लिकेशन इंस्टॉल करें
इंस्टॉलेशन से पहले, आपको चरण 1 और 3 में मिली पहले से कॉपी की गई वैल्यू के आधार पर एक कमांड स्ट्रिंग बनानी होगी. इसके बाद, Cloud Shell का इस्तेमाल करके vm1 में साइन इन किया जाएगा. इसके बाद, mongosh ऐप्लिकेशन को इंस्टॉल किया जाएगा और प्राइमरी (us-west1) डेटाबेस की पुष्टि की जाएगी. उपभोक्ता-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 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
उदाहरण के लिए:
डेटाबेस के हिसाब से कमांड एक्ज़ीक्यूट करें
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 में लॉग इन करें. प्राइमरी MongoDB क्लस्टर हमें-west1 पर फ़ेलओवर किया गया. साथ ही, पुष्टि की गई कि डेटाबेस को 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
सफलता मिली: आपने इस बात की पुष्टि की है कि पीएससी का ग्लोबल ऐक्सेस, सभी क्षेत्रों में उपभोक्ता एंडपॉइंट कनेक्टिविटी की सुविधा देता है. इससे प्रॉडक्ट की उपलब्धता ज़्यादा होने या देश/इलाके में कुछ समय के लिए सेवाएं उपलब्ध न होने की वजह से हो सकता है. कोडलैब में, MongoDB रीजनल फ़ेलओवर us-west1 पर मौजूद मुख्य नोड में हुआ. इसलिए, दूसरे क्षेत्र us-west2 ने प्राइमरी नोड की जगह ले ली. हालांकि, क्लस्टर की वजह से क्षेत्र के हिसाब से कुछ समय के लिए सेवाएं उपलब्ध नहीं हुईं, लेकिन us-west1 पर मौजूद उपभोक्ता vm1, us-west2 के नए प्राइमरी क्लस्टर में पहुंच गया.
12. साफ़-सफ़ाई सेवा
Cloud Console से, उपभोक्ता के एंडपॉइंट मिटाएं
नेटवर्क की सेवाओं पर जाएं → Private Service Connect → कनेक्ट किया गया ENDPOINTS
psc-endpoint फ़िल्टर का इस्तेमाल करके, गैर-लैब उपभोक्ता एंडपॉइंट को मिटाए जाने की संभावना को खत्म करें. सभी एंडपॉइंट चुनें → मिटाएं
उपभोक्ता एंडपॉइंट से जुड़े स्टैटिक इंटरनल आईपी पते मिटाएं
VPC नेटवर्क पर जाएं → उपभोक्ता-वीपीसी→ इंटरनल आईपी पतों के आंकड़े
गैर-लैब उपभोक्ता एंडपॉइंट को मिटाए जाने की संभावना को हटाने और हर पेज की पंक्तियों की संख्या को 100 तक बढ़ाने के लिए, फ़िल्टर psc-endpoint का इस्तेमाल करें. सभी एंडपॉइंट चुनें → रिलीज़ करें
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. बधाई हो
बधाई हो, आपने सभी क्षेत्रों में MongoDB के ग्लोबल ऐक्सेस के साथ Private Service Connect के एंडपॉइंट को कॉन्फ़िगर और पुष्टि कर लिया है. आपने ग्राहक VPC, एक से ज़्यादा क्षेत्रों वाला MongoDB, और उपभोक्ता एंडपॉइंट बना लिए हैं. us-west1 पर मौजूद वर्चुअल मशीन (वीएम) को क्षेत्र के फ़ेलओवर पर us-west1 और us-west2 दोनों में MongoDB से कनेक्ट किया गया.
Cosmopup को लगता है कि कोडलैब शानदार हैं!!
आगे क्या होगा?
इनमें से कुछ कोडलैब देखें...
- GKE की मदद से सेवाएं पब्लिश करने और उनका इस्तेमाल करने के लिए, Private Service Connect का इस्तेमाल करना
- सेवाएं पब्लिश करने और उनका इस्तेमाल करने के लिए, Private Service Connect का इस्तेमाल करना
- प्राइवेट सर्विस कनेक्ट और इंटरनल टीसीपी प्रॉक्सी लोड बैलेंसर का इस्तेमाल करके, हाइब्रिड नेटवर्किंग की मदद से कंपनी की ऑन-प्रेम सेवाओं से कनेक्ट करें
- अपने-आप काम करने वाले डीएनएस कॉन्फ़िगरेशन के साथ Private Service Connect का इस्तेमाल करना
आगे पढ़ें और वीडियो
- Private Service Connect के बारे में खास जानकारी
- प्राइवेट सर्विस कनेक्ट क्या है?
- इस्तेमाल किए जा सकने वाले लोड बैलेंसर के टाइप