1. ভূমিকা
প্রাইভেট সার্ভিস কানেক্ট (PSC) কীভাবে পরিষেবাগুলি নিরাপদে এবং ব্যক্তিগতভাবে ব্যবহার করা হচ্ছে তা সহজ করে। এই মডেলটি পরিষেবা ভোক্তাদের বিভিন্ন সংস্থার পরিষেবা প্রযোজকদের সাথে ব্যক্তিগতভাবে সংযোগ করার অনুমতি দিয়ে নেটওয়ার্ক আর্কিটেকচারকে অত্যন্ত সহজ করে তোলে এবং ভার্চুয়াল প্রাইভেট ক্লাউড পিয়ারিংয়ের প্রয়োজনীয়তা দূর করে৷ চিত্র 1 ভিপিসি পিয়ারিং এবং পিএসসি বৈশিষ্ট্যগুলিকে চিত্রিত করে৷
চিত্র 1.
একটি পরিষেবা ভোক্তা হিসাবে, এটি আপনাকে প্রযোজক VPC-এর জন্য সাবনেট রেঞ্জ পরিচালনার বোঝা অপসারণ করার সময় পরিষেবাগুলিতে আপনার ব্যক্তিগত আইপিগুলি কীভাবে বরাদ্দ করতে হয় তা চয়ন করার নমনীয়তার অনুমতি দেয়। আপনি এখন একটি পরিষেবা সংযোগ ব্যবহার করে এই ধরনের পরিষেবাতে আপনার VPC থেকে একটি নির্বাচিত ভার্চুয়াল আইপি বরাদ্দ করতে পারেন৷
এই কোডল্যাবে, আপনি একটি ব্যাপক প্রাইভেট সার্ভিস কানেক্ট আর্কিটেকচার তৈরি করতে যাচ্ছেন যা MongoDB এটলাসের সাথে PSC গ্লোবাল অ্যাক্সেসের ব্যবহারকে চিত্রিত করে।
গ্লোবাল অ্যাক্সেস ক্লায়েন্টদের আঞ্চলিক সীমানা জুড়ে প্রাইভেট সার্ভিস কানেক্ট (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
পতাকা একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্টে বিশ্বব্যাপী অ্যাক্সেস সক্ষম করে - গ্লোবাল অ্যাক্সেস ক্লায়েন্টকে প্রাইভেট সার্ভিস কানেক্ট ফরওয়ার্ডিং নিয়ম থেকে একটি ভিন্ন অঞ্চলে থাকার অনুমতি দেয়, তবে ফরওয়ার্ডিং নিয়মটি এখনও সেই অঞ্চলে থাকতে হবে যে পরিষেবা সংযুক্তির সাথে এটি সংযুক্ত।
- বিশ্বব্যাপী অ্যাক্সেস সক্ষম করতে প্রযোজকের পরিষেবা সংযুক্তিতে কোনও কনফিগারেশনের প্রয়োজন নেই। এটি সম্পূর্ণরূপে একটি ভোক্তা-সাইড বিকল্প।
বিদ্যমান এন্ডপয়েন্টের জন্য যেকোন সময় গ্লোবাল অ্যাক্সেসও চালু বা বন্ধ করা যেতে পারে। একটি বিদ্যমান এন্ডপয়েন্টে গ্লোবাল অ্যাক্সেস সক্ষম করার সময় সক্রিয় সংযোগগুলির জন্য কোনও ট্র্যাফিক বিঘ্ন নেই.. নিম্নলিখিত কমান্ড সহ একটি বিদ্যমান ফরওয়ার্ডিং-নিয়মে গ্লোবাল অ্যাক্সেস সক্ষম করা হয়েছে:
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. আপনি কি নির্মাণ করব
- একটি বহু-অঞ্চল মঙ্গোডিবি অ্যাটলাস ক্লাস্টার (চিত্র 2 তে বর্ণিত টপোলজি) যথাক্রমে us-west1 এবং us-west2 অঞ্চলে দুটি নোড দিয়ে তৈরি করা হবে।
- us-west1 এবং us-west2-এ MongoDB ক্লাস্টার অ্যাক্সেস করার জন্য একটি ভোক্তা VPC এবং সংশ্লিষ্ট vm।
- একটি ভিপিসি এবং দুটি সাবনেট যথাক্রমে us-west1 এবং us-west2 অঞ্চলে প্রতিটি সাবনেটে কমপক্ষে 64টি বিনামূল্যের IP ঠিকানা সহ (/26 এবং নীচের সাথে সাবনেট তৈরি করুন)।
MongoDB ক্লায়েন্ট ভোক্তা vpc-এ vm1-এ ইনস্টল করা হবে। যখন প্রাইমারি নোড us-west1-এ ব্যর্থ হয়, ক্লায়েন্ট us-west2-এ নতুন প্রাইমারি নোডের মাধ্যমে পড়তে/লিখতে সক্ষম হবে।
চিত্র 2।
আপনি কি শিখবেন
- দুটি অঞ্চলে স্থাপন করা একটি ভিপিসি এবং সাবনেট কীভাবে তৈরি করবেন
- কিভাবে একটি বহু-অঞ্চল মঙ্গোডিবি অ্যাটলাস ক্লাস্টার স্থাপন করবেন
- কিভাবে একটি ব্যক্তিগত শেষ পয়েন্ট তৈরি করতে হয়
- MongoDB এর সাথে কিভাবে সংযোগ করবেন
- মাল্টিরিজিয়ন মঙ্গোডিবি ফেইলওভার কীভাবে সম্পাদন এবং যাচাই করবেন
আপনি কি প্রয়োজন হবে
- গুগল ক্লাউড প্রকল্প
- প্রতি অঞ্চলে একটি /26 সাবনেট প্রদান করুন
- ক্লাস্টার স্তর M10 বা উচ্চতর সহ একটি MongoDB ক্লাস্টার তৈরি করতে প্রকল্পের মালিক বা সংস্থার মালিক MongoDB Atlas-এ অ্যাক্সেস করুন। (PoV চালানোর জন্য বিনামূল্যে ক্রেডিট পেতে GETATLAS ব্যবহার করুন)
4. আপনি শুরু করার আগে
কোডল্যাবকে সমর্থন করার জন্য প্রকল্পটি আপডেট করুন
এই কোডল্যাব ক্লাউড শেল-এ gcloud কনফিগারেশন বাস্তবায়নে সাহায্য করার জন্য $ভেরিয়েবল ব্যবহার করে।
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
5. ভোক্তা সেটআপ
ভোক্তা ভিপিসি তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks create consumer-vpc --project=$projectname --subnet-mode=custom
ভোক্তা সাবনেট তৈরি করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud compute networks subnets create vm-subnet --project=$projectname --range=10.10.10.0/29 --network=consumer-vpc --region=us-west1
ক্লাউড শেলের ভিতরে, 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
ক্লাউড শেলের ভিতরে, 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
ক্লাউড রাউটার এবং NAT কনফিগারেশন
ক্লাউড NAT সফ্টওয়্যার প্যাকেজ ইনস্টলেশনের জন্য কোডল্যাবে ব্যবহার করা হয় যেহেতু VM দৃষ্টান্তগুলির একটি বাহ্যিক IP ঠিকানা নেই।
ক্লাউড শেলের ভিতরে, ক্লাউড রাউটার তৈরি করুন।
gcloud compute routers create consumer-cr --network consumer-vpc --region us-west1
ক্লাউড শেলের ভিতরে, 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 কনফিগারেশন
নিম্নলিখিত বিভাগে, আপনি কম্পিউট ইঞ্জিন উদাহরণ, 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"
IAP কে আপনার VM দৃষ্টান্তের সাথে সংযোগ করার অনুমতি দিতে, একটি ফায়ারওয়াল নিয়ম তৈরি করুন যা:
- আপনি IAP ব্যবহার করে অ্যাক্সেসযোগ্য হতে চান এমন সমস্ত VM দৃষ্টান্তগুলিতে প্রযোজ্য।
- IP পরিসর 35.235.240.0/20 থেকে ট্র্যাফিক প্রবেশের অনুমতি দেয়। এই পরিসরে সমস্ত আইপি ঠিকানা রয়েছে যা IAP TCP ফরওয়ার্ডিংয়ের জন্য ব্যবহার করে।
ক্লাউড শেলের ভিতরে, 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-এ সাবস্ক্রাইব করা হলে নিচে দেখানো হিসাবে Build a Database বাটনে ক্লিক করুন।
- নতুন ক্লাস্টার তৈরি করুন → ডেডিকেটেড
- ক্লাউড প্রদানকারী এবং অঞ্চল → Google ক্লাউড
- মাল্টি-ক্লাউড, মাল্টি-রিজিয়ন এবং ওয়ার্কলোড আইসোলেশন → নির্বাচিত (নীল চেক)
- নির্বাচনযোগ্য নোড → us-west1 (1 নোড), us-west2 (2 নোড)
- ক্লাস্টার স্তর → M10, অন্যান্য সমস্ত সেটিংস ডিফল্ট হিসাবে ছেড়ে দিন
- ক্লাস্টার নাম → psc-mongodb-uswest1-uswest2
- → ক্লাস্টার তৈরি করুন নির্বাচন করুন
- ডেটাবেস তৈরিতে 7-10 মিনিট সময় লাগে
ক্লাস্টার একবার স্থাপন করা হয় দেখুন
7. us-west1-এর জন্য ব্যক্তিগত এন্ডপয়েন্ট তৈরি
- আপনার Atlas অ্যাকাউন্টে লগ-ইন করুন এবং আপনার প্রকল্পে নেভিগেট করুন।
যেকোনো ডাটাবেসে পড়ার/লিখতে অ্যাক্সেসের অনুমতি দিতে একটি নতুন ব্যবহারকারী তৈরি করুন
নিরাপত্তা → ডাটাবেস অ্যাক্সেস নির্বাচন করুন নতুন ডাটাবেস ব্যবহারকারী যোগ করুন। নিম্নলিখিত একটি উদাহরণ, ব্যবহারকারীর নাম এবং পাসওয়ার্ড কোডল্যাব হিসাবে কনফিগার করা হয়েছে৷ যেকোনো ডাটাবেসে বিল্ট-ইন রোল রিড এবং রাইট নির্বাচন করা নিশ্চিত করুন।
- নিরাপত্তা → নেটওয়ার্ক অ্যাক্সেসের অধীনে, আইপি অ্যাক্সেস তালিকায় প্রবেশের প্রয়োজন নেই
MongoDB Atlas-এ ব্যক্তিগত এন্ডপয়েন্ট প্রস্তুত করুন
- নির্বাচন করুন, নেটওয়ার্ক অ্যাক্সেস → প্রাইভেট এন্ডপয়েন্ট → ডেডিকেটেড ক্লাস্টার → প্রাইভেট এন্ডপয়েন্ট যোগ করুন
ক্লাউড প্রদানকারী
- Google ক্লাউড নির্বাচন করুন, তারপর পরবর্তী
পরিষেবা সংযুক্তি
- অঞ্চল নির্বাচন করুন, us-west1, তারপর পরবর্তী
শেষবিন্দু
- একটি ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট তৈরি করতে নিম্নলিখিত প্রদান করুন:
- Google ক্লাউড প্রকল্প আইডি: বিশদ বিবরণের জন্য 'নির্দেশ দেখান' নির্বাচন করুন
- ভিপিসি নাম: ভোক্তা-ভিপিসি
- সাবনেটের নাম: psc-endpoint-us-west1
- ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট প্রিফিক্স: psc-endpoint-us-west1
শেষ পয়েন্ট সেট আপ করুন
নিম্নলিখিত বিভাগে একটি শেল স্ক্রিপ্ট তৈরি করা হয়েছে যা স্থানীয়ভাবে setup_psc.sh নামে সংরক্ষণ করা উচিত। একবার সংরক্ষিত হলে, পিএসসি গ্লোবাল অ্যাক্সেসের অনুমতি দিতে শেল স্ক্রিপ্টটি সম্পাদনা করুন। আপনি Google ক্লাউড প্রকল্প ক্লাউড শেল-এর মধ্যে এই ক্রিয়াটি সম্পাদন করতে পারেন৷
- উদাহরণ শেল স্ক্রিপ্ট, আপনার আউটপুট বিভিন্ন মান থাকবে
- MongoBD কনসোল থেকে শেল স্ক্রিপ্টটি কপি করুন এবং Google Cloud ক্লাউড শেল টার্মিনালে বিষয়বস্তু সংরক্ষণ করুন, স্ক্রিপ্টটিকে 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 ফাইলটিতে আইপি ঠিকানাগুলির একটি তালিকা এবং স্থাপনার পরবর্তী ধাপের জন্য প্রয়োজনীয় ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট নাম রয়েছে৷
ক্লাউড শেলের ভিতরে নিম্নলিখিতগুলি সম্পাদন করে:
sh setup_psc.sh
একবার স্ক্রিপ্ট সম্পূর্ণ হলে, স্থানীয়ভাবে atlasEndpoints-psc-endpoint-us-west1.json ডাউনলোড করতে ক্লাউড শেল সম্পাদক ব্যবহার করুন।
JSON ফাইল আপলোড করুন
পূর্বে সংরক্ষিত json ফাইলটি আপলোড করুন atlasEndpoints-psc-endpoint-us-west1.json
তৈরি করুন নির্বাচন করুন
প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট যাচাই করুন
MongoDB UI-তে, নিরাপত্তা → নেটওয়ার্ক অ্যাক্সেস → প্রাইভেট এন্ডপয়েন্ট অনুসরণ করে আপনার প্রকল্পে নেভিগেট করুন। ট্যাব নির্বাচন করা, ডেডিকেটেড ক্লাস্টার, উপলভ্য এন্ডপয়েন্ট ট্রানজিশন 10 মিনিট সময় নেবে।
উপলব্ধ অবস্থা
Google ক্লাউড কনসোলে, নেটওয়ার্ক পরিষেবাগুলিতে নেভিগেট করুন → Private Services Connect, ট্যাবটি নির্বাচন করুন কানেক্টেড এন্ডপয়েন্ট প্রদর্শন করে কনজিউমার এন্ডপয়েন্ট ট্রানজিশনিং পেন্ডিং → গৃহীত, নীচের উদাহরণ:
8. us-west2-এর জন্য ব্যক্তিগত এন্ডপয়েন্ট তৈরি
- আপনার Atlas অ্যাকাউন্টে লগ-ইন করুন এবং আপনার প্রকল্পে নেভিগেট করুন।
MongoDB Atlas-এ ব্যক্তিগত এন্ডপয়েন্ট প্রস্তুত করুন
- নির্বাচন করুন, নেটওয়ার্ক অ্যাক্সেস → প্রাইভেট এন্ডপয়েন্ট → ডেডিকেটেড ক্লাস্টার → প্রাইভেট এন্ডপয়েন্ট যোগ করুন
ক্লাউড প্রদানকারী
- Google ক্লাউড নির্বাচন করুন, তারপর পরবর্তী
পরিষেবা সংযুক্তি
- অঞ্চল নির্বাচন করুন, us-west2, তারপর পরবর্তী
শেষবিন্দু
- একটি ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট তৈরি করতে নিম্নলিখিত প্রদান করুন:
- Google ক্লাউড প্রকল্প আইডি: বিশদ বিবরণের জন্য 'নির্দেশ দেখান' নির্বাচন করুন
- ভিপিসি নাম: ভোক্তা-ভিপিসি
- সাবনেটের নাম: psc-endpoint-us-west2
- ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট প্রিফিক্স: psc-endpoint-us-west2
শেষ পয়েন্ট সেট আপ করুন
নিম্নলিখিত বিভাগে একটি শেল স্ক্রিপ্ট তৈরি করা হয়েছে যা স্থানীয়ভাবে setup_psc.sh নামে সংরক্ষণ করা উচিত। একবার সংরক্ষিত হলে, পিএসসি গ্লোবাল অ্যাক্সেসের অনুমতি দিতে শেল স্ক্রিপ্টটি সম্পাদনা করুন। আপনি Google ক্লাউড প্রকল্প ক্লাউড শেল-এর মধ্যে এই ক্রিয়াটি সম্পাদন করতে পারেন৷
- উদাহরণ শেল স্ক্রিপ্ট, আপনার আউটপুট বিভিন্ন মান থাকবে
- MongoBD কনসোল থেকে শেল স্ক্রিপ্টটি কপি করুন এবং Google Cloud ক্লাউড শেল টার্মিনালে বিষয়বস্তু সংরক্ষণ করুন, স্ক্রিপ্টটিকে 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 ফাইলটিতে আইপি ঠিকানাগুলির একটি তালিকা এবং স্থাপনার পরবর্তী ধাপের জন্য প্রয়োজনীয় ব্যক্তিগত পরিষেবা সংযোগ এন্ডপয়েন্ট নাম রয়েছে৷
ক্লাউড শেলের ভিতরে নিম্নলিখিতগুলি সম্পাদন করে:
sh setup_psc.sh
একবার স্ক্রিপ্ট সম্পূর্ণ হলে, স্থানীয়ভাবে atlasEndpoints-psc-endpoint-us-west2.json ডাউনলোড করতে ক্লাউড শেল সম্পাদক ব্যবহার করুন।
JSON ফাইলটি আপলোড করুন
পূর্বে সংরক্ষিত json ফাইলটি আপলোড করুন atlasEndpoints-psc-endpoint-us-west2.json
তৈরি করুন নির্বাচন করুন
প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট যাচাই করুন
MongoDB UI-তে, নিরাপত্তা → নেটওয়ার্ক অ্যাক্সেস → প্রাইভেট এন্ডপয়েন্ট অনুসরণ করে আপনার প্রকল্পে নেভিগেট করুন। ট্যাব নির্বাচন করা, ডেডিকেটেড ক্লাস্টার, 10 মিনিটের পরে উপলব্ধ এন্ডপয়েন্ট ট্রানজিশন।
উপলব্ধ অবস্থা:
Google ক্লাউড কনসোলে, নেটওয়ার্ক পরিষেবাগুলিতে নেভিগেট করুন → Private Services Connect, ট্যাবটি নির্বাচন করুন কানেক্টেড এন্ডপয়েন্ট প্রদর্শন করে কনজিউমার এন্ডপয়েন্ট ট্রানজিশন পেন্ডিং → Accepted, নিচের উদাহরণ। ভোক্তা এন্ডপয়েন্টে মোট 100টি এন্ডপয়েন্ট স্থাপন করা হয়েছে এবং পরবর্তী ধাপে যাওয়ার আগে গৃহীত হওয়ার জন্য স্থানান্তর করতে হবে।
9. প্রাইভেট এন্ডপয়েন্ট থেকে MongoDB এটলাসের সাথে সংযোগ করুন
একবার ব্যক্তিগত পরিষেবা সংযোগগুলি গ্রহণ করা হলে MongoDB ক্লাস্টার আপডেট করতে অতিরিক্ত সময় (10-15 মিনিট) প্রয়োজন৷ MongoDB UI-তে, ধূসর রূপরেখা ক্লাস্টার আপডেটের প্রতিনিধিত্ব করে তাই প্রাইভেট এন্ডপয়েন্টের সাথে সংযোগ করা উপলব্ধ নয়।
স্থাপনা সনাক্ত করুন এবং সংযোগ নির্বাচন করুন (মনে রাখবেন ধূসর বাক্সটি আর উপস্থিত নেই)
সংযোগের ধরন চয়ন করুন → ব্যক্তিগত এন্ডপয়েন্ট, নির্বাচন করুন একটি সংযোগ পদ্ধতি নির্বাচন করুন
MongoDB Shell এর সাথে Connect নির্বাচন করুন
নির্বাচন করুন, আমার কাছে MongoDB শেল ইনস্টল নেই, উবুন্টু 20.4 এবং ধাপ 1 এবং ধাপ 3 থেকে একটি নোটপ্যাডে বিষয়বস্তু অনুলিপি করা নিশ্চিত করুন।
10. মঙ্গোশ অ্যাপ্লিকেশন ইনস্টল করুন
ইনস্টলেশনের আগে, আপনাকে পদক্ষেপ 1 এবং 3 এ প্রাপ্ত পূর্বে অনুলিপি করা মানগুলির উপর ভিত্তি করে একটি কমান্ড স্ট্রিং তৈরি করতে হবে। তারপরে, আপনি ক্লাউড শেল ব্যবহার করে vm1-এ ssh করবেন এবং তারপরে মঙ্গোশ অ্যাপ্লিকেশন ইনস্টলেশন এবং প্রাথমিক (us-west1) ডাটাবেসে বৈধতা পাবেন। ভোক্তা-ভিপিসি-তে vm1 তৈরি করার সময় উবুন্টু 20.4 ইমেজ ইনস্টল করা হয়েছিল।
একটি সংযোগ পদ্ধতি চয়ন করুন: ধাপ 1, ডাউনলোড URL কপি করুন
উদাহরণ কমান্ড স্ট্রিং, আপনার কাস্টম মান দিয়ে প্রতিস্থাপন করুন:
https://downloads.mongodb.com/compass/mongodb-mongosh_1.7.1_amd64.deb
একটি সংযোগ পদ্ধতি নির্বাচন করুন, ধাপ 3।
উদাহরণ কমান্ড স্ট্রিং, আপনার কাস্টম মান দিয়ে প্রতিস্থাপন করুন:
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
vm1 লগ ইন করুন
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
ক্লাউড শেল-এ IAP ব্যবহার করে vm1 লগ ইন করুন, যদি সময় শেষ হয় তাহলে আবার চেষ্টা করুন।
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
ওএস থেকে ইনস্টলেশন সম্পাদন করুন
ক্লাউড শেল ওএস লগইন থেকে ইনস্টলেশনটি সম্পাদন করুন, অতিরিক্ত বিবরণ উপলব্ধ , আপনার কাস্টম স্ট্রিং দিয়ে নীচে সিনট্যাক্স আপডেট করুন
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 স্থাপনার সাথে সংযোগ করুন
ক্লাউড শেল ওএস লগইন এর ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন। কনফিগার করা ব্যবহারকারীর নাম এবং পাসওয়ার্ড হল কোডল্যাব।
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
নীচের উদাহরণ:
ডাটাবেসের বিরুদ্ধে কমান্ড চালান
ক্লাউড শেল ওএস লগইন এর ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন।
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 ক্লাস্টার অঞ্চল us-west1-এ ব্যর্থ হন এবং ডাটাবেসটি এখনও us-west2-এ MongoDB ক্লাস্টার থেকে পৌঁছানো যায় কিনা তা যাচাই করুন।
আপনি Atlas UI থেকে প্রাথমিক এবং আঞ্চলিক উভয় ব্যর্থতা পরীক্ষা করতে পারেন।
- Atlas UI এ লগ ইন করুন।
- আপনার ক্লাস্টার নামের পাশে [...] ক্লিক করুন, psc-mongodb-uswest1-uswest2 → Test Outage.
- আঞ্চলিক বিভ্রাট নির্বাচন করুন → অঞ্চল নির্বাচন করুন।
- প্রাথমিক অঞ্চল নির্বাচন করুন, us-west1→ আঞ্চলিক আউটেজ অনুকরণ করুন।
একবার নির্বাচিত হলে ক্লাস্টারটি 3-4 মিনিটের পরে বিভ্রাট সিমুলেশন প্রদর্শন করবে
জানালা বন্ধ করুন
যাচাই করুন যে us-west1 নিচে আছে এবং us-west2 এখন প্রাথমিক হিসাবে নেওয়া হয়েছে
ডাটাবেসে নেভিগেট করুন → psc-mongodb-uswest1-uswest2 → ওভারভিউ
নতুন প্রাথমিক, us-west2 দ্বারা ক্লাস্টারে সংযোগ যাচাই করুন
us-west1-এ অবস্থিত vm1-এ লগ ইন করুন এবং us-west2-এ mongodb-এ অ্যাক্সেস করুন ব্যক্তিগত পরিষেবার বৈধতা দিয়ে বিশ্বব্যাপী অ্যাক্সেস সংযোগ করুন।
যদি আপনার ক্লাউড শেল সেশনটি বন্ধ হয়ে যায় তবে নিম্নলিখিতগুলি সম্পাদন করুন:
ক্লাউড শেলের ভিতরে, নিম্নলিখিতগুলি সম্পাদন করুন:
gcloud config list project
gcloud config set project [YOUR-PROJECT-NAME]
projectname=YOUR-PROJECT-NAME
echo $projectname
ক্লাউড শেল-এ IAP ব্যবহার করে vm1 লগ ইন করুন, যদি সময় শেষ হয় তাহলে আবার চেষ্টা করুন।
gcloud compute ssh vm1 --project=$projectname --zone=us-west1-a --tunnel-through-iap
MongoDB স্থাপনার সাথে সংযোগ করুন
ক্লাউড শেল ওএস লগইন এর ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন।
mongosh
mongosh "mongodb+srv://psc-mongodb-uswest1-uswest2-pl-0.2wqno.mongodb.net/psc-mongodb-uswest1-uswest2" --apiVersion 1 --username codelab
নীচের উদাহরণ:
ডাটাবেসের বিরুদ্ধে কমান্ড চালান
ক্লাউড শেল ওএস লগইন এর ভিতরে নিম্নলিখিতগুলি সম্পাদন করুন।
show dbs
use Company
db.Employee.insertOne({"Name":"cosmo","dept":"devops"})
db.Employee.findOne()
exit
সাফল্য: আপনি যাচাই করেছেন যে PSC গ্লোবাল অ্যাক্সেস উচ্চ প্রাপ্যতা বা আঞ্চলিক বিভ্রাটের কারণে সমস্ত অঞ্চল জুড়ে বিরামহীন ভোক্তা এন্ডপয়েন্ট সংযোগের অনুমতি দেয়। কোডল্যাবে, মঙ্গোডিবি আঞ্চলিক ব্যর্থতা ইউএস-ওয়েস্ট1 অবস্থিত প্রাথমিক নোডে ঘটেছে তাই সেকেন্ডারি অঞ্চল us-ওয়েস্ট2 একটি প্রাইমারি দখল করেছে। যদিও ক্লাস্টারের ফলে একটি আঞ্চলিক বিভ্রাট হয়েছে, us-west1-এ অবস্থিত ভোক্তা vm1 সফলভাবে us-west2-এ নতুন প্রাথমিক ক্লাস্টারে পৌঁছেছে।
12. পরিষ্কার করা
ক্লাউড কনসোল থেকে গ্রাহকের শেষ পয়েন্টগুলি মুছুন
নেটওয়ার্ক পরিষেবাগুলিতে নেভিগেট করুন → ব্যক্তিগত পরিষেবা সংযোগ → সংযুক্ত শেষ পয়েন্ট৷
নন-ল্যাব কনজিউমার এন্ডপয়েন্টের সম্ভাব্য মুছে ফেলার জন্য ফিল্টার psc-এন্ডপয়েন্ট ব্যবহার করুন। সমস্ত শেষ পয়েন্ট নির্বাচন করুন → মুছুন
ভোক্তা শেষ পয়েন্টের সাথে যুক্ত স্ট্যাটিক অভ্যন্তরীণ IP ঠিকানাগুলি মুছুন
ভিপিসি নেটওয়ার্কে নেভিগেট করুন → ভোক্তা-ভিপিসি→ স্ট্যাটিক ইন্টারনাল আইপি ঠিকানা
নন-ল্যাব কনজিউমার এন্ডপয়েন্টের সম্ভাব্য মুছে ফেলার জন্য ফিল্টার psc-এন্ডপয়েন্ট ব্যবহার করুন এবং প্রতি পৃষ্ঠায় সারি বাড়িয়ে 100 করুন। সমস্ত শেষ পয়েন্ট নির্বাচন করুন → রিলিজ
ক্লাউড শেল থেকে, কোডল্যাব উপাদানগুলি মুছুন।
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 থেকে cluster psc-mongodb-uswest1-uswest2 → শেষ সিমুলেশন সনাক্ত করুন
শেষ বিভ্রাট সিমুলেশন নির্বাচন করুন —> প্রস্থান করুন
ক্লাস্টারটি এখন us-west1 কে প্রাথমিক হিসাবে ফিরিয়ে আনছে, এই প্রক্রিয়াটি 3-4 মিনিট সময় নেবে৷ একবার সম্পূর্ণ হয়ে গেলে, ক্লাস্টারটি বন্ধ করুন, ধূসর রূপরেখাটি নোট করুন যা একটি স্থিতি পরিবর্তন নির্দেশ করে।
ক্লাস্টারের নাম সন্নিবেশ করান → শেষ করুন
us-west1 এবং us-west2-এর সাথে যুক্ত প্রাইভেট এন্ডপয়েন্ট মুছুন
Atlas UI থেকে নিরাপত্তা → নেটওয়ার্ক অ্যাক্সেস → প্রাইভেট এন্ডপয়েন্ট → টার্মিনেট নির্বাচন করুন-এ নেভিগেট করুন
13. অভিনন্দন
অভিনন্দন, আপনি সফলভাবে একটি প্রাইভেট সার্ভিস কানেক্ট এন্ডপয়েন্ট কনফিগার করেছেন এবং বিভিন্ন অঞ্চলে MongoDB-তে গ্লোবাল অ্যাক্সেস সহ বৈধ করেছেন। আপনি সফলভাবে একটি ভোক্তা VPC, বহু-অঞ্চল MongoDB এবং ভোক্তা শেষ পয়েন্ট তৈরি করেছেন। us-west1-এ অবস্থিত একটি VM সফলভাবে আঞ্চলিক ব্যর্থতার উপর us-west1 এবং us-west2 উভয় ক্ষেত্রে MongoDB-এর সাথে সংযুক্ত হয়েছে।
Cosmopup মনে করে কোডল্যাবগুলি দুর্দান্ত!!
এরপর কি?
এই কোডল্যাবগুলির কিছু পরীক্ষা করে দেখুন...
- GKE এর সাথে পরিষেবাগুলি প্রকাশ এবং ব্যবহার করতে ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করে৷
- পরিষেবাগুলি প্রকাশ এবং ব্যবহার করতে ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করে৷
- প্রাইভেট সার্ভিস কানেক্ট এবং একটি অভ্যন্তরীণ TCP প্রক্সি লোড ব্যালেন্সার ব্যবহার করে হাইব্রিড নেটওয়ার্কিংয়ের মাধ্যমে অন-প্রিম পরিষেবাগুলিতে সংযোগ করুন
- স্বয়ংক্রিয় DNS কনফিগারেশনের সাথে ব্যক্তিগত পরিষেবা সংযোগ ব্যবহার করে